Check-in [509ae17ed0]
Not logged in

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

Overview
Comment:update curl to version 7.85.0
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 509ae17ed09e9e5c5f466fa472ae570000727c10
User & Date: chw 2022-08-31 16:29:09.699
Context
2022-09-01
19:16
add selected tcl upstream changes check-in: 759d911f56 user: chw tags: trunk
2022-08-31
16:29
update curl to version 7.85.0 check-in: 509ae17ed0 user: chw tags: trunk
07:37
fix compile error in tk on macosx check-in: b037e676bb user: chw tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to jni/curl/CHANGES.
1
2
3
4
5
6
7










































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































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

                                  Changelog











































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Version 7.84.0 (27 Jun 2022)

Daniel Stenberg (27 Jun 2022)
- RELEASE-NOTES: synced

  Version 7.84.0 release







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







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
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
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog

Version 7.85.0 (31 Aug 2022)

Daniel Stenberg (31 Aug 2022)
- RELEASE-NOTES: synced

  curl 7.85.0 release

- THANKS: add contributors from the 7.85.0 release

- getparam: correctly clean args

  Follow-up to bf7e887b2442783ab52

  The previous fix for #9128 was incomplete and caused #9397.

  Fixes #9397
  Closes #9399

- zuul: remove the clang-tidy job

  Turns out we don't see the warnings, but the warnings right now are
  plain ridiculous and unhelpful so we can just as well just kill this
  job.

  Closes #9390

- cmake: set feature PSL if present

  ... make test 1014 pass when libpsl is used.

  Closes #9391

- lib530: simplify realloc failure exit path

  To make code analyzers happier

  Closes #9392

- [Orgad Shaneh brought this change]

  tests: add tests for netrc login/password combinations

  Covers the following PRs:

  - #9066
  - #9247
  - #9248

  Closes #9256

- [Orgad Shaneh brought this change]

  url: really use the user provided in the url when netrc entry exists

  If the user is specified as part of the URL, and the same user exists
  in .netrc, Authorization header was not sent at all.

  The user and password fields were assigned in conn->user and password
  but the user was not assigned to data->state.aptr, which is the field
  that is used in output_auth_headers and friends.

  Fix by assigning the user also to aptr.

  Amends commit d1237ac906ae7e3cd7a22c3a2d3a135a97edfbf5.

  Fixes #9243

- [Orgad Shaneh brought this change]

  netrc: Use the password from lines without login

  If netrc entry has password with empty login, use it for any username.

  Example:
  .netrc:
  machine example.com password 123456

  curl -vn http://user@example.com/

  Fix it by initializing state_our_login to TRUE, and reset it only when
  finding an entry with the same host and different login.

  Closes #9248

- [Jay Satiro brought this change]

  url: treat missing usernames in netrc as empty

  - If, after parsing netrc, there is a password with no username then
    set a blank username.

  This used to be the case prior to 7d600ad (precedes 7.82). Note
  parseurlandfillconn already does the same thing for URLs.

  Reported-by: Raivis <standsed@users.noreply.github.com>
  Testing-by: Domen Kožar

  Fixes https://github.com/curl/curl/issues/8653
  Closes #9334
  Closes #9066

- test8: verify that "ctrl-byte cookies" are ignored

- cookie: reject cookies with "control bytes"

  Rejects 0x01 - 0x1f (except 0x09) plus 0x7f

  Reported-by: Axel Chong

  Bug: https://curl.se/docs/CVE-2022-35252.html

  CVE-2022-35252

  Closes #9381

- libssh: ignore deprecation warnings

  libssh 0.10.0 marks all SCP functions as "deprecated" which causes
  compiler warnings and errors in our CI jobs and elsewhere. Ignore
  deprecation warnings if 0.10.0 or later is found in the build.

  If they actually remove the functions at a later point, then someone can
  deal with that pain and functionality break then.

  Fixes #9382
  Closes #9383

- Revert "schannel: when importing PFX, disable key persistence"

  This reverts commit 70d010d285315e5f1cad6bdb4953e167b069b692.

  Due to further reports in #9300 that indicate this commit might
  introduce problems.

- multi: use larger dns hash table for multi interface

  Have curl_multi_init() use a much larger DNS hash table than used for
  the easy interface to scale and perform better when used with _many_
  host names.

  curl_share_init() sets an in-between size.

  Inspired-by: Ivan Tsybulin
  See #9340
  Closes #9376

Marc Hoersken (28 Aug 2022)
- CI/runtests.pl: add param for dedicated curl to talk to APIs

  This should make it possible to also report test failures
  if our freshly build curl binary is not fully functional.

  Reviewed-by: Daniel Stenberg
  Closes #9360

Daniel Stenberg (27 Aug 2022)
- [Jacob Tolar brought this change]

  openssl: add cert path in error message

  Closes #9349

- [Jacob Tolar brought this change]

  cert.d: clarify that escape character works for file paths

  Closes #9349

- gha: move over ngtcp2-gnutls CI job from zuul

  Closes #9331

Marc Hoersken (26 Aug 2022)
- cmake: add detection of threadsafe feature

  Avoids failing test 1014 by replicating configure checks
  for HAVE_ATOMIC and _WIN32_WINNT with custom CMake tests.

  Reviewed-by: Marcel Raad

  Follow up to #8680
  Closes #9312

Daniel Stenberg (26 Aug 2022)
- RELEASE-NOTES: synced

Marc Hoersken (26 Aug 2022)
- CI/azure: align torture shallowness with GHA

  There 25 is used with FTP tests skipped, and 20 for FTP tests.
  This should make torture tests stay within the 60min timeout.

  Reviewed-by: Daniel Stenberg
  Closes #9371

- multi_wait: fix and improve Curl_poll error handling on Windows

  First check for errors and return CURLM_UNRECOVERABLE_POLL
  before moving forward and waiting on socket readiness events.

  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad

  Reported-by: Daniel Stenberg
  Ref: #9361

  Follow up to #8961
  Closes #9372

- multi_wait: fix skipping to populate revents for extra_fds

  On Windows revents was not populated for extra_fds if
  multi_wait had to wait due to the Curl_poll pre-check
  not signalling any readiness. This commit fixes that.

  Reviewed-by: Marcel Raad
  Reviewed-by: Jay Satiro

  Closes #9361

- CI/appveyor: disable TLS in msys2-native autotools builds

  Schannel cannot be used from msys2-native Linux-emulated builds.

  Reviewed-by: Marcel Raad
  Reviewed-by: Daniel Stenberg

  Follow up to #9367
  Closes #9370

Jay Satiro (25 Aug 2022)
- tests: fix http2 tests to use CRLF headers

  Prior to this change some tests that rely on nghttpx proxy did not use
  CRLF headers everywhere. A recent change in nghttp2, which updated its
  version of llhttp (HTTP parser), requires curl's HTTP/1.1 test server to
  use CRLF headers.

  Ref: https://github.com/nghttp2/nghttp2/commit/9d389e8

  Fixes https://github.com/curl/curl/issues/9364
  Closes https://github.com/curl/curl/pull/9365

Daniel Stenberg (25 Aug 2022)
- [rcombs brought this change]

  multi: use a pipe instead of a socketpair on apple platforms

  Sockets may be shut down by the kernel when the app is moved to the
  background, but pipes are not.

  Removed from KNOWN_BUGS

  Fixes #6132
  Closes #9368

- [Somnath Kundu brought this change]

  libssh2: provide symlink name in SFTP dir listing

  When reading the symbolic link name for a file, we need to add the file
  name to base path name.

  Closes #9369

- configure: if asked to use TLS, fail if no TLS lib was detected

  Previously the configure script would just warn about this fact and
  continue with TLS disabled build which is not always helpful. TLS should
  be explicitly disabled if that is what the user wants.

  Closes #9367

- [Dustin Howett brought this change]

  schannel: when importing PFX, disable key persistence

  By default, the PFXImportCertStore API persists the key in the user's
  key store (as though the certificate was being imported for permanent,
  ongoing use.)

  The documentation specifies that keys that are not to be persisted
  should be imported with the flag `PKCS12_NO_PERSIST_KEY`.
  NOTE: this flag is only supported on versions of Windows newer than XP
  and Server 2003.

  Fixes #9300
  Closes #9363

- unit1303: four tests should have TRUE for 'connecting'

  To match the comments.

  Reported-by: Wu Zheng

  See #9355
  Closes #9356

- CURLOPT_BUFFERSIZE.3: add upload buffersize to see also

  Closes #9354

- [Fabian Fischer brought this change]

  HTTP3.md: add missing autoreconf command for building with wolfssl

  Closes #9353

- RELEASE-NOTES: synced

- multi: have curl_multi_remove_handle close CONNECT_ONLY transfer

  Ẃhen it has been used in the multi interface, it is otherwise left in
  the connection cache, can't be reused and nothing will close them since
  the easy handle loses the association with the multi handle and thus the
  connection cache - until the multi handle is closed or it gets pruned
  because the cache is full.

  Reported-by: Dominik Thalhammer
  Fixes #9335
  Closes #9342

- docs/cmdline-opts: remove \& escapes from all .d files

  gen.pl escapes them itself now

- docs/cmdline-opts/gen.pl: encode leading single and double quotes

  As "(aq" and "(dq" to prevent them from implying a meaning in the nroff
  output. This removes the need for using \& escapes in the .d files'
  description parts.

  Closes #9352

Marc Hoersken (23 Aug 2022)
- tests/server/sockfilt.c: avoid race condition without a mutex

  Avoid loosing any triggered handles by first aborting and joining
  the waiting threads before evaluating the individual signal state.

  This removes the race condition and therefore need for a mutex.

  Closes #9023

Daniel Stenberg (22 Aug 2022)
- [Emil Engler brought this change]

  url: output the maximum when rejecting a url

  This commit changes the failf message to output the maximum length, when
  curl refuses to process a URL because it is too long.

  See: #9317
  Closes: #9327

- [Chris Paulson-Ellis brought this change]

  configure: fix broken m4 syntax in TLS options

  Commit b589696f added lines to some shell within AC_ARG_WITH macros, but
  inadvertently failed to move the final closing ).

  Quote the script section using braces.

  So, if these problems have been around for a while, how did I find them?
  Only because I did a configure including these options:

      $ ./configure --with-openssl --without-rustls
        SSL:              enabled (OpenSSL)

  Closes #9344

- tests/data/CMakeLists: remove making the 'show' makefile target

  It is not used by runtests since 3c0f462

  Closes #9333

- tests/data/Makefile: remove 'filecheck' target

  No practical use anymore since 3c0f4622cdfd6

  Closes #9332

- libssh2: make atime/mtime date overflow return error

  Closes #9328

- libssh: make atime/mtime date overflow return error

  Closes #9328

- examples/curlx.c: remove

  This example is a bit convoluted to use as an example, combined with the
  special license for it makes it unsuitable.

  Closes #9330

- [Tobias Nygren brought this change]

  curl.h: include <sys/select.h> on SunOS

  It is needed for fd_set to be visible to downstream consumers that use
  <curl/multi.h>. Header is known to exist at least as far back as Solaris
  2.6.

  Closes #9329

- DEPRECATE.md: push the NSS deprecation date forward one year to 2023

  URL: https://curl.se/mail/lib-2022-08/0016.html

- libssh2: setting atime or mtime >32bit on 4-bytes-long systems

  Since the libssh2 API uses 'long' to store the timestamp, it cannot
  transfer >32bit times on Windows and 32bit architecture builds.

  Avoid nasty surprises by instead not setting such time.

  Spotted by Coverity

  Closes #9325

- libssh: setting atime or mtime > 32bit is now just skipped

  The libssh API used caps the time to an unsigned 32bit variable. Avoid
  nasty surprises by instead not setting such time.

  Spotted by Coverity.

  Closes #9324

Jay Satiro (16 Aug 2022)
- KNOWN_BUGS: Windows Unicode builds use homedir in current locale

  Bug: https://github.com/curl/curl/pull/7252
  Reported-by: dEajL3kA@users.noreply.github.com

  Ref: https://github.com/curl/curl/pull/7281

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

Daniel Stenberg (16 Aug 2022)
- test399: switch it to use a config file instead

  ... as using a 65535 bytes host name in a URL does not fit on the
  command line on some systems - like Windows.

  Reported-by: Marcel Raad
  Fixes #9321
  Closes #9322

- RELEASE-NOTES: synced

- asyn-ares: make a single alloc out of hostname + async data

  This saves one alloc per name resolve and simplifies the exit path.

  Closes #9310

- Curl_close: call Curl_resolver_cancel to avoid memory-leak

  There might be a pending (c-ares) resolve that isn't free'd up yet.

  Closes #9310

- asyn-thread: fix socket leak on OOM

  Closes #9310

- GHA: mv CI torture test from Zuul

  Closes #9310

- ngtcp2-wolfssl.yml: add GHA to build ngtcp2 + wolfSSL

  Closes #9318

- test399: verify check of too long host name

- url: reject URLs with hostnames longer than 65535 bytes

  It *probably* causes other problems too since DNS can't resolve such
  long names, but the SNI field in TLS is limited to 16 bits length.

  Closes #9317

- curl_multi_perform.3: minor language fix

  Closes #9316

- ngtcp2: fix picky compiler warnings with wolfSSL for QUIC

  Follow-up to 8a13be227eede2

  Closes #9315

- ngtcp2: remove leftover variable

  Mistake leftover from my edit before push.

  Follow-up from 8a13be227eede2601c2b3b
  Reported-by: Viktor Szakats
  Bug: https://github.com/curl/curl/pull/9290#issuecomment-1214569167

Viktor Szakats (15 Aug 2022)
- Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip]

  Before this patch `-nghttp3`/`-ngtcp2` had an effect only when `-ssl`
  was also enabled. `-ssl` meaning OpenSSL (and its forks). After
  8a13be227eede2601c2b3b1c63e08b3dc9b35dd5 nghttp3/ngtcp2 can also be
  used together with wolfSSL. This patch adds the ability to enable
  `-nghttp3`/`-ngtcp2` independently from `-ssl` (OpenSSL), allowing to
  use it with wolfSSL or other, future TLS backends.

  Before this patch, it was fine to enable `-nghttp3`/`-ngtcp2`
  unconditionally. After this patch, this is no longer the case, and now
  it's the user's responsibility to enable `-nghttp3`/`-ngtcp2` only
  together with a compatible TLS backend.

  When using a TLS backend other than OpenSSL, the TLS-specific ngtcp2
  library must be configured manually, e.g.:
    `export CURL_LDFLAG_EXTRAS=-lngtcp2_crypto_wolfssl`

  (or via `NGTCP2_LIBS`)

  Closes #9314

Daniel Stenberg (15 Aug 2022)
- [Stefan Eissing brought this change]

  quic: add support via wolfSSL

  - based on ngtcp2 PR https://github.com/ngtcp2/ngtcp2/pull/505
  - configure adapted to build against ngtcp2 wolfssl crypto lib
  - quic code added for creation of WOLFSSL* instances

  Closes #9290

Marcel Raad (14 Aug 2022)
- [David Carlier brought this change]

  memdebug: add annotation attributes

  memory debug tracking annotates whether the returned pointer does not
  `alias`, hints where the size required is, for Windows to be better
  debugged via Visual Studio.

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

Daniel Stenberg (14 Aug 2022)
- GHA: move libressl CI from zuul to GitHub

  Closes #9309

- KNOWN_BUGS: FTPS directory listing hangs on Windows with Schannel

  Closes #9161

- KNOWN_BUGS: CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel

  Closes #8741

- KNOWN_BUGS: libssh blocking and infinite loop problem

  Closes #8632

- RELEASE-NOTES: synced

- msh3: fix the QUIC disconnect function

  And free request related memory better in 'done'. Fixes a memory-leak.

  Reported-by: Gisle Vanem
  Fixes #8915
  Closes #9304

- connect: close the happy eyeballs loser connection when using QUIC

  Reviewed-by: Nick Banks

  Closes #9303

- [Emil Engler brought this change]

  refactor: split resolve_server() into functions

  This commit splits the branch-heavy resolve_server() function into
  various sub-functions, in order to reduce the amount of nested
  if/else-statements.

  Beside this, it also removes many else-sequences, by returning in the
  previous if-statement.

  Closes #9283

- schannel: re-indent to use curl style better

  Only white space changes

  Closes #9301

- [Emanuele Torre brought this change]

  docs/cmdline-opts: fix example and categories for --form-escape

  The example was missing a "--form" argument
  I also replaced "--form" with "-F" to shorten the line a bit since it
  was already very long.

  And I also moved --form-escape from the "post" category to the "upload"
  category (this is what I originally wanted to fix, before also noticing
  the mistake in the example).

  Closes #9298

- [Nick Banks brought this change]

  HTTP3.md: update to msh3 v0.4.0

  Closes #9297

- hostip: resolve *.localhost to 127.0.0.1/::1

  Following the footsteps of other clients like Firefox/Chrome.  RFC 6761
  says clients SHOULD do this.

  Add test 389 to verify.

  Reported-by: TheKnarf on github
  Fixes #9192
  Closes #9296

Jay Satiro (11 Aug 2022)
- KNOWN_BUGS: long paths are not fully supported on Windows

  Bug: https://github.com/curl/curl/issues/8361
  Reported-by: Gisle Vanem

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

Daniel Stenberg (11 Aug 2022)
- config: remove the check for and use of SIZEOF_SHORT

  shorts are 2 bytes on all platforms curl runs and have ever run on.

  Closes #9291

- configure: introduce CURL_SIZEOF

  This is a rewrite of the previously used GPLv3+exception licensed
  file. With this change, there is no more reference to GPL so we can
  remove that from LICENSES/.

  Ref: #9220
  Closes #9291

- [Sean McArthur brought this change]

  hyper: customize test1274 to how hyper unfolds headers

  Closes #9217

- [Orgad Shaneh brought this change]

  curl-config: quote directories with potential space

  On Windows (at least with CMake), the default prefix is
  C:/Program Files (x86)/CURL.

  Closes #9253

- [Oliver Roberts brought this change]

  amigaos: fix threaded resolver on AmigaOS 4.x

  Replace ip4 resolution function on AmigaOS 4.x, as it requires runtime
  feature detection and extra code to make it thread safe.

  Closes #9265

- [Emil Engler brought this change]

  imap: use ISALNUM() for alphanumeric checks

  This commit replaces a self-made character check for alphanumeric
  characters within imap_is_bchar() with the ISALNUM() macro, as it is
  reduces the size of the code and makes the performance better, due to
  ASCII arithmetic.

  Closes #9289

- RELEASE-NOTES: synced

- [Cering on github brought this change]

  connect: add quic connection information

  Fixes #9286
  Closes #9287

- [Philip H brought this change]

  cirrus/freebsd-ci: bootstrap the pip installer

  Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>

  Closes #9213

- urldata: move smaller fields down in connectdata struct

  By (almost) sorting the struct fields in connectdata in a decending size
  order, having the single char ones last, we reduce the number of holes
  in the struct and thus the amount of storage needed.

  Closes #9280

- ldap: adapt to conn->port now being an 'int'

  Remove typecasts. Fix printf() formats.

  Follow-up from 764c6bd3bf.
  Pointed out by Coverity CID 1507858.

  Closes #9281

- KNOWN_BUGS: Negotiate authentication against Hadoop HDFS

  Closes #8264

- [Oliver Roberts brought this change]

  file: add handling of native AmigaOS paths

  On AmigaOS 4.x, handle native absolute paths, whilst blocking relative
  paths. Also allow unix style paths if feature enabled at link time.

  Inspiration-from: Michael Trebilcock

  Closes #9259

- KNOWN_BUGS: cmake build is not thread-safe

  The cmake build does not check for and verify presence of a working
  Atomic type, which then makes curl_global_init() to not build
  thread-safe on non-Windows platforms.

  Closes https://github.com/curl/curl/issues/8973
  Closes https://github.com/curl/curl/pull/8982

- [Oliver Roberts brought this change]

  configure: fixup bsdsocket detection code for AmigaOS 4.x

  The code that detects bsdsocket.library for AmigaOS did not work
  for AmigaOS 4.x. This has been fixed and also cleaned up a little
  to reduce duplication. Wasn't technically necessary before, but is
  required when building with AmiSSL instead of OpenSSL.

  Closes #9268

- [Oliver Roberts brought this change]

  tool: reintroduce set file comment code for AmigaOS

  Amiga specific code which put the URL in the file comment was perhaps
  accidentally removed in b88940850002a3f1c25bc6488b95ad30eb80d696 having
  originally been added in 5c215bdbdfde8b2350cdcbac82aae0c914da5314.
  Reworked to fit the code changes and added it back in.

  Reported-by: Michael Trebilcock
  Originally-added-by: Chris Young

  Closes #9258

- urldata: make 'negnpn' use less storage

  The connectdata struct field 'negnpn' never holds a value larger than
  30, so an unsigned char saves 3 bytes struct space.

  Closes #9279

- urldata: make three *_proto struct fields smaller

  Use 'unsigned char' for storage instead of the enum, for three GSSAPI
  related fields in the connectdata struct.

  Closes #9278

- connect: set socktype/protocol correctly

  So that an address used from the DNS cache that was previously used for
  QUIC can be reused for TCP and vice versa.

  To make this possible, set conn->transport to "unix" for unix domain
  connections ... and store the transport struct field in an unsigned char
  to use less space.

  Reported-by: ウさん
  Fixes #9274
  Closes #9276

- [Oliver Roberts brought this change]

  amissl: allow AmiSSL to be used with AmigaOS 4.x builds

  Enable AmiSSL to be used instead of static OpenSSL link libraries.
  for AmigaOS 4.x, as it already is in the AmigaOS 3.x build.

  Closes #9269

- [opensignature on github brought this change]

  openssl: add details to "unable to set client certificate" error

  from: "curl: (58) unable to set client certificate"

  to: curl: (58) unable to set client certificate [error:0A00018F:SSL
  routines::ee key too small]

  Closes #9228

- [Oliver Roberts brought this change]

  amissl: make AmiSSL v5 a minimum requirement

  AmiSSL v5 is the latest version, featuring a port of OpenSSL 3.0.
  Support for previous OpenSSL 1.1.x versions has been dropped, so
  makes sense to enforce v5 as the minimum requirement. This also
  allows all the AmiSSL stub workarounds to be removed as they are
  now provided in a link library in the AmiSSL SDK.

  Closes #9267

- [Oliver Roberts brought this change]

  configure: -pthread not available on AmigaOS 4.x

  The most recent GCC builds for AmigaOS 4.x do not allow -pthread and
  exit with an error. Instead, need to explictly specify -lpthread.

  Closes #9266

- digest: pass over leading spaces in qop values

  When parsing the "qop=" parameter of the digest authentication, and the
  value is provided within quotes, the list of values can have leading
  white space which the parser previously did not handle correctly.

  Add test case 388 to verify.

  Reported-by: vlubart on github
  Fixes #9264
  Closes #9270

- [Evgeny Grin (Karlson2k) brought this change]

  digest: reject broken header with session protocol but without qop

  Closes #9077

- CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples

  Reported-by: jvvprasad78 on github
  Assisted-by: Jay Satiro
  Fixes #9239
  Closes #9241

- [Fabian Keil brought this change]

  test44[2-4]: add '--resolve' to the keywords

  ... so the tests can be automatically skipped when
  using an external proxy like Privoxy.

  Closes #9250

- RELEASE-NOTES: synced

- CURLOPT_CONNECT_ONLY.3: clarify multi API use

  Reported-by: Maxim Ivanov
  Fixes #9244
  Closes #9262

- [Andrew Lambert brought this change]

  curl_easy_header: Add CURLH_PSEUDO to sanity check

  Fixes #9235
  Closes #9236

- [Emil Engler brought this change]

  docs: add dns category to --resolve

  This commit adds the dns category to the --resolve command line option,
  because it can be interpreted as both: a low-level connection option and
  an option related to the resolving of a hostname.

  It is also not common for dns options to belong to the connection
  category and vice versa.  --ipv4 and --ipv6 are both good examples.

  Closes #9229

Jay Satiro (2 Aug 2022)
- [Wyatt O'Day brought this change]

  schannel: Add TLS 1.3 support

  - Support TLS 1.3 as the default max TLS version for Windows Server 2022
    and Windows 11.

  - Support specifying TLS 1.3 ciphers via existing option
    CURLOPT_TLS13_CIPHERS (tool: --tls13-ciphers).

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

Daniel Stenberg (2 Aug 2022)
- [Emil Engler brought this change]

  cmdline-opts/gen.pl: improve performance

  On some systems, the gen.pl script takes nearly two minutes for the
  generation of the main-page, which is a completely unacceptable time.

  The slow performance has two causes:
  1. Use of a regex locale operator
  2. Useless invokations of loops

  The commit addresses the first issue by replacing the "\W" wiht
  [^a-zA-Z0-9_], which is, according to regex101.com, functionally
  equivalent to the previous operation, except that it is obviously
  limited to ASCII only, which is fine, as the curl project is
  English-only anyway.

  The second issue is being addressed by only running the loop if the line
  contains a "--" in it. The loop may be completeley removed in the
  future.

  Co-authored-by: Emanuele Torre <torreemanuele6@gmail.com>

  See #8299
  Fixes #9230
  Closes #9232

- docs/cmdline: mark fail and fail-with-body as mutually exclusive

  Reported-by: Andreas Sommer
  Fixes #9221
  Closes #9222

- [Nao Yonashiro brought this change]

  quiche: fix build failure

  Reviewed-by: Alessandro Ghedini
  Closes #9223

Viktor Szakats (2 Aug 2022)
- configure.ac: drop references to deleted functions

  follow-up from 4d73854462f30948acab12984b611e9e33ee41e6

  Reported-by: Oliver Roberts
  Fixes #9238
  Closes #9240

Daniel Stenberg (28 Jul 2022)
- [Sean McArthur brought this change]

  hyper: enable obs-folded multiline headers

  Closes #9216

- connect: revert the use of IP*_RECVERR

  The options were added in #6341 and d13179d, but cause problems: Lots of
  POLLIN event occurs but recvfrom read nothing.

  Reported-by: Tatsuhiro Tsujikawa
  Fixes #9209
  Closes #9215

- [Marco Kamner brought this change]

  docs: remove him/her/he/she from documentation

  Closes #9208

- RELEASE-NOTES: synced

- tool_getparam: make --doh-url "" switch it off

  A possible future addition could be to parse the URL first too to verify
  that it is valid before trying to use it.

  Assisted-by: Jay Satiro
  Closes #9207

- mailmap: add rzrymiak on github

Jay Satiro (26 Jul 2022)
- ngtcp2: Fix build error due to change in nghttp3 prototypes

  ngtcp2/nghttp3@4a066b2 changed nghttp3_conn_block_stream and
  nghttp3_conn_shutdown_stream_write return from int to void.

  Reported-by: jurisuk@users.noreply.github.com

  Fixes https://github.com/curl/curl/issues/9204
  Closes https://github.com/curl/curl/pull/9200

Daniel Stenberg (26 Jul 2022)
- [rzrymiak on github brought this change]

  BUGS.md: improve language

  Closes #9205

- [Philip H brought this change]

  cirrus.yml: replace py38-pip with py39-pip

  Reported-by: Jay Satiro
  Fixes #9201
  Closes #9202

- tool_getparam: fix cleanarg() for unicode builds

  Use the correct type, and make cleanarg an empty macro if the cleaning
  ability is absent.

  Fixes #9195
  Closes #9196

  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad

Marc Hoersken (25 Jul 2022)
- test3026: add support for Windows using native Win32 threads

  Reviewed-by: Viktor Szakats
  Reviewed-by: Jay Satiro
  Reviewed-by: Daniel Stenberg

  Follow up to 7ade9c50b35d95d47a43880c3097bebab7a7e690
  Closes #9012

Jay Satiro (25 Jul 2022)
- [Evgeny Grin (Karlson2k) brought this change]

  digest: fix memory leak, fix not quoted 'opaque'

  Fix leak regression introduced by 3a6fe0c.

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

Daniel Stenberg (23 Jul 2022)
- tests: several enumerated type cleanups

  To please icc

  Closes #9179

- tool_paramhlp: fix "enumerated type mixed with another type"

  Warning by icc

  Closes #9179

- tool_writeout: fix enumerated type mixed with another type

  Closes #9179

- tool_cfgable: make 'synthetic_error' a plain bool

  The specific reason was not used.

  Closes #9179

- tool_paramhlp: make check_protocol return ParameterError

  "enumerated type mixed with another type"

  Closes #9179

- tool_formparse: fix variable may be used before its value is set

  Warning by icc

  Closes #9179

- sendf: skip storing HTTP headers if HTTP disabled

  Closes #9179

- url: enumerated type mixed with another type

  Follow-up to 1c58e7ae99ce2030213f28b

  Closes #9179

- urldata: change second proxytype field to unsigned char to match

  To avoid "enumerated type mixed with another type"

  Closes #9179

- http: typecast the httpreq assignment to avoid icc compiler warning

   error #188: enumerated type mixed with another type

  Closes #9179

- urldata: make state.httpreq an unsigned char

  To match set.method used for the same purpose.

  Closes #9179

- splay: avoid using -1 in unsigned variable

  To fix icc compiler warning integer conversion resulted in a change of sign

  Closes #9179

- sendf: store the header type in an usigned char to avoid icc warnings

  Closes #9179

- multi: fix the return code from Curl_pgrsDone()

  It does not return a CURLcode. Detected by the icc compiler warning
  "enumerated type mixed with another type"

  Closes #9179

- sendf: make Curl_debug a void function

  As virtually no called checked the return code, and those that did
  wrongly treated it as a CURLcode. Detected by the icc compiler warning:
  enumerated type mixed with another type

  Closes #9179

- http_chunks: remove an assign + typecast

  As it caused icc to complain: "pointer cast involving 64-bit pointed-to
  type"

  Closes #9179

- vtls: make Curl_ssl_backend() return the enum type curl_sslbackend

  To fix the icc warning enumerated type mixed with another type

  Closes #9179

- curl-compilers.m4: make icc use -diag* options and disable two warnings

  -wd and -we are deprecated and are now -diag-disable and -diag-error

  Disable warning 1024 and 2259

  Closes #9179

- [Matthew Thompson brought this change]

  GHA: add two Intel compiler CI jobs

  Closes #9179

- [Daniel Katz brought this change]

  curl-functions.m4: check whether atomics can link rather than just compile

  Some build toolchains support C11 atomics (i.e., _Atomic types), but
  will not link the associated atomics runtime unless a flag is passed. In
  such an environment, linking an application with libcurl.a can fail due
  to undefined symbols for atomic load/store functions.

  I encountered this behavior when upgrading curl to 7.84.0 and attempting
  to build with Solaris Studio 12.6. Solaris provides the flag
  -xatomic=[gcc | studio], allowing users to link to one of two atomics
  runtime implementations. However, if the user does not provide this
  flag, then neither runtime is linked. This led to builds failing in CI.

  Closes #9190

- [Rosen Penev brought this change]

  curl-wolfssl.m4: add options header when building test code

  Needed for certain configurations of wolfSSL. Otherwise, missing header
  error may occur.

  Tested with OpenWrt.

  Closes #9187

- ftp: use a correct expire ID for timer expiry

  This was an accurate error pointed out by the icc warning: enumerated
  type mixed with another type

  Ref: #9179
  Closes #9184

- sendf: fix paused header writes since after the header API

  Regression since d1e4a67

  Reported-by: Sergey Ogryzkov
  Fixes #9180
  Closes #9182

- mprintf: fix *dyn_vprintf() when out-of-memory

  Follow-up to 0e48ac1f99a. Torture-testing 1455 would lead to a memory
  leak otherwise.

  Closes #9185

- curl-confopts: remove leftover AC_REQUIREs

  configure.ac:3488: warning: CURL_CHECK_FUNC_IOCTL is m4_require'd but not m4_defun'd
  configure.ac:3488: warning: CURL_CHECK_FUNC_SETSOCKOPT is m4_require'd but not m4_defun'd

  follow-up from 4d73854462f30

  Closes #9183

- file: fix icc enumerated type mixed with another type warning

  Ref: #9179
  Closes #9181

Viktor Szakats (19 Jul 2022)
- tidy-up: delete unused build configuration macros

  Most of them feature guards:

  - `CURL_INCLUDES_SYS_UIO` [1]
  - `HAVE_ALLOCA_H` [2]
  - `HAVE_CRYPTO_CLEANUP_ALL_EX_DATA` (unused since de71e68000c8624ea13f90b136f8734dd0fb1bdc)
  - `HAVE_DLFCN_H`
  - `HAVE_DLOPEN`
  - `HAVE_DOPRNT`
  - `HAVE_FCNTL`
  - `HAVE_GETHOSTBYNAME` [3]
  - `HAVE_GETOPT_H`
  - `HAVE_GETPASS`
  - `HAVE_GETPROTOBYNAME`
  - `HAVE_GETSERVBYNAME`
  - `HAVE_IDN_FREE*`
  - `HAVE_INET_ADDR`
  - `HAVE_IOCTL`
  - `HAVE_KRB4`
  - `HAVE_KRB_GET_OUR_IP_FOR_REALM`
  - `HAVE_KRB_H`
  - `HAVE_LDAPSSL_H`
  - `HAVE_LDAP_INIT_FD`
  - `HAVE_LIBDL`
  - `HAVE_LIBNSL`
  - `HAVE_LIBRESOLV*`
  - `HAVE_LIBUCB`
  - `HAVE_LL`
  - `HAVE_LOCALTIME_R`
  - `HAVE_MALLOC_H`
  - `HAVE_MEMCPY`
  - `HAVE_MEMORY_H`
  - `HAVE_NETINET_IF_ETHER_H`
  - `HAVE_NI_WITHSCOPEID`
  - `HAVE_OPENSSL_CRYPTO_H`
  - `HAVE_OPENSSL_ERR_H`
  - `HAVE_OPENSSL_PEM_H`
  - `HAVE_OPENSSL_PKCS12_H`
  - `HAVE_OPENSSL_RAND_H`
  - `HAVE_OPENSSL_RSA_H`
  - `HAVE_OPENSSL_SSL_H`
  - `HAVE_OPENSSL_X509_H`
  - `HAVE_PEM_H`
  - `HAVE_POLL`
  - `HAVE_RAND_SCREEN`
  - `HAVE_RAND_STATUS`
  - `HAVE_RECVFROM`
  - `HAVE_SETSOCKOPT`
  - `HAVE_SETVBUF`
  - `HAVE_SIZEOF_LONG_DOUBLE`
  - `HAVE_SOCKIO_H`
  - `HAVE_SOCK_OPTS`
  - `HAVE_STDIO_H`
  - `HAVE_STRCASESTR`
  - `HAVE_STRFTIME`
  - `HAVE_STRLCAT`
  - `HAVE_STRNCMPI`
  - `HAVE_STRNICMP`
  - `HAVE_STRSTR`
  - `HAVE_STRUCT_IN6_ADDR`
  - `HAVE_TLD_H`
  - `HAVE_TLD_STRERROR`
  - `HAVE_UNAME`
  - `HAVE_USLEEP`
  - `HAVE_WINBER_H`
  - `HAVE_WRITEV`
  - `HAVE_X509_H`
  - `LT_OBJDIR`
  - `NEED_BASENAME_PROTO`
  - `NOT_NEED_LIBNSL`
  - `OPENSSL_NO_KRB5`
  - `RECVFROM_TYPE*`
  - `SIZEOF_LONG_DOUBLE`
  - `STRERROR_R_TYPE_ARG3`
  - `USE_YASSLEMUL`
  - `_USRDLL` (from CMake) [4]

  [1] Related parts in `m4/curl-functions.m4` and `configure.ac` might
      also be deleted.

  [2] Related comment can possibly be deleted in
      `packages/vms/generate_config_vms_h_curl.com`.

  [3] There are more instances of this in autotools, but I did not dare to
      touch those. Looked like it's used to detect socket support.

  [4] This is necessary for MFC (Microsoft Foundation Class) DLLs to
      force linking MFC components statically to the DLL. `libcurl.dll`
      does not use MFC, so we can delete this define.
      Ref: https://docs.microsoft.com/cpp/build/regular-dlls-statically-linked-to-mfc

  Script that can help finding unused settings like above:
  ```shell

  autoheader configure.ac  # generate lib/curl_config.h.in

  {
    grep -o -E    'set\([A-Z][A-Z0-9_]{3,}'          CMake/Platforms/WindowsCache.cmake | sed -E 's|set\(||g'
    grep -o -E -h '#define +[A-Z][A-Z0-9_]{3,}'      lib/config-*.h                     | sed -E 's|#define +||g'
    grep -o -E    '#cmakedefine +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.cmake            | sed -E 's|#cmakedefine +||g'
    grep -o -E    '#undef +[A-Z][A-Z0-9_]{3,}'       lib/curl_config.h.in               | sed -E 's|#undef +||g'
  } | sort -u | grep -v -F 'HEADER_CURL_' | while read -r def; do
    c="$(git grep -w -F "${def}" | grep -v -E -c '(/libcurl\.tmpl|^lib/config-|^lib/curl_config\.h\.cmake|^CMakeLists\.txt|^CMake/Platforms/WindowsCache\.cmake|^packages/vms/config_h\.com|^m4/curl-functions\.m4|^acinclude\.m4|^configure\.ac)')"
    if [ "${c}" = '0' ]; then
      echo "${def}"
    fi
  done
  ```

  Reviewed-by: Daniel Stenberg
  Closes #9044

Daniel Stenberg (19 Jul 2022)
- RELEASE-NOTES: synced

- cookie: treat a blank domain in Set-Cookie: as non-existing

  This matches what RFC 6265 section 5.2.3 says.

  Extended test 31 to verify.

  Fixes #9164
  Reported-by: Gwen Shapira
  Closes #9177

- [Patrick Monnerat brought this change]

  base64: base64url encoding has no padding

  See RFC4648 section 5 and RFC7540 section 3.2.1.

  Suppress generation of '=' padding of base64url encoding. This is
  accomplished by considering the string beginning at offset 64 in the
  character table as the padding: this is "=" for base64, "" for base64url.

  Also use strchr() to replace character search loops where possible.

  Suppress erroneous comments about empty encoding results.

  Adjust unit test 1302 to unpadded base64url encoding and add tests for
  empty results.

  Closes #9139

- easyoptions: fix icc warning

      easyoptions.c(360): error #188: enumerated type mixed with another type

  Ref: #9156
  Reported-by: Matthew Thompson
  Closes #9176

- [lwthiker brought this change]

  h2h3: fix overriding the 'TE: Trailers' header

  A 'TE: Trailers' header is explicitly replaced by 'te: trailers'
  (lowercase) in Curl_pseudo_headers() when building the list of HTTP/2 or
  HTTP/3 headers. However, this is then replaced again by the original
  value due to a bug, resulting in the uppercased version being sent. Some
  HTTP/2 servers reject the whole HTTP/2 stream when this is the case.

  Closes #9170

- lib3026: reduce the number of threads to 100

  Down from 1000, to make it run and work in more systems.

  Fixes #9172
  Reported-by: Érico Nogueira Rolim
  Closes #9173

- doh: move doh related struct definitions to doh.h

  and make 'dnstype' in 'struct dnsprobe' use the DNStype to fix the icc compiler warning:

    doh.c(924): error #188: enumerated type mixed with another type

  Reported-by: Matthew Thompson
  Ref #9156
  Closes #9174

Viktor Szakats (17 Jul 2022)
- Makefile.m32: stop trying to build libcares.a [ci skip]

  Before this patch, `lib/Makefile.m32` had a rule to build `libcares.a` in
  `-cares`-enabled builds, via c-ares's own `Makefile.m32`. Committed in
  2007 [1]. The commit message doesn't specifically address this particular
  change. This logic comes from the times when c-ares was part of the curl
  source tree, hence the special treatment.

  This feature creates problems when building c-ares first, using CMake
  and pointing `LIBCARES_PATH` to its install prefix, where `Makefile.m32`
  is missing in such case. A sub-build for c-ares is undesired also when
  c-ares had already been build via its own `Makefile.m32`.

  To avoid the sub-build, this patch deletes its Makefile rule. After this
  patch `libcares.a` needs to be manually built before using it in
  `Makefile.m32`. Aligning it with the rest of dependencies.

  [1] 46c92c0b806da041d7a5c6fb64dbcdc474d99b31

  Reviewed-by: Daniel Stenberg
  Closes #9169

Daniel Stenberg (17 Jul 2022)
- curl: writeout: fix repeated header outputs

  The function stored a terminating zero into the buffer for convenience,
  but when on repeated calls that would cause problems. Starting now, the
  passed in buffer is not modified.

  Reported-by: highmtworks on github
  Fixes #9150
  Closes #9152

- curl_multi_timeout.3: clarify usage

  Fixes #9155
  Closes #9157
  Reported-by: jvvprasad78 on github

- mprintf: make dprintf_formatf never return negative

  This function no longer returns a negative value if the formatting
  string is bad since the return value would sometimes be propagated as a
  return code from the mprintf* functions and they are documented to
  return the length of the output. Which cannot be negative.

  Fixes #9149
  Closes #9151
  Reported-by: yiyuaner on github

Viktor Szakats (17 Jul 2022)
- trace: 0x7F character is non-printable

  `0x7F` is `DEL`, a non-printable symbol, so print it as
  `UNPRINTABLE_CHAR`.

  Reported-by: MasterInQuestion on github
  Fixes #9162
  Closes #9166

- doh: use https protocol by default

  The only allowed protocol is https, so it makes sense to use that
  by default if not passed explicitly by the user.

  Reported-by: MasterInQuestion on github
  Reviewed-by: Jay Satiro
  Fixes #9163
  Closes #9165

- openssl: fix BoringSSL symbol conflicts with LDAP and Schannel

  Same issue as here [1], but this time when building curl with BoringSSL
  for Windows with LDAP(S) or Schannel support enabled.

  Apply the same fix [2] for these source files as well.

  This can also be fixed by moving `#include "urldata.h"` _before_
  including `winldap.h` and `schnlsp.h` respectively. This seems like
  a cleaner fix, though I'm not sure why it works and if it has any
  downside.

  [1] https://github.com/curl/curl/issues/5669
  [2] https://github.com/curl/curl/commit/fbe07c6829ba8c5793c84c2856526e19e9029ab9

  Co-authored-by: Jay Satiro
  Closes #9110

Daniel Stenberg (13 Jul 2022)
- asyn-thread: make getaddrinfo_complete return CURLcode

  ... as the only caller that cares about what it returns assumes that
  anyway. This caused icc to warn:

  asyn-thread.c(505): error #188: enumerated type mixed with another type
          result = getaddrinfo_complete(data);

  Repoorted-by: Matthew Thompson
  Bug: https://github.com/curl/curl/issues/9081#issuecomment-1182143076
  Closes #9146

- easy_lock: fix build with icc

  The Intel compiler tries to look like GCC *and* clang *and* it lies in
  its __has_builtin() function (returns true when it should return false),
  so override it.

  Reported-by: Matthew Thompson
  Fixes #9081
  Closes #9144

- configure: fix --disable-headers-api

  Reported-by: Michał Antoniak
  Fixes #9134
  Closes #9143

- test3026: require 'threadsafe'

  Reported-by: Sukanya Hanumanthu
  Fixes #9141
  Closes #9142

- [Even Rouault brought this change]

  CMake: link curl to its dependencies with PRIVATE

  The current PUBLIC visibility causes issues for downstream users.
  Cf https://github.com/OSGeo/PROJ/pull/3172#issuecomment-1157942986

  Reviewed-by: Jakub Zakrzewski
  Closes #9125

- [Even Rouault brought this change]

  CMake: remove APPEND in export(TARGETS)

  When running cmake several times, new content was appended to already
  existing generated files, which is not appropriate

  Reviewed-by: Jakub Zakrzewski
  Closes #9124

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks

  Closes #9135

- RELEASE-NOTES: synced

Viktor Szakats (11 Jul 2022)
- build: improve OS string in CMake and `config-win32.h`

  This patch makes CMake fill the "OS string" with the value of
  `CMAKE_C_COMPILER_TARGET`, if passed. This typically contains a triplet,
  the same we can pass to `./configure` via `--host=`.

  For non-CMake, non-autotools, Windows builds, this patch adds the ability
  to override the default `OS` value in `lib/config-win32.h`.

  With these its possible to get the same OS string across the three build
  systems.

  This patch supersedes the earlier, partial, CMake-only solution:
  435f395f3f8c11eebfcc243ca55ebcc11a19b8b8, thus retiring the
  `CURL_OS_SUFFIX` CMake option.

  Reviewed-by: Jay Satiro
  Closes #9117

- Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip]

  They allow to override the hardcoded values for the `windres` and `strip`
  tools, complementing the existing set of `CURL_{CC,AR,RANLIB}` variables.

  `CURL_RC` comes handy when using LLVM tools with `CROSSPREFIX=llvm-` and
  `CURL_CC=clang` set on current latest debian:unstable or earlier, where
  `llvm-windres` is missing, and a `CURL_RC=<triplet>-windres` fixes it.
  Hopefully this will be fixed in the llvm package. FWIW `llvm-windres`
  does exist in Homebrew llvm, MSYS2 llvm and llvm-mingw.

  Reviewed-by: Daniel Stenberg
  Closes #9132

Daniel Stenberg (10 Jul 2022)
- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: fix stall or busy loop on STOP_SENDING with upload data

  Fixes #9122
  Closes #9123

- [Xiaoke Wang brought this change]

  tool_operate: better cleanup of easy handle in exit path

  Closes #9114

- [Xiaoke Wang brought this change]

  getinfo: return better error on NULL as first argument

  Closes #9114

- tool_getparam: repair cleanarg

  Regression since 9e5669f.

  Make sure the "cleaning" of command line arguments is done on the
  original argv[] pointers. As a bonus, it also exits better on out of
  memory error.

  Reported-by: Litter White
  Fixes #9128
  Closes #9130

Jay Satiro (10 Jul 2022)
- docs: explain curl_easy_escape/unescape curl handle is ignored

  26101421 (precedes 7.82.0) removed character conversion support used by
  very old legacy operating systems and since then the curl handle passed
  to curl_easy_escape/unescape is always ignored.

  Bug: https://github.com/curl/curl/discussions/9115
  Reported-by: Ted Lyngmo

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

Viktor Szakats (8 Jul 2022)
- openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL

  BoringSSL doesn't keep a version number, and doesn't self-identify itself
  via any other revision number via its own headers. We can identify
  BoringSSL revisions by their commit hash. This hash is typically known by
  the builder. This patch adds a way to pass this hash to libcurl, so that
  it can display in the curl version string:

  For example:

  `CFLAGS=-DCURL_BORINGSSL_VERSION="c239ffd0"`

  ```
  curl 7.84.0 (x86_64-w64-mingw32) libcurl/7.84.0 BoringSSL/c239ffd0 (Schannel) zlib/1.2.12 [...]
  Release-Date: 2022-06-27
  Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 [...]
  Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos [...]
  ```

  The setting is optional, and if not passed, BoringSSL will appear without
  a version number, like before this patch.

  Closes #9113

Jay Satiro (8 Jul 2022)
- escape: remove outdated comment

  Bug: https://github.com/curl/curl/discussions/9115
  Reported-by: Ted Lyngmo

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: Fix missing initialization of nghttp3_nv.flags

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

Daniel Stenberg (6 Jul 2022)
- [Brad Forschinger brought this change]

  netrc.d: remove spurious quote

  Closes #9111

Viktor Szakats (6 Jul 2022)
- Makefile.m32: add `NGTCP2_LIBS` option [ci skip]

  Makefile.m32's ngtcp2 has its two libs hardwired for OpenSSL.
  Add `NGTCP2_LIBS` envvar to override them with a custom list,
  making it possible to use BoringSSL, or any other backend.

  Closes #9109

Jay Satiro (6 Jul 2022)
- [Evgeny Grin (Karlson2k) brought this change]

  digest: fix missing increment of 'nc' value for auth-int

  - Increment nc regardless of qop type.

  Prior to this change nc was only incremented for qop type auth even
  though libcurl sends nc with any qop.

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

Daniel Stenberg (5 Jul 2022)
- RELEASE-NOTES: synced

  Bumped to 7.85.0

- urldata: reduce size of four ftp related members

  ftp_filemethod, ftpsslauth and ftp_ccc are now uchars

  accepttimeout is now unsigned int - almost 50 days ought to be enough
  for this value.

  Closes #9106

- urldata: reduce three type-members from int to uchar

   - timecondition
   - proxytype
   - method

  ... previously used their enum type in the struct, which made them
  unnecesarily large.

  Closes #9105

- CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name

  Starting now, CURLOPT_FTP_RESPONSE_TIMEOUT is the alias instead of the
  other way around.

  Since 7.20.0, CURLOPT_SERVER_RESPONSE_TIMEOUT has existed as an alias
  but since the option is for more protocols than FTP the more "correct"
  version of the option is the "server" one so now we switch.

  Closes #9104

- urldata: make 'ftp_create_missing_dirs' a uchar

  It only ever holds the values 0-2.

  Closes #9103

- [Don J Olmstead brought this change]

  cmake: support ngtcp2 boringssl backend

  Update the ngtcp2 find module to detect the boringssl backend. Determine
  if the underlying OpenSSL implementation is BoringSSL and if so use that
  as the ngtcp2 backend.

  Reviewed-by: Jakub Zakrzewski
  Closes #9065

- urldata: change 4 timeouts to unsigned int from long

  They're not used for that long times anyway, 32 bit milliseconds is long
  enough.

  Closes #9101

- urldata: make 'use_netrc' a uchar

  Closes #9102

- urldata: make 'buffer_size' an unsigned int

  It is already capped at READBUFFER_MAX which fits easily in 32 bits.

  Closes #9098

- urldata: remove the unused 'rtspversion' struct member

  Closes #9100

- urldata: make 'use_port' an usigned short

  ... instead of a long. It is already enforced to not attempt to set any
  value outside of 16 bits unsigned.

  Closes #9099

- urldata: store dns cache timeout in an int

  68 years ought to be enough for most.

  Closes #9097

- curl: proto2num: make sure obuf is inited

  Detected by Coverity. CID 1507052.

  Closes #9096

- cookie: use %zu to infof() for size_t values

  Detected by Coverity. CID 1507051
  Closes #9095

Viktor Szakats (4 Jul 2022)
- makefile.m32: add support for custom ARCH [ci skip]

  When building curl for target platform other than x64 and x86, it is now
  possible to pass `ARCH=custom`, that will omit all hardcoded logic for
  setting up CFLAGS/LDFLAGS/RCFLAGS for these platforms, and let these be
  customized via `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, and a newly
  added one for the resource compiler: `CURL_RCFLAG_EXTRAS`.

  This makes it possible to use `makefile.m32` to build for ARM64 for
  example.

  Reviewed-by: Daniel Stenberg
  Closes #9092

- cmake: do not force Windows target versions

  The goal of this patch is to avoid CMake forcing specific Windows
  versions and rely on toolchain defaults or manual selection instead.
  This gives back control to the user. This also brings CMake closer to
  how autotools and `Makefile.m32` behaves in this regard.

  - CMake had a setting `ENABLE_INET_PTON` defaulting to `ON`, which did
    nothing else than fixing the Windows build target to Vista. This also
    happened when the toolchain did not have Vista support (e.g. original
    MinGW), breaking such builds.

    In other environments it did not make a user-facing difference,
    because libcurl has its own pton() implementation, so it works well
    with or without Vista's inet_pton().

    This patch drops this setting. inet_pton() is now used whenever
    building for Vista or newer, either when requested manually or by
    default with modern toolchains (e.g. mingw-w64). Older envs will fall
    back to curl's pton().

    Ref: https://github.com/curl/curl/pull/9027#issuecomment-1164157604
    Ref: https://github.com/curl/curl/pull/8997#issuecomment-1164344155

  - When the user did no select a Windows target version manually, stop
    explicitly targeting Windows XP, and instead use the toolchain default.

    This may pose an issue with old toolchains defaulting to pre-XP
    targets. In such case you must manually target Windows XP via:
      `-DCURL_TARGET_WINDOWS_VERSION=0x0501`
    or
      `-DCMAKE_C_FLAGS=-D_WIN32_WINNT=0x0501`

  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad
  Closes #9046

- windows: improve random source

  - Use the Windows API to seed the fallback random generator.

    This ensures to always have a random seed, even when libcurl is built
    with a vtls backend lacking a random generator API, such as rustls
    (experimental), GSKit and certain mbedTLS builds, or, when libcurl is
    built without a TLS backend. We reuse the Windows-specific random
    function from the Schannel backend.

  - Implement support for `BCryptGenRandom()` [1] on Windows, as a
    replacement for the deprecated `CryptGenRandom()` [2] function.

    It is used as the secure random generator for Schannel, and also to
    provide entropy for libcurl's fallback random generator. The new
    function is supported on Vista and newer via its `bcrypt.dll`. It is
    used automatically when building for supported versions. It also works
    in UWP apps (the old function did not).

  - Clear entropy buffer before calling the Windows random generator.

    This avoids using arbitrary application memory as entropy (with
    `CryptGenRandom()`) and makes sure to return in a predictable state
    when an API call fails.

  [1] https://docs.microsoft.com/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
  [2] https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom

  Closes #9027

Daniel Stenberg (4 Jul 2022)
- setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR

  ... as replacements for deprecated CURLOPT_PROTOCOLS and
  CURLOPT_REDIR_PROTOCOLS as these new ones do not risk running into the
  32 bit limit the old ones are facing.

  CURLINFO_PROTCOOL is now deprecated.

  The curl tool is updated to use the new options.

  Added test 1597 to verify the libcurl protocol parser.

  Closes #8992

- digest: simplify a switch() to a simple if

- digest: provide a special bit for "sess" algos

  Also shortened the names and moved them to the .c file since they are
  private for this source file only. Also made them #defines instead of
  enum.

  Closes #9079

Jay Satiro (4 Jul 2022)
- [Thomas Weißschuh brought this change]

  select: do not return fatal error on EINTR from poll()

  The same was done for select() in 5912da25 but poll() was missed.

  Bug: https://bugs.archlinux.org/task/75201
  Reported-by: Alexandre Bury (gyscos at archlinux)

  Ref: https://github.com/curl/curl/issues/8921
  Ref: https://github.com/curl/curl/pull/8961
  Ref: https://github.com/curl/curl/commit/5912da25#r77584294

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

- [Kai Pastor brought this change]

  cmake: fix build for mingw cross compile

  - Change normaliz lib name to all lowercase.

  This is from a standing patch in vcpkg:
  Mingw has libnormaliz.a. For case-sensitive file systems (e.g. cross
  builds from Linux), the spelling must match exactly.

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

- easy_lock: fix build for mingw

  - Define SRWLOCK symbols missing in some mingw environments.

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

Daniel Stenberg (2 Jul 2022)
- tool_progress: avoid division by zero in parallel progress meter

  Reported-by: Brian Carpenter
  Fixes #9082
  Closes #9083

- http_aws_sigv4.c: remove two unusued includes

  Closes #9080

- .mailmap: additional edit

  Follow-up to 861e2a8aca6c7 so that Evgeny appears with the same in git
  logs even when using old email.

- RELEASE-NOTES: synced

  bumped to 7.84.1

- [Evgeny Grin (Karlson2k) brought this change]

  .mailmap: updated

- [Evgeny Grin (Karlson2k) brought this change]

  THANKS: merged two entries for Evgeny Grin

  Also updated THANKS-filter file

  Closes #9076

- [Jilayne Lovejoy brought this change]

  lib/curl_path.c: add ISC to license expression

  THe text of the ISC license is in this file, so the SPDX license
  expression should be updated

  Closes #9073

- [Sean McArthur brought this change]

  hyper: use wakers for curl pause/resume

  Closes #9070

Viktor Szakats (30 Jun 2022)
- Makefile.m32: do not set the libcurl.rc debug flag [ci skip]

  Delete `-DDEBUGBUILD=0` windres option. This was likely meant to
  disable VS_FF_DEBUG in FILEFLAGS, but any assigned value enabled
  it instead. Delete this unnecessary option and thus sync up with
  how CMake compiles libcurl.rc by default.

  Reviewed-by: Jay Satiro
  Closes #9069

Daniel Stenberg (29 Jun 2022)
- curl.h: CURLE_CONV_FAILED is obsoleted

  The last use was removed in 7.82.0. Updated some docs too to reflect the
  current error code situation.

  Closes #9067

- curl: output warning when a cookie is dropped due to size

  Dropped from the request, that is.

  Closes #9064

- curl_mime_data.3: polish the wording

  Closes #9063

- configure: check for the stdatomic.h header in configure

  ... and only set HAVE_ATOMIC if that header exists since we use
  typedefes set in it.

  Reported-by: Ryan Schmidt
  Fixes #9059
  Closes #9060

- easy_lock: fix the #ifdef conditional for ia32_pause

  To work better with new and old clang compilers.

  Reported-by: Ryan Schmidt
  Assisted-by: Joshua Root

  Fixes #9058
  Closes #9062

- easy_lock: switch to using atomic_int instead of bool

  To work with more compilers without requiring separate libs to
  link. Like with gcc-12 for RISC-V on Linux.

  Reported-by: Adam Sampson
  Fixes #9055
  Closes #9061

- [vvb2060 brought this change]

  ngtcp2: fix incompatible function pointer types

  Closes #9056

- [vvb2060 brought this change]

  easy_lock.h: use __asm__ instead of asm to fix build

  Closes #9056

- [Samuel Henrique brought this change]

  libcurl-security.3: fix typo on macro "SH_"

  During the packaging of the latest curl release for Debian, Lintian
  warned me about a typo which causes the section name "Secrets in memory"
  to not be rendered in the manpage due to "SH_" not being recognized as a
  header.

  Closes #9057

- easy_lock.h: include sched.h if available to fix build

  Patched-by: Harry Sintonen

  Closes #9054

Version 7.84.0 (27 Jun 2022)

Daniel Stenberg (27 Jun 2022)
- RELEASE-NOTES: synced

  Version 7.84.0 release
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
  project maintainer. This label means that in addition to meeting all
  other checks and qualifications this pull request must also receive
  proven support/thumbs-ups from more community members to be considered
  for merging.

  Closes #8910

- [Evgeny Grin brought this change]

  digest: tolerate missing "realm"

  Server headers may not define "realm", avoid NULL pointer dereference
  in such cases.

  Closes #8912

- [Evgeny Grin brought this change]

  digest: added detection of more syntax error in server headers

  Invalid headers should not be processed otherwise they may create
  a security risk.

  Closes #8912

- [Evgeny Grin brought this change]

  digest: unquote realm and nonce before processing

  RFC 7616 (and 2617) requires values to be "unquoted" before used for
  digest calculations. The only place where unquoting can be done
  correctly is header parsing function (realm="DOMAIN\\host" and
  realm=DOMAN\\host are different realms).







|








|








|







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
  project maintainer. This label means that in addition to meeting all
  other checks and qualifications this pull request must also receive
  proven support/thumbs-ups from more community members to be considered
  for merging.

  Closes #8910

- [Evgeny Grin (Karlson2k) brought this change]

  digest: tolerate missing "realm"

  Server headers may not define "realm", avoid NULL pointer dereference
  in such cases.

  Closes #8912

- [Evgeny Grin (Karlson2k) brought this change]

  digest: added detection of more syntax error in server headers

  Invalid headers should not be processed otherwise they may create
  a security risk.

  Closes #8912

- [Evgeny Grin (Karlson2k) brought this change]

  digest: unquote realm and nonce before processing

  RFC 7616 (and 2617) requires values to be "unquoted" before used for
  digest calculations. The only place where unquoting can be done
  correctly is header parsing function (realm="DOMAIN\\host" and
  realm=DOMAN\\host are different realms).
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
7448
7449
7450
7451
7452
7453
7454
7455
  Closes #8181

- [Stefan Huber brought this change]

  README: label the link to the support document

  Closes #8185

- docs/HTTP3: describe how to setup a h3 reverse-proxy for testing

  Assisted-by: Matt Holt

  Closes #8177

- libcurl-multi.3: "SOCKS proxy handshakes" are not blocking

  Since 4a4b63daaa0

- [Vladimir Panteleev brought this change]

  tests: Add test for CURLOPT_HTTP200ALIASES

- [Vladimir Panteleev brought this change]

  http: Fix CURLOPT_HTTP200ALIASES

  The httpcode < 100 check was also triggered when none of the fields were
  parsed, thus making the if(!nc) block unreachable.

  Closes #8171

- RELEASE-NOTES: synced

- language: "email"

  Missed three occurrences.

  Follow-up to 7a92f86

- nss:set_cipher don't clobber the cipher list

  The string is set by the user and needs to remain intact for proper
  connection reuse etc.

  Reported-by: Eric Musser
  Fixes #8160
  Closes #8161

- misc: s/e-mail/email

  Consistency is king. Following the lead in everything curl.

  Closes #8159

- [Tobias Nießen brought this change]

  docs: fix typo in OpenSSL 3 build instructions

  Closes #8162

- linkcheck.yml: add CI job that checks markdown links

  Closes #8158

- RELEASE-PROCEDURE.md: remove ICAL link and old release dates

- BINDINGS.md: "markdown-link-check-disable"

  It feels a bit unfortunate to litter an ugly tag for this functionality,
  but if we get link scans of all markdown files, this might be worth the
  price.

- docs: fix dead links, remove ECH.md

Jay Satiro (16 Dec 2021)
- openssl: define HAVE_OPENSSL_VERSION for OpenSSL 1.1.0+

  Prior to this change OpenSSL_version was only detected in configure
  builds. For other builds the old version parsing code was used which
  would result in incorrect versioning for OpenSSL 3:

  Before:

  curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.0a zlib/1.2.11
  WinIDN libssh2/1.9.0

  After:

  curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.1 zlib/1.2.11
  WinIDN libssh2/1.9.0

  Reported-by: lllaffer@users.noreply.github.com

  Fixes https://github.com/curl/curl/issues/8154
  Closes https://github.com/curl/curl/pull/8155

Daniel Stenberg (16 Dec 2021)
- [James Fuller brought this change]

  docs: add known bugs list to HTTP3.md

  Closes #8156

Dan Fandrich (15 Dec 2021)
- BINDINGS: add one from Everything curl and update a link

- libcurl-security.3: mention address and URL mitigations

  The new CURLOPT_PREREQFUNCTION callback is another way to sanitize
  addresses.
  Using the curl_url API is a way to mitigate against attacks relying on
  URL parsing differences.

Daniel Stenberg (15 Dec 2021)
- RELEASE-NOTES: synced

- x509asn1: return early on errors

  Overhaul to make sure functions that detect errors bail out early with
  error rather than trying to continue and risk hiding the problem.

  Closes #8147

- [Patrick Monnerat brought this change]

  openldap: several minor improvements

  - Early check proper LDAP URL syntax. Reject URLs with a userinfo part.
  - Use dynamic memory for ldap_init_fd() URL rather than a
    stack-allocated buffer.
  - Never chase referrals: supporting it would require additional parallel
    connections and alternate authentication credentials.
  - Do not wait 1 microsecond while polling/reading query response data.
  - Store last received server code for retrieval with CURLINFO_RESPONSE_CODE.

  Closes #8140

- [Michał Antoniak brought this change]

  misc: remove unused doh flags when CURL_DISABLE_DOH is defined

  Closes #8148

- mbedtls: fix CURLOPT_SSLCERT_BLOB

  The memory passed to mbedTLS for this needs to be null terminated.

  Reported-by: Florian Van Heghe
  Closes #8146

- asyn-ares: ares_getaddrinfo needs no happy eyeballs timer

  Closes #8142

- mailmap: add Yongkang Huang

  From #8141

- [Yongkang Huang brought this change]

  check ssl_config when re-use proxy connection

- mbedtls: do a separate malloc for ca_info_blob

  Since the mbedTLS API requires the data to the null terminated.

  Follow-up to 456c53730d21b1fad0c7f72c1817

  Fixes #8139
  Closes #8145

Marc Hoersken (14 Dec 2021)
- CI: build examples for additional code verification

  Some CIs already build them, let's do it on more of them.

  Reviewed-by: Daniel Stenberg

  Follow up to #7690 and 77311f420a541a0de5b3014e0e40ff8b4205d4af
  Replaces #7591
  Closes #7922

- docs/examples: workaround broken -Wno-pedantic-ms-format

  Avoid CURL_FORMAT_CURL_OFF_T by using unsigned long instead.
  Improve size_t to long conversion in imap-append.c example.

  Ref: https://github.com/curl/curl/issues/6079
  Ref: https://github.com/curl/curl/pull/6082
  Assisted-by: Jay Satiro
  Reviewed-by: Daniel Stenberg

  Preparation of #7922

- tests/data/test302[12]: fix MSYS2 path conversion of hostpubsha256

  Ref: https://www.msys2.org/wiki/Porting/#filesystem-namespaces

  Reviewed-by: Marcel Raad
  Reviewed-by: Jay Satiro

  Fixes #8084
  Closes #8138

Daniel Stenberg (13 Dec 2021)
- [Patrick Monnerat brought this change]

  openldap: simplify ldif generation code

  and take care of zero-length values, avoiding conversion to base64
  and/or trailing spaces.

  Closes #8136

- example/progressfunc: remove code for old libcurls

  7.61.0 is over three years old now, remove all #ifdefs for handling
  ancient libcurl versions so that the example gets easier to read and
  understand

  Closes #8137

- [Xiaoke Wang brought this change]

  sha256/md5: return errors when init fails

  Closes #8133

- TODO: 13.3 Defeat TLS fingerprinting

  Closes #8119

- RELEASE-NOTES: synced

- [Patrick Monnerat brought this change]

  openldap: process search query response messages one by one

  Upon receiving large result sets, this reduces memory consumption and
  allows starting to output results while the transfer is still in
  progress.

  Closes #8101

- hash: lazy-alloc the table in Curl_hash_add()

  This makes Curl_hash_init() infallible which saves error paths.

  Closes #8132

- multi: cleanup the socket hash when destroying it

  Since each socket hash entry may themselves have a hash table in them,
  the destroying of the socket hash needs to make sure all the subhashes
  are also correctly destroyed to avoid leaking memory.

  Fixes #8129
  Closes #8131

- test1156: fixup the stdout check for Windows

  It is not text mode.

  Follow-up to 6f73e68d182

  Closes #8134

- test1528: enable for hyper

  Closes #8128

- test1527: enable for hyper

  Closes #8128

- test1526: enable for hyper

  Closes #8128

- test1525: slightly tweaked for hyper

  Closes #8128

- test1156: enable for hyper

  Minor reorg of the lib1156 code and it works fine for hyper.

  Closes #8127

- test661: enable for hyper

  Closes #8126

- docs: fix proselint nits

  - remove a lot of exclamation marks
  - use consistent spaces (1, not 2)
  - use better words at some places

  Closes #8123

- [RekGRpth brought this change]

  BINDINGS.md: add cURL client for PostgreSQL

  Closes #8125

- [RekGRpth brought this change]

  CURLSHOPT_USERDATA.3: fix copy-paste mistake

  Closes #8124

- docs: fix minor nroff format nits

  Repairs test 1140

  Follow-up to 436cdf82041

- docs/URL-SYNTAX.md: space is not fine in a given URL

- curl_multi_perform/socket_action.3: clarify what errors mean

  An error returned from one of these funtions mean that ALL still ongoing
  transfers are to be considered failed.

  Ref: #8114
  Closes #8120

- libcurl-errors.3: add CURLM_ABORTED_BY_CALLBACK

  Follow-up to #8089 (2b3dd01)

  Closes #8116

- hash: add asserts to help detect bad usage

  For example trying to add entries after the hash has been "cleaned up"

  Closes #8115

- lib530: abort on curl_multi errors

  This makes torture tests run more proper.

  Also add an assert to trap situations where it would end up with no
  sockets to wait for.

  Closes #8121

- FAQ: we never pronounced it "see URL", we say "kurl"

- RELEASE-NOTES: synced

- CURLOPT_RESOLVE.3: minor polish

  Minor rephrasing for some explanations.

  Put the format strings in stand-alone lines with .nf/.fi to be easier to spot.

  Move "added in" to AVAILABILITY

  Closed #8110

- test1556: adjust for hyper

  Closes #8105

- test1554: adjust for hyper

  Closes #8104

- retry-all-errors.d: make the example complete

  ... as it needs --retry too to work

- TODO: 5.7 Require HTTP version X or higher

  Closes #7980

- CURLOPT_STDERR.3: does not work with libcurl as a win32 DLL

  This is the exact same limitation already documented for
  CURLOPT_WRITEDATA but should be clarified here. It also has a different
  work-around.

  Reported-by: Stephane Pellegrino
  Bug: https://github.com/curl/curl/issues/8102
  Closes #8103

- multi: handle errors returned from socket/timer callbacks

  The callbacks were partially documented to support this. Now the
  behavior is documented and returning error from either of these
  callbacks will effectively kill all currently ongoing transfers.

  Added test 530 to verify

  Reported-by: Marcelo Juchem
  Fixes #8083
  Closes #8089

- http2:set_transfer_url() return early on OOM

  If curl_url() returns NULL this should return early to avoid mistakes -
  even if right now the subsequent function invokes are all OK.

  Coverity (wrongly) pointed out this as a NULL deref.

  Closes #8100

- tool_parsecfg: use correct free() call to free memory

  Detected by Coverity. CID 1494642.
  Follow-up from 2be1aa619bca

  Closes #8099

- tool_operate: fix potential memory-leak

  A 'CURLU *' would leak if url_proto() is called with no URL.

  Detected by Coverity. CID 1494643.
  Follow-up to 18270893abdb19
  Closes #8098

- [Patrick Monnerat brought this change]

  openldap: implement STARTTLS

  As this introduces use of CURLOPT_USE_SSL option for LDAP, also check
  this option in ldap.c as it is not supported by this backend.

  Closes #8065

- [Jun Tseng brought this change]

  curl_easy_unescape.3: call curl_easy_cleanup in example

  Closes #8097

- [Jun Tseng brought this change]

  curl_easy_escape.3: call curl_easy_cleanup in example

  Closes #8097

- tool_listhelp: sync

  Follow-up to 172068b76f

- [Damien Walsh brought this change]

  request.d: refer to 'method' rather than 'command'

  Closes #8094

- RELEASE-NOTES: synced

- writeout: fix %{http_version} for HTTP/3

  Output "3" properly when HTTP/3 was used.

  Reported-by: Bernat Mut
  Fixes #8072
  Closes #8092

- urlapi: accept port number zero

  This is a regression since 7.62.0 (fb30ac5a2d).

  Updated test 1560 accordingly

  Reported-by: Brad Fitzpatrick
  Fixes #8090
  Closes #8091

- [Mark Dodgson brought this change]

  lift: ignore is a deprecated config option, use ignoreRules

  Closes #8082

- [Alessandro Ghedini brought this change]

  HTTP3: update quiche build instructions

  The repo repo was re-organized a bit, so the build instructions need to
  be updated.

  Closes #8076

- CURLMOPT_TIMERFUNCTION.3: call it expire time, not interval

  Since we say it is a non-repating timer

- [Florian Van Heghe brought this change]

  mbedTLS: include NULL byte in blob data length for CURLOPT_CAINFO_BLOB

  Fixes #8079
  Closes #8081

Jay Satiro (2 Dec 2021)
- [Wyatt O'Day brought this change]

  version_win32: Check build number and platform id

  Prior to this change the build number was not checked during version
  comparison, and the platform id was supposed to be checked but wasn't.

  Checking the build number is required for enabling "evergreen"
  Windows 10/11 features (like TLS 1.3).

  Ref: https://github.com/curl/curl/pull/7784

  Closes https://github.com/curl/curl/pull/7824
  Closes https://github.com/curl/curl/pull/7867

- libssh2: fix error message for sha256 mismatch

  - On mismatch error show sha256 fingerprint in base64 format.

  Prior to this change the fingerprint was mistakenly printed in binary.

Daniel Stenberg (1 Dec 2021)
- [Xiaoke Wang brought this change]

  openssl: check the return value of BIO_new()

  Closes #8078

Dan Fandrich (30 Nov 2021)
- docs: Update the Reducing Size section

  Add many more options that can reduce the size of the binary that were
  added since the last update. Update the sample minimal binary size for
  version 7.80.0.

- tests: Add some missing keywords to tests

  These are needed to skip some tests when configure options have disabled
  certain features.

Daniel Stenberg (30 Nov 2021)
- [Florian Van Heghe brought this change]

  mbedTLS: add support for CURLOPT_CAINFO_BLOB

  Closes #8071

- [Glenn Strauss brought this change]

  digest: compute user:realm:pass digest w/o userhash

  https://datatracker.ietf.org/doc/html/rfc7616#section-3.4.4
    ... the client MUST calculate a hash of the username after
        any other hash calculation ...

  Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  Closes #8066

- config.d: update documentation to match the path search

  Assisted-by: Jay Satiro

- tool_findfile: search for a file in the homedir

  The homedir() function is now renamed into findfile() and iterates over
  all the environment variables trying to access the file in question
  until it finds it. Last resort is then getpwuid() if
  available. Previously it would first try to find a home directory and if
  that was set, insist on checking only that directory for the file. This
  now returns the full file name it finds.

  The Windows specific checks are now done differently too and in this
  order:

  1 - %USERPROFILE%
  2 - %APPDATA%
  3 - %USERPROFILE%\\Application Data

  The windows order is modified to match how the Windows 10 ssh tool works
  when it searches for .ssh/known_hosts.

  Reported-by: jeffrson on github
  Co-authored-by: Jay Satiro
  Fixes #8033
  Closes #8035

- docs: consistent manpage SYNOPSIS

  Make all libcurl related options use .nf (no fill) for the SYNOPSIS
  section - for consistent look. roffit then renders that section using
  <pre> (monospace font) in html for the website.

  Extended manpage-syntax (test 1173) with a basic check for it.

  Closes #8062

- RELEASE-NOTES: synced

- [Patrick Monnerat brought this change]

  openldap: handle connect phase with a state machine

  Closes #8054

- docs: address proselint nits

  - avoid exclamation marks
  - use consistent number of spaces after periods: one
  - avoid clichés
  - avoid using 'very'

  Closes #8060

- [Bruno Baguette brought this change]

  FAQ: typo fix : "yout" ➤ "your"

  Closes #8059

- [Bruno Baguette brought this change]

  docs/INSTALL.md: typo fix : added missing "get" verb

  Closes #8058

- insecure.d: detail its use for SFTP and SCP as well

  Closes #8056

Viktor Szakats (25 Nov 2021)
- Makefile.m32: rename -winssl option to -schannel and tidy up

  - accept `-schannel` as an alternative to `CFG` option `-winssl`
    (latter still accepted, but deprecated)
  - rename internal variable `WINSSL` to `SCHANNEL`
  - make the `CFG` option evaluation shorter, without repeating the option
    name

  Reviewed-by: Marcel Raad
  Reviewed-by: Daniel Stenberg
  Closes #8053

Daniel Stenberg (25 Nov 2021)
- KNOWN_BUGS: 5.6 make distclean loops forever

  Reported-by: David Bohman
  Closes #7716

- KNOWN_BUGS: add one, remove one

  - 5.10 SMB tests fail with Python 2

  Just use python 3.

  + 5.10 curl hangs on SMB upload over stdin

  Closes #7896

- urlapi: provide more detailed return codes

  Previously, the return code CURLUE_MALFORMED_INPUT was used for almost
  30 different URL format violations. This made it hard for users to
  understand why a particular URL was not acceptable. Since the API cannot
  point out a specific position within the URL for the problem, this now
  instead introduces a number of additional and more fine-grained error
  codes to allow the API to return more exactly in what "part" or section
  of the URL a problem was detected.

  Also bug-fixes curl_url_get() with CURLUPART_ZONEID, which previously
  returned CURLUE_OK even if no zoneid existed.

  Test cases in 1560 have been adjusted and extended. Tests 1538 and 1559
  have been updated.

  Updated libcurl-errors.3 and curl_url_strerror() accordingly.

  Closes #8049

- urlapi: make Curl_is_absolute_url always use MAX_SCHEME_LEN

  Instad of having all callers pass in the maximum length, always use
  it. The passed in length is instead used only as the length of the
  target buffer for to storing the scheme name in, if used.

  Added the scheme max length restriction to the curl_url_set.3 man page.

  Follow-up to 45bcb2eaa78c79

  Closes #8047

- [Jay Satiro brought this change]

  cmake: warn on use of the now deprecated symbols

  Follow-up to 9108da2c26d

  Closes #8052

- [Kevin Burke brought this change]

  tests/CI.md: add more information on CI environments

  Fixes #8012
  Closes #8022

- cmake: private identifiers use CURL_ instead of CMAKE_ prefix

  Since the 'CMAKE_' prefix is reserved for cmake's own private use.
  Ref: https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html

  Reported-by: Boris Rasin
  Fixes #7988
  Closes #8044

- urlapi: reject short file URLs

  file URLs that are 6 bytes or shorter are not complete. Return
  CURLUE_MALFORMED_INPUT for those. Extended test 1560 to verify.

  Triggered by #8041
  Closes #8042

- curl: improve error message for --head with -J

  ... it now focuses on the "output of headers" combined with the
  --remote-header-name option, as that is actually the problem. Both
  --head and --include can output headers.

  Reported-by: nimaje on github
  Fixes #7987
  Closes #8045

- RELEASE-NOTES: synced

- [Stefan Eissing brought this change]

  urlapi: cleanup scheme parsing

  Makea Curl_is_absolute_url() always leave a defined 'buf' and avoids
  copying on urls that do not start with a scheme.

  Closes #8043

- tool_operate: only set SSH related libcurl options for SSH URLs

  For example, this avoids trying to find and set the known_hosts file (or
  warn for its absence) if SFTP or SCP are not used.

  Closes #8040

- [Jacob Hoffman-Andrews brought this change]

  rustls: remove comment about checking handshaking

  The comment is incorrect in two ways:
   - It says the check needs to be last, but the check is actually first.
   - is_handshaking actually starts out true.

  Closes #8038

Marcel Raad (20 Nov 2021)
- openssl: use non-deprecated API to read key parameters

  With OpenSSL 3.0, the parameters are read directly from the `EVP_PKEY`
  using `EVP_PKEY_get_bn_param`.

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

- openssl: reduce code duplication

  `BN_print`'s `BIGNUM` parameter has been `const` since OpenSSL 0.9.4.

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

- openssl: remove `RSA_METHOD_FLAG_NO_CHECK` handling if unavailable

  The flag has been deprecated without replacement in OpenSSL 3.0.

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

- openssl: remove usage of deprecated `SSL_get_peer_certificate`

  The function name was changed to `SSL_get1_peer_certificate` in OpenSSL
  3.0.

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

Daniel Stenberg (19 Nov 2021)
- page-footer: fix typo

  Closes #8036

- http: enable haproxy support for hyper backend

  This is done by having native code do the haproxy header output before
  hyper issues its request. The little downside with this approach is that
  we need the entire Curl_buffer_send() function built, which is otherwise
  not used for hyper builds.

  If hyper ends up getting native support for the haproxy protocols we can
  backpedal on this.

  Enables test 1455 and 1456

  Closes #8034

- [Bernhard Walle brought this change]

  configure: fix runtime-lib detection on macOS

  With a non-standard installation of openssl we get this error:

      checking run-time libs availability... failed
      configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz

  There's already code to set LD_LIBRARY_PATH on Linux, so set
  DYLD_LIBRARY_PATH equivalent on macOS.

  Closes #8028

- [Don J Olmstead brought this change]

  cmake: don't set _USRDLL on a static Windows build

  Closes #8030

- page-footer: document more environment variables

  ... that curl might use.

  Closes #8027

- netrc.d: edit the .netrc example to look nicer

  Works nicely thanks to d1828b470f43d

  Closes #8025

- tftp: mark protocol as not possible to do over CONNECT

  ... and make connect_init() refusing trying to tunnel protocols marked
  as not working. Avoids a double-free.

  Reported-by: Even Rouault
  Fixes #8018
  Closes #8020

- docs/cmdline-opts: do not say "protocols: all"

  Remove the lines saying "protocols: all". It makes the output in the
  manpage look funny, and the expectation is probably by default that if
  not anything is mentioned about protocols the option apply to them all.

  Closes #8021

- curl.1: require "see also" for every documented option

  gen.pl now generates a warning if the "See Also" field is not filled in for a
  command line option

  All command line options now provide one or more related options. 167
  "See alsos" added!

  Closes #8019

- insecure.d: expand and clarify

  Closes #8017

- gen.pl: improve example output format

  Treat consecutive lines that start with a space to be "examples". They
  are output enclosed by .nf and .fi

  Updated form.d to use this new fanciness

  Closes #8016

- Revert "form-escape.d: double the back-slashes for proper man page output"

  This reverts commit a2d8eac04a4eb1d5a98cf24b4e5cec5cec565d27.

  silly me, it was intended to be one backslash!

- form-escape.d: double the back-slashes for proper man page output

- page-footer: add a mention of how to report bugs to the man page

- RELEASE-NOTES: synced

  and bump to 7.81.0-DEV

- [Patrick Monnerat brought this change]

  mime: use percent-escaping for multipart form field and file names

  Until now, form field and file names where escaped using the
  backslash-escaping algorithm defined for multipart mails. This commit
  replaces this with the percent-escaping method for URLs.

  As this may introduce incompatibilities with server-side applications, a
  new libcurl option CURLOPT_MIME_OPTIONS with bitmask
  CURLMIMEOPT_FORMESCAPE is introduced to revert to legacy use of
  backslash-escaping. This is controlled by new cli tool option
  --form-escape.

  New tests and documentation are provided for this feature.

  Reported by: Ryan Sleevi
  Fixes #7789
  Closes #7805

- [Kevin Burke brought this change]

  zuul.d: update rustls-ffi to version 0.8.2

  This version fixes errors with ALPN negotiation in rustls, which is
  necessary for HTTP/2 support. For more information see the rustls-ffi
  changelog.

  Closes #8013

- configure: better diagnostics if hyper is built wrong

  If hyper is indeed present in the specified directory but couldn't be
  used to find the correct symbol, then offer a different error message to
  better help the user understand the issue.

  Suggested-by: Jacob Hoffman-Andrews
  Fixes #8001
  Closes #8005

- test1939: require proxy support to run

  Follow-up to f0b7099a10d1a

  Closes #8011

- test302[12]: run only with the libssh2 backend

  ... as the others don't support --hostpubsha256

  Reported-by: Paul Howarth
  Fixes #8009
  Closes #8010

- runtests: make the SSH library a testable feature

  libssh2, libssh and wolfssh

- [Jacob Hoffman-Andrews brought this change]

  rustls: read of zero bytes might be okay

  When we're reading out plaintext from rustls' internal buffers, we might
  get a read of zero bytes (meaning a clean TCP close, including
  close_notify). However, we shouldn't return immediately when that
  happens, since we may have already copied out some plaintext bytes.
  Break out of the loop when we get a read of zero bytes, and figure out
  which path we're dealing with.

  Acked-by: Kevin Burke

  Closes #8003

- [Jacob Hoffman-Andrews brought this change]

  rustls: remove incorrect EOF check

  The update to rustls-ffi 0.8.0 changed handling of EOF and close_notify.
  From the CHANGELOG:

  > Handling of unclean close and the close_notify TLS alert. Mirroring
  > upstream changes, a rustls_connection now tracks TCP closed state like
  > so: rustls_connection_read_tls considers a 0-length read from its
  > callback to mean "TCP stream was closed by peer."  If that happens
  > before the peer sent close_notify, rustls_connection_read will return
  > RUSTLS_RESULT_UNEXPECTED_EOF once the available plaintext bytes are
  > exhausted. This is useful to protect against truncation attacks. Note:
  > some TLS implementations don't send close_notify. If you are already
  > getting length information from your protocol (e.g. Content-Length in
  > HTTP) you may choose to ignore UNEXPECTED_EOF so long as the number of
  > plaintext bytes was as expected.

  That means we don't need to check for unclean EOF in `cr_recv()`,
  because `process_new_packets()` will give us an error if appropriate.

  Closes #8003

- lib1939: make it endure torture tests

  Follow-up to f0b7099a10d1a

  Closes #8007

- azure: make the "w/o HTTP/SMTP/IMAP" build disable SSL proper

  The configure line would previously depend on a configure mistake using
  --without-openssl that is fixed and now this configure line needs
  adjusting to use --without-ssl.

  Follow-up to b589696f0312d

  Closes #8006

- [Jacob Hoffman-Andrews brought this change]

  configure: add -lm to configure for rustls build.

  Note: The list of libraries that rustc tells us we need to include is
  longer, but also includes some more platform-specific libraries that I
  am not sure how to effectively incorporate. Adding just -lm seems to
  solve an immediate problem, so I'm adding just that.

  Closes #8002

- curl_share_setopt.3: refer to CURLSHOPT_USERDATA(3) properly

- curl_share_setopt.3: split out options into their own manpages

  CURLSHOPT_LOCKFUNC.3
  CURLSHOPT_SHARE.3
  CURLSHOPT_UNLOCKFUNC.3
  CURLSHOPT_UNSHARE.3
  CURLSHOPT_USERDATA.3

  Closes #7998

- http_proxy: make Curl_connect_done() work for proxy disabled builds

  ... by making it an empty macro then.

  Follow-up to f0b7099a10d1a
  Reported-by: Vincent Grande
  Fixes #7995
  Closes #7996

- Curl_connect_done: handle being called twice

  Follow-up to f0b7099a10d1a7c

  When torture testing 1021, it turns out the Curl_connect_done function
  might be called twice and that previously then wrongly cleared the HTTP
  pointer in the second invoke.

  Closes #7999

- [Stan Hu brought this change]

  configure: don't enable TLS when --without-* flags are used

  Previously specifying `--without-gnutls` would unexpectedly attempt to
  compile with GnuTLS, effectively interpreting this as
  `--with-gnutls`. This caused a significant amount of confusion when
  `libcurl` was built with SSL disabled since GnuTLS wasn't present.

  68d89f24 dropped the `--without-*` options from the configure help, but
  `AC_ARG_WITH` still defines these flags automatically. As
  https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/External-Software.html
  describes, the `action-if-given` is called when the user specifies
  `--with-*` or `--without-*` options.

  To prevent this confusion, we make the `--without` flag do the right
  thing by ignoring the value if it set to "no".

  Closes #7994

- [Rikard Falkeborn brought this change]

  docs/checksrc: Add documentation for STRERROR

  Closes #7991

- vtls/rustls: adapt to the updated rustls_version proto

  Closes #7956

- [Kevin Burke brought this change]

  vtls/rustls: handle RUSTLS_RESULT_PLAINTEXT_EMPTY

  Previously we'd return CURLE_READ_ERROR if we received this, instead
  of triggering the error handling logic that's present in the next if
  block down.

  After this change, curl requests to https://go.googlesource.com using
  HTTP/2 complete successfully.

  Fixes #7949
  Closes #7948

- [Kevin Burke brought this change]

  zuul: update build environment for rustls-ffi 0.8.0

- [Kevin Burke brought this change]

  vtls/rustls: update to compile with rustls-ffi v0.8.0

  Some method names, as well as the generated library name, were changed
  in a recent refactoring.

  Further, change the default configuration instructions to check for
  Hyper in either "target/debug" or "target/release" - the latter
  contains an optimized build configuration.

  Fixes #7947
  Closes #7948

- RELEASE-NOTES: synced

  and bump the version to 7.80.1

- multi: shut down CONNECT in Curl_detach_connnection

  ... to prevent a lingering pointer that would lead to a double-free.

  Added test 1939 to verify.

  Reported-by: Stephen M. Coakley
  Fixes #7982
  Closes #7986

- curl_easy_cleanup.3: remove from multi handle first

  Easy handles that are used by the multi interface should be removed from
  the multi handle before they are cleaned up.

  Reported-by: Stephen M. Coakley
  Ref: #7982
  Closes #7983

- url.c: fix the SIGPIPE comment for Curl_close

  Closes #7984

Version 7.80.0 (10 Nov 2021)

Daniel Stenberg (10 Nov 2021)
- RELEASE-NOTES: synced

  for curl 7.80.0

- THANKS: add contributors from the 7.80.0 cycle

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: advertise h3 as well as h3-29

  Advertise h3 as well as h3-29 since some servers out there require h3
  for QUIC v1.

  Closes #7979

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: use QUIC v1 consistently

  Since we switched to v1 quic_transport_parameters codepoint in #7960
  with quictls, lets use QUIC v1 consistently.

  Closes #7979

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: compile with the latest nghttp3

  Closes #7978

Marc Hoersken (9 Nov 2021)
- tests: add Schannel-specific tests and disable unsupported ones

  Adds Schannel variants of SSLpinning tests that include the option
  --ssl-revoke-best-effort to ignore certificate revocation check
  failures which is required due to our custom test CA certificate.

  Disable the original variants if the Schannel backend is enabled.

  Also skip all IDN tests which are broken while using an msys shell.

  This is a step to simplify test exclusions for Windows and MinGW.

  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad
  Reviewed-by: Daniel Stenberg
  Closes #7968

Daniel Stenberg (8 Nov 2021)
- docs: NAME fixes in easy option man pages

  Closes #7975

- [Roger Young brought this change]

  ftp: make the MKD retry to retry once per directory

  Reported-by: Roger Young
  Fixes #7967
  Closes #7976

- tool_operate: reorder code to avoid compiler warning

  tool_operate.c(889) : warning C4701: potentially uninitialized local
  variable 'per' use

  Follow-up to cc71d352651a0d95
  Reported-by: Marc Hörsken
  Bug: https://github.com/curl/curl/pull/7922#issuecomment-963042676
  Closes #7971

- curl_easy_perform.3: add a para about recv and send data

  Reported-by: Godwin Stewart
  Fixes #7973
  Closes #7974

- tool_operate: fclose stream only if fopened

  Fixes torture test failures
  Follow-up to cc71d352651

  Closes #7972

- libcurl-easy.3: language polish

- limit-rate.d: this is average over several seconds

  Closes #7970

- docs: reduce/avoid English contractions

  You're => You are
  Hasn't => Has not
  Doesn't => Does not
  Don't => Do not
  You'll => You will
  etc

  Closes #7930

- tool_operate: fix torture leaks with etags

  Spotted by torture testing 343 344 345 347.

  Follow-up from cc71d352651a0
  Pointed-out-by: Dan Fandrich

  Closes #7969

- [Amaury Denoyelle brought this change]

  ngtcp2: support latest QUIC TLS RFC9001

  QUIC Transport Parameters Extension has been changed between draft-29
  and latest RFC9001. Most notably, its identifier has been updated from
  0xffa5 to 0x0039. The version is selected through the QUIC TLS library
  via the legacy codepoint.

  Disable the usage of legacy codepoint in curl to switch to latest
  RFC9001. This is required to be able to keep up with latest QUIC
  implementations.

  Acked-by: Tatsuhiro Tsujikawa
  Closes #7960

- test1173: make manpage-syntax.pl spot \n errors in examples

- man pages: fix backslash-n in examples

  ... to be proper backslash-backslash-n sequences to render nicely in man
  and on website.

  Follow-up to 24155569d8a
  Reported-by: Sergey Markelov

  Fixes https://github.com/curl/curl-www/issues/163
  Closes #7962

- scripts/release-notes.pl: use out of repo links verbatim in refs

- tool_operate: a failed etag save now only fails that transfer

  When failing to create the output file for saving an etag, only fail
  that particular single transfer and allow others to follow.

  In a serial transfer setup, if no transfer at all is done due to them
  all being skipped because of this error, curl will output an error
  message and return exit code 26.

  Added test 369 and 370 to verify.

  Reported-by: Earnestly on github
  Ref: #7942
  Closes #7945

- [Kevin Burke brought this change]

  .github: retry macos "brew install" command on failure

  Previously we saw errors attempting to run "brew install", see
  https://github.com/curl/curl/runs/4095721123?check_suite_focus=true for
  an example, since this command is idempotent, it is safe to run again.

  Closes #7955

- CURLOPT_ALTSVC_CTRL.3: mention conn reuse is preferred

  Ref: https://github.com/curl/curl/discussions/7954

  Closes #7957

- RELEASE-NOTES: synced

- zuul: pin the quiche build to use an older cmake-rs

  The latest cmake-rs assumes cmake's --parallel works. That was added in
  cmake 3.12, but a lot of our CI builds run on Ubuntu Bionic which only
  has cmake 3.10.

  Fixes #7927
  Closes #7952

- [Marc Hoersken brought this change]

  Revert "src/tool_filetime: disable -Wformat on mingw for this file"

  This reverts commit 7c88fe375b15c44d77bccc9ab733b8069d228e6f.

  Follow up to #6535 as the pragma is obsolete with warnf

  Closes #7941

Jay Satiro (2 Nov 2021)
- schannel: fix memory leak due to failed SSL connection

  - Call schannel_shutdown if the SSL connection fails.

  Prior to this change schannel_shutdown (which shuts down the SSL
  connection as well as memory cleanup) was not called when the SSL
  connection failed (eg due to failed handshake).

  Co-authored-by: Gisle Vanem

  Fixes https://github.com/curl/curl/issues/7877
  Closes https://github.com/curl/curl/pull/7878

Daniel Stenberg (2 Nov 2021)
- Curl_updateconninfo: store addresses for QUIC connections too

  So that CURLINFO_PRIMARY_IP etc work for HTTP/3 like for other HTTP
  versions.

  Reported-by: Jerome Mao
  Fixes #7939
  Closes #7944

- [Sergio Durigan Junior brought this change]

  curl.1: fix typos in the manpage

  s/transfering/transferring/
  s/transfered/transferred/

  Signed-off-by: Sergio Durigan Junior <sergiodj@sergiodj.net>
  Closes #7937

Marc Hoersken (1 Nov 2021)
- tests/smbserver.py: fix compatibility with impacket 0.9.23+

  impacket now performs sanity checks if the requested and to
  be served file path actually is inside the real share path.

  Ref: https://github.com/SecureAuthCorp/impacket/pull/1066

  Fixes #7924
  Closes #7935

Daniel Stenberg (1 Nov 2021)
- docs: reduce use of "very"

  "Very" should be avoided in most texts. If intensifiers are needed, try
  find better words instead.

  Closes #7936

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: specify the missing required callback functions

  Closes #7929

- CURLOPT_[PROXY]_SSL_CIPHER_LIST.3: bold instead of quote

  Bold the example ciphers instead of using single quotes, which then also
  avoids the problem of how to use single quotes when first in a line.

  Also rephrased the pages a little.

  Reported-by: Sergio Durigan Junior
  Ref: #7928
  Closes #7934

- gen.pl: replace leading single quotes with \(aq

  ... and allow single quotes to be used "normally" in the .d files.

  Makes the output curl.1 use better nroff.

  Reported-by: Sergio Durigan Junior
  Ref: #7928
  Closes #7933

Marc Hoersken (1 Nov 2021)
- tests: kill some test servers afterwards to avoid locked logfiles

  Reviewed-by: Daniel Stenberg
  Closes #7925

Daniel Stenberg (1 Nov 2021)
- smooth-gtk-thread.c: enhance the mutex lock use

  Reported-by: ryancaicse on github
  Fixes #7926
  Closes #7931

Marc Hoersken (31 Oct 2021)
- CI/runtests.pl: restore -u flag, but remove it from CI runs

  This makes it possible to use -u again for local testing,
  but removes the flag from CI config files and make targets.

  Reviewed-by: Daniel Stenberg

  Partially reverts #7841
  Closes #7921

Daniel Stenberg (29 Oct 2021)
- [Jonathan Cardoso Machado brought this change]

  CURLOPT_HSTSWRITEFUNCTION.3: using CURLOPT_HSTS_CTRL is required

  Closes #7923

- [Axel Morawietz brought this change]

  imap: display quota information

  Show response to "GETQUOTAROOT INBOX" command.

  Closes #6973

- RELEASE-NOTES: synced

- [Boris Rasin brought this change]

  cmake: fix error getting LOCATION property on non-imported target

  Closes #7885

- [Xiaoke Wang brought this change]

  url: check the return value of curl_url()

  Closes #7917

- [Roy Li brought this change]

  configure.ac: replace krb5-config with pkg-config

  The rationale is that custom *-config tools don't work well when
  cross-compiling or using sysroots (such as when using Yocto project) and
  require custom fixing for each of them; pkg-config on the other hand
  works similarly everywhere.

  Signed-off-by: Roy Li <rongqing.li@windriver.com>
  Signed-off-by: Alexander Kanavin <alex@linutronix.de>

  Closes #7916

- test1160: edited to work with hyper

  Closes #7912

- data/DISABLED: enable tests that now work with hyper

  Closes #7911

- test559: add 'HTTP' in keywords

  Makes it run fine with hyper

  Closes #7911

- test552: updated to work with hyper

  Closes #7911

Marc Hoersken (27 Oct 2021)
- github: fix incomplete permission to label PRs for Hacktoberfest

  Unfortunately the GitHub API requires a token with write permission
  for both issues and pull-requests to edit labels on even just PRs.

  Follow up to #7897

Daniel Stenberg (27 Oct 2021)
- opt-manpages: use 'Added in' instead of 'Since'

  Closes #7913

Marc Hoersken (27 Oct 2021)
- github: fix missing permission to label PRs for Hacktoberfest

  Follow up to #7897

  Test references to see if permissions are now sufficient:

  Closes #7832
  Closes #7897

- CI: more use of test-ci make target and verbose output

  Replace test-nonflaky with test-ci and enable verbose output
  in all remaining CIs except Zuul which is customized a lot.

  Reviewed-by: Daniel Stenberg
  Reviewed-by: Jay Satiro

  Follow up to #7785
  Closes #7832

- github: add support for Hacktoberfest using labels

  Automatically add hacktoberfest-accepted label to PRs opened between
  September 30th and November 1st once a commit with a close reference
  to it is pushed onto the master branch.

  With this workflow we can participate in Hacktoberfest while not
  relying on GitHub to identify PRs as merged due to our rebasing.

  Requires hacktoberfest-accepted labels to exist for PRs on the
  participating repository. Also requires hacktoberfest topic on
  the participating repository to avoid applying to forked repos.

  Reviewed-by: Daniel Stenberg

  Fixes #7865
  Closes #7897

Daniel Stenberg (27 Oct 2021)
- http: reject HTTP response codes < 100

  ... which then also includes negative ones as test 1430 uses.

  This makes native + hyper backend act identically on this and therefore
  test 1430 can now be enabled when building with hyper. Adjust test 1431
  as well.

  Closes #7909

- [Kerem Kat brought this change]

  docs: fix typo in CURLOPT_TRAILERFUNCTION example

  Closes #7910

- docs/HYPER: remove some remaining issues, add HTTP/0.9 limitation

- configure: when hyper is selected, deselect nghttp2

  Closes #7908

- [Patrick Monnerat brought this change]

  sendf: accept zero-length data in Curl_client_write()

  Historically, Curl_client_write() used a length value of 0 as a marker
  for a null-terminated data string. This feature has been removed in
  commit f4b85d2. To detect leftover uses of the feature, a DEBUGASSERT
  statement rejecting a length with value 0 was introduced, effectively
  precluding use of this function with zero-length data.

  The current commit removes the DEBUGASSERT and makes the function to
  return immediately if length is 0.

  A direct effect is to fix trying to output a zero-length distinguished
  name in openldap.

  Another DEBUGASSERT statement is also rephrased for better readability.

  Closes #7898

- hyper: disable test 1294 since hyper doesn't allow such crazy headers

  Closes #7905

- c-hyper: make CURLOPT_SUPPRESS_CONNECT_HEADERS work

  Verified by the enabled test 1288

  Closes #7905

- test1287: make work on hyper

  Closes #7905

- test1266/1267: disabled on hyper: no HTTP/0.9 support

  Closes #7905

Viktor Szakats (25 Oct 2021)
- Makefile.m32: fix to not require OpenSSL with -libssh2 or -rtmp options

  Previously, -libssh2/-rtmp options assumed that OpenSSL is also enabled
  (and then failed with an error when not finding expected OpenSSL headers),
  but this isn't necessarly true, e.g. when building both libssh2 and curl
  against Schannel. This patch makes sure to only enable the OpenSSL backend
  with -libssh2/-rtmp, when there was no SSL option explicitly selected.

  - Re-implement the logic as a single block of script.
  - Also fix an indentation while there.

  Assisted-by: Jay Satiro

  Closes #7895

Daniel Stenberg (25 Oct 2021)
- docs: consistent use of "Added in"

  Make them all say "Added in [version]" without using 'curl' or 'libcurl'
  in that phrase.

- man pages: require all to use the same section header order

  This is the same order we already enforce among the options' man pages:
  consistency is good. Add lots of previously missing examples.

  Adjust the manpage-syntax script for this purpose, used in test 1173.

  Closes #7904

- [David Hu brought this change]

  docs/HTTP3: improve build instructions

  1. If writing to a system path if the command is not prefixed with
  `sudo` it will cause a permission denied error

  2. The patched OpenSSL branch has been updated to `openssl-3.0.0+quic`
  to match upstream OpenSSL version.

  3. We should not disable GnuTLS docs.

  Updated some commands about `make install`

  Closes #7842

- [Ricardo Martins brought this change]

  CMake: restore support for SecureTransport on iOS

  Restore support for building curl for iOS with SecureTransport enabled.

  Closes #7501

- tests: enable more tests with hyper

  Adjusted 1144, 1164 and 1176.

  Closes #7900

- docs: provide "RETURN VALUE" section for more func manpages

  Three were missing, one used a non-standard name for the header.

  Closes #7902

Jay Satiro (25 Oct 2021)
- curl_multi_socket_action.3: add a "RETURN VALUE" section

  .. because it may not be immediately clear to the user what
  curl_multi_socket_action returns.

  Ref: https://curl.se/mail/lib-2021-10/0035.html

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

Daniel Stenberg (24 Oct 2021)
- RELEASE-NOTES: synced

- [Samuel Henrique brought this change]

  tests: use python3 in test 1451

  This is a continuation of commit ec91b5a69000bea0794bbb3 in which
  changing this test was missed.  There are no other python2 leftovers
  now.

  Based on a Debian patch originally written by Alessandro Ghedini
  <ghedo@debian.org>

  Closes #7899

- [Eddie Lumpkin brought this change]

  lib: fixing comment spelling typos in lib files

  Closes #7894
  Signed-off-by: ewlumpkin <ewlumpkin@gmail.com>

- openssl: if verifypeer is not requested, skip the CA loading

  It was previously done mostly to show a match/non-match in the verbose
  output even when verification was not asked for. This change skips the
  loading of the CA certs unless verifypeer is set to save memory and CPU.

  Closes #7892

- curl-confopts.m4:  remove --enable/disable-hidden-symbols

  These configure options have been saying "deprecated" since 9e24b9c7af
  (April 2012). It was about time we remove them.

  Closes #7891

- c-hyper: don't abort CONNECT responses early when auth-in-progress

  ... and make sure to stop ignoring the body once the CONNECT is done.

  This should make test 206 work proper again and not be flaky.

  Closes #7889

- hyper: does not support disabling CURLOPT_HTTP_TRANSFER_DECODING

  Simply because hyper doesn't have this ability. Mentioned in docs now.

  Skip test 326 then

  Closes #7889

- test262: don't attempt with hyper

  This test verifies that curl works with binary zeroes in HTTP response
  headers and hyper refuses such. They're not kosher http.

  Closes #7889

- c-hyper: make test 217 run

  Closes #7889

- DISABLED: enable test 209+213 for hyper

  Follow-up to 823d3ab855c

  Closes #7889

- test207: accept a different error code for hyper

  It returns HYPERE_UNEXPECTED_EOF for this case which we convert to the
  somewhat generic CURLE_RECV_ERROR.

  Closes #7889







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
7778
7779
7780
7781
7782
7783
7784

































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































  Closes #8181

- [Stefan Huber brought this change]

  README: label the link to the support document

  Closes #8185

































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Changes to jni/curl/CMake/CurlTests.c.
511
512
513
514
515
516
517















































518
main() {
  int res3 = gcc_vmacro3(1, 2, 3);
  int res2 = gcc_vmacro2(1, 2);
  (void)res3;
  (void)res2;
  return 0;
}















































#endif







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

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
main() {
  int res3 = gcc_vmacro3(1, 2, 3);
  int res2 = gcc_vmacro2(1, 2);
  (void)res3;
  (void)res2;
  return 0;
}
#endif
#ifdef HAVE_ATOMIC
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_UNISTD_H
#  include <unistd.h>
#endif
#ifdef HAVE_STDATOMIC_H
#  include <stdatomic.h>
#endif
/* includes end */

int
main() {
  _Atomic int i = 1;
  i = 0;  // Force an atomic-write operation.
  return i;
}
#endif
#ifdef HAVE_WIN32_WINNT
/* includes start */
#ifdef WIN32
/*
 * Don't include unneeded stuff in Windows headers to avoid compiler
 * warnings and macro clashes.
 * Make sure to define this macro before including any Windows headers.
 */
#  ifndef WIN32_LEAN_AND_MEAN
#    define WIN32_LEAN_AND_MEAN
#  endif
#  ifndef NOGDI
#    define NOGDI
#  endif
#  include "../lib/setup-win32.h"
#endif
/* includes end */

#define enquote(x) #x
#define expand(x) enquote(x)
#pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT))

int
main() {
  return 0;
}
#endif
Changes to jni/curl/CMake/FindNGTCP2.cmake.
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
if(PC_NGTCP2_VERSION)
  set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
endif()

if(NGTCP2_FIND_COMPONENTS)
  set(NGTCP2_CRYPTO_BACKEND "")
  foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
    if(component MATCHES "^(OpenSSL|GnuTLS)")
      if(NGTCP2_CRYPTO_BACKEND)
        message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
      endif()
      set(NGTCP2_CRYPTO_BACKEND ${component})
    endif()
  endforeach()








|







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
if(PC_NGTCP2_VERSION)
  set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
endif()

if(NGTCP2_FIND_COMPONENTS)
  set(NGTCP2_CRYPTO_BACKEND "")
  foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
    if(component MATCHES "^(BoringSSL|OpenSSL|GnuTLS)")
      if(NGTCP2_CRYPTO_BACKEND)
        message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
      endif()
      set(NGTCP2_CRYPTO_BACKEND ${component})
    endif()
  endforeach()

Changes to jni/curl/CMake/Platforms/WindowsCache.cmake.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################
if(NOT UNIX)
  if(WIN32)
    set(HAVE_LIBDL 0)
    set(HAVE_LIBUCB 0)
    set(HAVE_LIBSOCKET 0)
    set(NOT_NEED_LIBNSL 0)
    set(HAVE_LIBNSL 0)
    set(HAVE_GETHOSTNAME 1)
    set(HAVE_LIBZ 0)

    set(HAVE_DLOPEN 0)

    set(HAVE_ALLOCA_H 0)
    set(HAVE_ARPA_INET_H 0)
    set(HAVE_DLFCN_H 0)
    set(HAVE_FCNTL_H 1)
    set(HAVE_INTTYPES_H 0)
    set(HAVE_IO_H 1)
    set(HAVE_MALLOC_H 1)
    set(HAVE_MEMORY_H 1)
    set(HAVE_NETDB_H 0)
    set(HAVE_NETINET_IF_ETHER_H 0)
    set(HAVE_NETINET_IN_H 0)
    set(HAVE_NET_IF_H 0)
    set(HAVE_PROCESS_H 1)
    set(HAVE_PWD_H 0)
    set(HAVE_SETJMP_H 1)
    set(HAVE_SIGNAL_H 1)
    set(HAVE_SOCKIO_H 0)
    set(HAVE_STDINT_H 0)
    set(HAVE_STDLIB_H 1)
    set(HAVE_STRINGS_H 0)
    set(HAVE_STRING_H 1)
    set(HAVE_SYS_PARAM_H 0)
    set(HAVE_SYS_POLL_H 0)
    set(HAVE_SYS_SELECT_H 0)
    set(HAVE_SYS_SOCKET_H 0)
    set(HAVE_SYS_SOCKIO_H 0)
    set(HAVE_SYS_STAT_H 1)
    set(HAVE_SYS_TIME_H 0)
    set(HAVE_SYS_TYPES_H 1)
    set(HAVE_SYS_UTIME_H 1)
    set(HAVE_TERMIOS_H 0)
    set(HAVE_TERMIO_H 0)
    set(HAVE_TIME_H 1)
    set(HAVE_UNISTD_H 0)
    set(HAVE_UTIME_H 0)
    set(HAVE_X509_H 0)
    set(HAVE_ZLIB_H 0)

    set(HAVE_SIZEOF_LONG_DOUBLE 1)
    set(SIZEOF_LONG_DOUBLE 8)

    set(HAVE_SOCKET 1)
    set(HAVE_POLL 0)
    set(HAVE_SELECT 1)
    set(HAVE_STRDUP 1)
    set(HAVE_STRSTR 1)
    set(HAVE_STRTOK_R 0)
    set(HAVE_STRFTIME 1)
    set(HAVE_UNAME 0)
    set(HAVE_STRCASECMP 0)
    set(HAVE_STRICMP 1)
    set(HAVE_STRCMPI 1)
    set(HAVE_GETTIMEOFDAY 0)
    set(HAVE_INET_ADDR 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)
    set(HAVE_GETEUID 0)
    set(HAVE_UTIME 1)
    set(HAVE_RAND_EGD 0)
    set(HAVE_RAND_SCREEN 0)
    set(HAVE_RAND_STATUS 0)
    set(HAVE_GMTIME_R 0)
    set(HAVE_LOCALTIME_R 0)
    set(HAVE_GETHOSTBYNAME_R 0)
    set(HAVE_SIGNAL_FUNC 1)
    set(HAVE_SIGNAL_MACRO 0)

    set(HAVE_GETHOSTBYNAME_R_3 0)
    set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
    set(HAVE_GETHOSTBYNAME_R_5 0)







<
<

<
<



<
<
<

<



<
<

<






<


















<


<
<
<

<


<

<
<




<

<


<




<
<

<







19
20
21
22
23
24
25


26


27
28
29



30

31
32
33


34

35
36
37
38
39
40

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

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
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################
if(NOT UNIX)
  if(WIN32)


    set(HAVE_LIBSOCKET 0)


    set(HAVE_GETHOSTNAME 1)
    set(HAVE_LIBZ 0)




    set(HAVE_ARPA_INET_H 0)

    set(HAVE_FCNTL_H 1)
    set(HAVE_INTTYPES_H 0)
    set(HAVE_IO_H 1)


    set(HAVE_NETDB_H 0)

    set(HAVE_NETINET_IN_H 0)
    set(HAVE_NET_IF_H 0)
    set(HAVE_PROCESS_H 1)
    set(HAVE_PWD_H 0)
    set(HAVE_SETJMP_H 1)
    set(HAVE_SIGNAL_H 1)

    set(HAVE_STDINT_H 0)
    set(HAVE_STDLIB_H 1)
    set(HAVE_STRINGS_H 0)
    set(HAVE_STRING_H 1)
    set(HAVE_SYS_PARAM_H 0)
    set(HAVE_SYS_POLL_H 0)
    set(HAVE_SYS_SELECT_H 0)
    set(HAVE_SYS_SOCKET_H 0)
    set(HAVE_SYS_SOCKIO_H 0)
    set(HAVE_SYS_STAT_H 1)
    set(HAVE_SYS_TIME_H 0)
    set(HAVE_SYS_TYPES_H 1)
    set(HAVE_SYS_UTIME_H 1)
    set(HAVE_TERMIOS_H 0)
    set(HAVE_TERMIO_H 0)
    set(HAVE_TIME_H 1)
    set(HAVE_UNISTD_H 0)
    set(HAVE_UTIME_H 0)

    set(HAVE_ZLIB_H 0)




    set(HAVE_SOCKET 1)

    set(HAVE_SELECT 1)
    set(HAVE_STRDUP 1)

    set(HAVE_STRTOK_R 0)


    set(HAVE_STRCASECMP 0)
    set(HAVE_STRICMP 1)
    set(HAVE_STRCMPI 1)
    set(HAVE_GETTIMEOFDAY 0)

    set(HAVE_CLOSESOCKET 1)

    set(HAVE_SIGSETJMP 0)
    set(HAVE_GETPASS_R 0)

    set(HAVE_GETPWUID 0)
    set(HAVE_GETEUID 0)
    set(HAVE_UTIME 1)
    set(HAVE_RAND_EGD 0)


    set(HAVE_GMTIME_R 0)

    set(HAVE_GETHOSTBYNAME_R 0)
    set(HAVE_SIGNAL_FUNC 1)
    set(HAVE_SIGNAL_MACRO 0)

    set(HAVE_GETHOSTBYNAME_R_3 0)
    set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
    set(HAVE_GETHOSTBYNAME_R_5 0)
Changes to jni/curl/CMakeLists.txt.
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
message(STATUS "curl version=[${CURL_VERSION}]")
# SET(PACKAGE_TARNAME "curl")
# SET(PACKAGE_NAME "curl")
# SET(PACKAGE_VERSION "-")
# SET(PACKAGE_STRING "curl-")
# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/")
set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")



set(OS "\"${CMAKE_SYSTEM_NAME}${CURL_OS_SUFFIX}\"")


include_directories(${CURL_SOURCE_DIR}/include)

option(CURL_WERROR "Turn compiler warnings into errors" OFF)
option(PICKY_COMPILER "Enable picky compiler options" ON)
option(BUILD_CURL_EXE "Set to ON to build curl executable." ON)
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
if(WIN32)
  option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
  option(ENABLE_INET_PTON "Set to OFF to prevent usage of inet_pton when building against modern SDKs while still requiring compatibility with older Windows versions, such as Windows XP, Windows Server 2003 etc." ON)
  option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
  set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string")
  if(CURL_TARGET_WINDOWS_VERSION)
    add_definitions(-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION})
    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
  elseif(ENABLE_INET_PTON)
    # _WIN32_WINNT_VISTA (0x0600)
    add_definitions(-D_WIN32_WINNT=0x0600)
    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0600")
  else()
    # _WIN32_WINNT_WINXP (0x0501)
    add_definitions(-D_WIN32_WINNT=0x0501)
    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0501")
  endif()
  if(ENABLE_UNICODE)
    add_definitions(-DUNICODE -D_UNICODE)
    if(MINGW)
      add_compile_options(-municode)
    endif()
  endif()







>
>
>
|
>










<





<
<
<
<
<
<
<
<







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
message(STATUS "curl version=[${CURL_VERSION}]")
# SET(PACKAGE_TARNAME "curl")
# SET(PACKAGE_NAME "curl")
# SET(PACKAGE_VERSION "-")
# SET(PACKAGE_STRING "curl-")
# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/")
set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
if(CMAKE_C_COMPILER_TARGET)
  set(OS "\"${CMAKE_C_COMPILER_TARGET}\"")
else()
  set(OS "\"${CMAKE_SYSTEM_NAME}\"")
endif()

include_directories(${CURL_SOURCE_DIR}/include)

option(CURL_WERROR "Turn compiler warnings into errors" OFF)
option(PICKY_COMPILER "Enable picky compiler options" ON)
option(BUILD_CURL_EXE "Set to ON to build curl executable." ON)
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
if(WIN32)
  option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)

  option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
  set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string")
  if(CURL_TARGET_WINDOWS_VERSION)
    add_definitions(-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION})
    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")








  endif()
  if(ENABLE_UNICODE)
    add_definitions(-DUNICODE -D_UNICODE)
    if(MINGW)
      add_compile_options(-municode)
    endif()
  endif()
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
    set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT})
    set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT})
  endif()
  set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
endif()

# Check for all needed libraries
check_library_exists_concat("${CMAKE_DL_LIBS}" dlopen HAVE_LIBDL)
check_library_exists_concat("socket" connect      HAVE_LIBSOCKET)
check_library_exists("c" gethostbyname "" NOT_NEED_LIBNSL)

if(NOT NOT_NEED_LIBNSL)
  check_library_exists_concat("nsl"    gethostbyname  HAVE_LIBNSL)
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()







<

<
<
<
<
<







323
324
325
326
327
328
329

330





331
332
333
334
335
336
337
    set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT})
    set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT})
  endif()
  set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
endif()

# Check for all needed libraries

check_library_exists_concat("socket" connect      HAVE_LIBSOCKET)






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()
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
    list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
  else()
    list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
    include_directories(${OPENSSL_INCLUDE_DIR})
  endif()

  set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
  check_include_file("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
  check_include_file("openssl/err.h"    HAVE_OPENSSL_ERR_H)
  check_include_file("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
  check_include_file("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
  check_include_file("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
  check_include_file("openssl/x509.h"   HAVE_OPENSSL_X509_H)
  check_include_file("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
  check_symbol_exists(RAND_status "${CURL_INCLUDES}" HAVE_RAND_STATUS)
  check_symbol_exists(RAND_screen "${CURL_INCLUDES}" HAVE_RAND_SCREEN)
  check_symbol_exists(RAND_egd    "${CURL_INCLUDES}" HAVE_RAND_EGD)

  add_definitions(-DOPENSSL_SUPPRESS_DEPRECATED)
endif()

if(CURL_USE_MBEDTLS)
  find_package(MbedTLS REQUIRED)
  set(SSL_ENABLED ON)







<
<
<
<
<
<
<
|
|
<







435
436
437
438
439
440
441







442
443

444
445
446
447
448
449
450
    list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
  else()
    list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
    include_directories(${OPENSSL_INCLUDE_DIR})
  endif()

  set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})







  check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
  check_symbol_exists(OPENSSL_IS_BORINGSSL "openssl/base.h" HAVE_BORINGSSL)


  add_definitions(-DOPENSSL_SUPPRESS_DEPRECATED)
endif()

if(CURL_USE_MBEDTLS)
  find_package(MbedTLS REQUIRED)
  set(SSL_ENABLED ON)
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525



526

527
528
529
530
531
532
533
function(CheckQuicSupportInOpenSSL)
  # Be sure that the OpenSSL library actually supports QUIC.
  cmake_push_check_state()
  set(CMAKE_REQUIRED_INCLUDES   "${OPENSSL_INCLUDE_DIR}")
  set(CMAKE_REQUIRED_LIBRARIES  "${OPENSSL_LIBRARIES}")
  check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD)
  if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD)
    message(FATAL_ERROR "QUIC support is missing in OpenSSL/boringssl. Try setting -DOPENSSL_ROOT_DIR")
  endif()
  cmake_pop_check_state()
endfunction()

option(USE_NGTCP2 "Use ngtcp2 and nghttp3 libraries for HTTP/3 support" OFF)
if(USE_NGTCP2)
  if(USE_OPENSSL)



    find_package(NGTCP2 REQUIRED OpenSSL)

    CheckQuicSupportInOpenSSL()
  elseif(USE_GNUTLS)
    # TODO add GnuTLS support as vtls library.
    find_package(NGTCP2 REQUIRED GnuTLS)
  else()
    message(FATAL_ERROR "ngtcp2 requires OpenSSL or GnuTLS")
  endif()







|







>
>
>
|
>







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
function(CheckQuicSupportInOpenSSL)
  # Be sure that the OpenSSL library actually supports QUIC.
  cmake_push_check_state()
  set(CMAKE_REQUIRED_INCLUDES   "${OPENSSL_INCLUDE_DIR}")
  set(CMAKE_REQUIRED_LIBRARIES  "${OPENSSL_LIBRARIES}")
  check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD)
  if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD)
    message(FATAL_ERROR "QUIC support is missing in OpenSSL/BoringSSL. Try setting -DOPENSSL_ROOT_DIR")
  endif()
  cmake_pop_check_state()
endfunction()

option(USE_NGTCP2 "Use ngtcp2 and nghttp3 libraries for HTTP/3 support" OFF)
if(USE_NGTCP2)
  if(USE_OPENSSL)
    if(HAVE_BORINGSSL)
      find_package(NGTCP2 REQUIRED BoringSSL)
    else()
      find_package(NGTCP2 REQUIRED OpenSSL)
    endif()
    CheckQuicSupportInOpenSSL()
  elseif(USE_GNUTLS)
    # TODO add GnuTLS support as vtls library.
    find_package(NGTCP2 REQUIRED GnuTLS)
  else()
    message(FATAL_ERROR "ngtcp2 requires OpenSSL or GnuTLS")
  endif()
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
  if(CURL_USE_OPENLDAP AND USE_WIN32_LDAP)
    message(FATAL_ERROR "Cannot use USE_WIN32_LDAP and CURL_USE_OPENLDAP at the same time")
  endif()

  # Now that we know, we're not using windows LDAP...
  if(USE_WIN32_LDAP)
    check_include_file_concat("winldap.h" HAVE_WINLDAP_H)
    check_include_file_concat("winber.h"  HAVE_WINBER_H)
  else()
    # Check for LDAP
    set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
    check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP)
    check_library_exists_concat(${CMAKE_LBER_LIB} ber_init HAVE_LIBLBER)

    set(CMAKE_REQUIRED_INCLUDES_BAK ${CMAKE_REQUIRED_INCLUDES})







<







572
573
574
575
576
577
578

579
580
581
582
583
584
585
  if(CURL_USE_OPENLDAP AND USE_WIN32_LDAP)
    message(FATAL_ERROR "Cannot use USE_WIN32_LDAP and CURL_USE_OPENLDAP at the same time")
  endif()

  # Now that we know, we're not using windows LDAP...
  if(USE_WIN32_LDAP)
    check_include_file_concat("winldap.h" HAVE_WINLDAP_H)

  else()
    # Check for LDAP
    set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
    check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP)
    check_library_exists_concat(${CMAKE_LBER_LIB} ber_init HAVE_LIBLBER)

    set(CMAKE_REQUIRED_INCLUDES_BAK ${CMAKE_REQUIRED_INCLUDES})
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
    message(STATUS "LDAP needs to be enabled to support LDAPS")
    set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE)
  endif()
endif()

if(NOT CURL_DISABLE_LDAPS)
  check_include_file_concat("ldap_ssl.h" HAVE_LDAP_SSL_H)
  check_include_file_concat("ldapssl.h"  HAVE_LDAPSSL_H)
endif()

# Check for idn2
option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
if(USE_LIBIDN2)
  check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
else()
  set(HAVE_LIBIDN2 OFF)
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)
optional_dependency(ZLIB)
if(ZLIB_FOUND)
  set(HAVE_ZLIB_H ON)
  set(HAVE_LIBZ ON)







<













|




<
<
<







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
    message(STATUS "LDAP needs to be enabled to support LDAPS")
    set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE)
  endif()
endif()

if(NOT CURL_DISABLE_LDAPS)
  check_include_file_concat("ldap_ssl.h" HAVE_LDAP_SSL_H)

endif()

# Check for idn2
option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
if(USE_LIBIDN2)
  check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
else()
  set(HAVE_LIBIDN2 OFF)
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()




set(HAVE_LIBZ OFF)
set(HAVE_ZLIB_H OFF)
set(USE_ZLIB OFF)
optional_dependency(ZLIB)
if(ZLIB_FOUND)
  set(HAVE_ZLIB_H ON)
  set(HAVE_LIBZ ON)
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
if(NOT UNIX)
  check_include_file_concat("windows.h"      HAVE_WINDOWS_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)
check_include_file_concat("sys/poll.h"       HAVE_SYS_POLL_H)
check_include_file_concat("sys/resource.h"   HAVE_SYS_RESOURCE_H)
check_include_file_concat("sys/select.h"     HAVE_SYS_SELECT_H)
check_include_file_concat("sys/socket.h"     HAVE_SYS_SOCKET_H)
check_include_file_concat("sys/sockio.h"     HAVE_SYS_SOCKIO_H)
check_include_file_concat("sys/stat.h"       HAVE_SYS_STAT_H)
check_include_file_concat("sys/time.h"       HAVE_SYS_TIME_H)
check_include_file_concat("sys/types.h"      HAVE_SYS_TYPES_H)
check_include_file_concat("sys/uio.h"        HAVE_SYS_UIO_H)
check_include_file_concat("sys/un.h"         HAVE_SYS_UN_H)
check_include_file_concat("sys/utime.h"      HAVE_SYS_UTIME_H)
check_include_file_concat("sys/xattr.h"      HAVE_SYS_XATTR_H)
check_include_file_concat("alloca.h"         HAVE_ALLOCA_H)
check_include_file_concat("arpa/inet.h"      HAVE_ARPA_INET_H)
check_include_file_concat("arpa/tftp.h"      HAVE_ARPA_TFTP_H)
check_include_file_concat("assert.h"         HAVE_ASSERT_H)
check_include_file_concat("errno.h"          HAVE_ERRNO_H)
check_include_file_concat("fcntl.h"          HAVE_FCNTL_H)
check_include_file_concat("idn2.h"           HAVE_IDN2_H)
check_include_file_concat("ifaddrs.h"        HAVE_IFADDRS_H)
check_include_file_concat("io.h"             HAVE_IO_H)
check_include_file_concat("krb.h"            HAVE_KRB_H)
check_include_file_concat("libgen.h"         HAVE_LIBGEN_H)
check_include_file_concat("locale.h"         HAVE_LOCALE_H)
check_include_file_concat("net/if.h"         HAVE_NET_IF_H)
check_include_file_concat("netdb.h"          HAVE_NETDB_H)
check_include_file_concat("netinet/in.h"     HAVE_NETINET_IN_H)
check_include_file_concat("netinet/tcp.h"    HAVE_NETINET_TCP_H)
check_include_file("linux/tcp.h"      HAVE_LINUX_TCP_H)

check_include_file_concat("pem.h"            HAVE_PEM_H)
check_include_file_concat("poll.h"           HAVE_POLL_H)
check_include_file_concat("pwd.h"            HAVE_PWD_H)
check_include_file_concat("setjmp.h"         HAVE_SETJMP_H)
check_include_file_concat("signal.h"         HAVE_SIGNAL_H)
check_include_file_concat("ssl.h"            HAVE_SSL_H)

check_include_file_concat("stdbool.h"        HAVE_STDBOOL_H)
check_include_file_concat("stdint.h"         HAVE_STDINT_H)
check_include_file_concat("stdio.h"          HAVE_STDIO_H)
check_include_file_concat("stdlib.h"         HAVE_STDLIB_H)
check_include_file_concat("string.h"         HAVE_STRING_H)
check_include_file_concat("strings.h"        HAVE_STRINGS_H)
check_include_file_concat("stropts.h"        HAVE_STROPTS_H)
check_include_file_concat("termio.h"         HAVE_TERMIO_H)
check_include_file_concat("termios.h"        HAVE_TERMIOS_H)
check_include_file_concat("time.h"           HAVE_TIME_H)
check_include_file_concat("unistd.h"         HAVE_UNISTD_H)
check_include_file_concat("utime.h"          HAVE_UTIME_H)
check_include_file_concat("x509.h"           HAVE_X509_H)

check_include_file_concat("process.h"        HAVE_PROCESS_H)
check_include_file_concat("stddef.h"         HAVE_STDDEF_H)
check_include_file_concat("dlfcn.h"          HAVE_DLFCN_H)
check_include_file_concat("malloc.h"         HAVE_MALLOC_H)
check_include_file_concat("memory.h"         HAVE_MEMORY_H)
check_include_file_concat("netinet/if_ether.h" HAVE_NETINET_IF_ETHER_H)
check_include_file_concat("stdint.h"        HAVE_STDINT_H)
check_include_file_concat("sockio.h"        HAVE_SOCKIO_H)
check_include_file_concat("sys/utsname.h"   HAVE_SYS_UTSNAME_H)

check_type_size(size_t  SIZEOF_SIZE_T)
check_type_size(ssize_t  SIZEOF_SSIZE_T)
check_type_size("long long"  SIZEOF_LONG_LONG)
check_type_size("long"  SIZEOF_LONG)
check_type_size("short"  SIZEOF_SHORT)
check_type_size("int"  SIZEOF_INT)
check_type_size("__int64"  SIZEOF___INT64)
check_type_size("long double"  SIZEOF_LONG_DOUBLE)
check_type_size("time_t"  SIZEOF_TIME_T)
if(NOT HAVE_SIZEOF_SSIZE_T)
  if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
    set(ssize_t long)
  endif()
  if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
    set(ssize_t __int64)
  endif()
endif()
# off_t is sized later, after the HAVE_FILE_OFFSET_BITS test

if(HAVE_SIZEOF_LONG_LONG)
  set(HAVE_LONGLONG 1)
  set(HAVE_LL 1)
endif()

if(NOT CMAKE_CROSSCOMPILING)
  find_file(RANDOM_FILE urandom /dev)
  mark_as_advanced(RANDOM_FILE)
endif()

# Check for some functions that are used
if(HAVE_LIBWS2_32)
  set(CMAKE_REQUIRED_LIBRARIES ws2_32)
elseif(HAVE_LIBSOCKET)
  set(CMAKE_REQUIRED_LIBRARIES socket)
endif()

check_symbol_exists(fchmod        "${CURL_INCLUDES}" HAVE_FCHMOD)
check_symbol_exists(basename      "${CURL_INCLUDES}" HAVE_BASENAME)
check_symbol_exists(socket        "${CURL_INCLUDES}" HAVE_SOCKET)
check_symbol_exists(select        "${CURL_INCLUDES}" HAVE_SELECT)
check_symbol_exists(poll          "${CURL_INCLUDES}" HAVE_POLL)
check_symbol_exists(strdup        "${CURL_INCLUDES}" HAVE_STRDUP)
check_symbol_exists(strstr        "${CURL_INCLUDES}" HAVE_STRSTR)
check_symbol_exists(strtok_r      "${CURL_INCLUDES}" HAVE_STRTOK_R)
check_symbol_exists(strftime      "${CURL_INCLUDES}" HAVE_STRFTIME)
check_symbol_exists(uname         "${CURL_INCLUDES}" HAVE_UNAME)
check_symbol_exists(strcasecmp    "${CURL_INCLUDES}" HAVE_STRCASECMP)
check_symbol_exists(stricmp       "${CURL_INCLUDES}" HAVE_STRICMP)
check_symbol_exists(strcmpi       "${CURL_INCLUDES}" HAVE_STRCMPI)
check_symbol_exists(strncmpi      "${CURL_INCLUDES}" HAVE_STRNCMPI)
check_symbol_exists(alarm         "${CURL_INCLUDES}" HAVE_ALARM)
if(NOT HAVE_STRNCMPI)
  set(HAVE_STRCMPI)
endif()
check_symbol_exists(getppid       "${CURL_INCLUDES}" HAVE_GETPPID)
check_symbol_exists(utimes        "${CURL_INCLUDES}" HAVE_UTIMES)

check_symbol_exists(gettimeofday  "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
check_symbol_exists(inet_addr     "${CURL_INCLUDES}" HAVE_INET_ADDR)
check_symbol_exists(closesocket   "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
check_symbol_exists(sigsetjmp     "${CURL_INCLUDES}" HAVE_SIGSETJMP)
check_symbol_exists(getpass_r     "${CURL_INCLUDES}" HAVE_GETPASS_R)
check_symbol_exists(getpwuid      "${CURL_INCLUDES}" HAVE_GETPWUID)
check_symbol_exists(getpwuid_r    "${CURL_INCLUDES}" HAVE_GETPWUID_R)
check_symbol_exists(geteuid       "${CURL_INCLUDES}" HAVE_GETEUID)
check_symbol_exists(usleep        "${CURL_INCLUDES}" HAVE_USLEEP)
check_symbol_exists(utime         "${CURL_INCLUDES}" HAVE_UTIME)
check_symbol_exists(gmtime_r      "${CURL_INCLUDES}" HAVE_GMTIME_R)
check_symbol_exists(localtime_r   "${CURL_INCLUDES}" HAVE_LOCALTIME_R)

check_symbol_exists(gethostbyname   "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME)
check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)

check_symbol_exists(signal        "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
check_symbol_exists(SIGALRM       "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
  set(HAVE_SIGNAL 1)
endif()
check_symbol_exists(uname          "${CURL_INCLUDES}" HAVE_UNAME)
check_symbol_exists(strtoll        "${CURL_INCLUDES}" HAVE_STRTOLL)
check_symbol_exists(_strtoi64      "${CURL_INCLUDES}" HAVE__STRTOI64)
check_symbol_exists(strerror_r     "${CURL_INCLUDES}" HAVE_STRERROR_R)
check_symbol_exists(siginterrupt   "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
check_symbol_exists(getaddrinfo    "${CURL_INCLUDES}" HAVE_GETADDRINFO)
check_symbol_exists(freeaddrinfo   "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
check_symbol_exists(pipe           "${CURL_INCLUDES}" HAVE_PIPE)
check_symbol_exists(ftruncate      "${CURL_INCLUDES}" HAVE_FTRUNCATE)
check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
check_symbol_exists(getpeername    "${CURL_INCLUDES}" HAVE_GETPEERNAME)
check_symbol_exists(getsockname    "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
check_symbol_exists(getrlimit      "${CURL_INCLUDES}" HAVE_GETRLIMIT)
check_symbol_exists(setlocale      "${CURL_INCLUDES}" HAVE_SETLOCALE)
check_symbol_exists(setmode        "${CURL_INCLUDES}" HAVE_SETMODE)
check_symbol_exists(setrlimit      "${CURL_INCLUDES}" HAVE_SETRLIMIT)
check_symbol_exists(fcntl          "${CURL_INCLUDES}" HAVE_FCNTL)
check_symbol_exists(ioctl          "${CURL_INCLUDES}" HAVE_IOCTL)
check_symbol_exists(setsockopt     "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
check_symbol_exists(inet_pton      "${CURL_INCLUDES}" HAVE_INET_PTON)

check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
if(HAVE_FSETXATTR)
  foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6)
    curl_internal_test(${CURL_TEST})







<












<



<








<








<





>


<









<



<
<
<
<

<






<


<













<


















<

<

<
<



<

<
<
<




<






<


<

<







<








<







<
<
<







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
if(NOT UNIX)
  check_include_file_concat("windows.h"      HAVE_WINDOWS_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("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)
check_include_file_concat("sys/poll.h"       HAVE_SYS_POLL_H)
check_include_file_concat("sys/resource.h"   HAVE_SYS_RESOURCE_H)
check_include_file_concat("sys/select.h"     HAVE_SYS_SELECT_H)
check_include_file_concat("sys/socket.h"     HAVE_SYS_SOCKET_H)
check_include_file_concat("sys/sockio.h"     HAVE_SYS_SOCKIO_H)
check_include_file_concat("sys/stat.h"       HAVE_SYS_STAT_H)
check_include_file_concat("sys/time.h"       HAVE_SYS_TIME_H)
check_include_file_concat("sys/types.h"      HAVE_SYS_TYPES_H)

check_include_file_concat("sys/un.h"         HAVE_SYS_UN_H)
check_include_file_concat("sys/utime.h"      HAVE_SYS_UTIME_H)
check_include_file_concat("sys/xattr.h"      HAVE_SYS_XATTR_H)

check_include_file_concat("arpa/inet.h"      HAVE_ARPA_INET_H)
check_include_file_concat("arpa/tftp.h"      HAVE_ARPA_TFTP_H)
check_include_file_concat("assert.h"         HAVE_ASSERT_H)
check_include_file_concat("errno.h"          HAVE_ERRNO_H)
check_include_file_concat("fcntl.h"          HAVE_FCNTL_H)
check_include_file_concat("idn2.h"           HAVE_IDN2_H)
check_include_file_concat("ifaddrs.h"        HAVE_IFADDRS_H)
check_include_file_concat("io.h"             HAVE_IO_H)

check_include_file_concat("libgen.h"         HAVE_LIBGEN_H)
check_include_file_concat("locale.h"         HAVE_LOCALE_H)
check_include_file_concat("net/if.h"         HAVE_NET_IF_H)
check_include_file_concat("netdb.h"          HAVE_NETDB_H)
check_include_file_concat("netinet/in.h"     HAVE_NETINET_IN_H)
check_include_file_concat("netinet/tcp.h"    HAVE_NETINET_TCP_H)
check_include_file("linux/tcp.h"      HAVE_LINUX_TCP_H)


check_include_file_concat("poll.h"           HAVE_POLL_H)
check_include_file_concat("pwd.h"            HAVE_PWD_H)
check_include_file_concat("setjmp.h"         HAVE_SETJMP_H)
check_include_file_concat("signal.h"         HAVE_SIGNAL_H)
check_include_file_concat("ssl.h"            HAVE_SSL_H)
check_include_file_concat("stdatomic.h"      HAVE_STDATOMIC_H)
check_include_file_concat("stdbool.h"        HAVE_STDBOOL_H)
check_include_file_concat("stdint.h"         HAVE_STDINT_H)

check_include_file_concat("stdlib.h"         HAVE_STDLIB_H)
check_include_file_concat("string.h"         HAVE_STRING_H)
check_include_file_concat("strings.h"        HAVE_STRINGS_H)
check_include_file_concat("stropts.h"        HAVE_STROPTS_H)
check_include_file_concat("termio.h"         HAVE_TERMIO_H)
check_include_file_concat("termios.h"        HAVE_TERMIOS_H)
check_include_file_concat("time.h"           HAVE_TIME_H)
check_include_file_concat("unistd.h"         HAVE_UNISTD_H)
check_include_file_concat("utime.h"          HAVE_UTIME_H)


check_include_file_concat("process.h"        HAVE_PROCESS_H)
check_include_file_concat("stddef.h"         HAVE_STDDEF_H)




check_include_file_concat("stdint.h"        HAVE_STDINT_H)

check_include_file_concat("sys/utsname.h"   HAVE_SYS_UTSNAME_H)

check_type_size(size_t  SIZEOF_SIZE_T)
check_type_size(ssize_t  SIZEOF_SSIZE_T)
check_type_size("long long"  SIZEOF_LONG_LONG)
check_type_size("long"  SIZEOF_LONG)

check_type_size("int"  SIZEOF_INT)
check_type_size("__int64"  SIZEOF___INT64)

check_type_size("time_t"  SIZEOF_TIME_T)
if(NOT HAVE_SIZEOF_SSIZE_T)
  if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
    set(ssize_t long)
  endif()
  if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
    set(ssize_t __int64)
  endif()
endif()
# off_t is sized later, after the HAVE_FILE_OFFSET_BITS test

if(HAVE_SIZEOF_LONG_LONG)
  set(HAVE_LONGLONG 1)

endif()

if(NOT CMAKE_CROSSCOMPILING)
  find_file(RANDOM_FILE urandom /dev)
  mark_as_advanced(RANDOM_FILE)
endif()

# Check for some functions that are used
if(HAVE_LIBWS2_32)
  set(CMAKE_REQUIRED_LIBRARIES ws2_32)
elseif(HAVE_LIBSOCKET)
  set(CMAKE_REQUIRED_LIBRARIES socket)
endif()

check_symbol_exists(fchmod        "${CURL_INCLUDES}" HAVE_FCHMOD)
check_symbol_exists(basename      "${CURL_INCLUDES}" HAVE_BASENAME)
check_symbol_exists(socket        "${CURL_INCLUDES}" HAVE_SOCKET)
check_symbol_exists(select        "${CURL_INCLUDES}" HAVE_SELECT)

check_symbol_exists(strdup        "${CURL_INCLUDES}" HAVE_STRDUP)

check_symbol_exists(strtok_r      "${CURL_INCLUDES}" HAVE_STRTOK_R)


check_symbol_exists(strcasecmp    "${CURL_INCLUDES}" HAVE_STRCASECMP)
check_symbol_exists(stricmp       "${CURL_INCLUDES}" HAVE_STRICMP)
check_symbol_exists(strcmpi       "${CURL_INCLUDES}" HAVE_STRCMPI)

check_symbol_exists(alarm         "${CURL_INCLUDES}" HAVE_ALARM)



check_symbol_exists(getppid       "${CURL_INCLUDES}" HAVE_GETPPID)
check_symbol_exists(utimes        "${CURL_INCLUDES}" HAVE_UTIMES)

check_symbol_exists(gettimeofday  "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)

check_symbol_exists(closesocket   "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
check_symbol_exists(sigsetjmp     "${CURL_INCLUDES}" HAVE_SIGSETJMP)
check_symbol_exists(getpass_r     "${CURL_INCLUDES}" HAVE_GETPASS_R)
check_symbol_exists(getpwuid      "${CURL_INCLUDES}" HAVE_GETPWUID)
check_symbol_exists(getpwuid_r    "${CURL_INCLUDES}" HAVE_GETPWUID_R)
check_symbol_exists(geteuid       "${CURL_INCLUDES}" HAVE_GETEUID)

check_symbol_exists(utime         "${CURL_INCLUDES}" HAVE_UTIME)
check_symbol_exists(gmtime_r      "${CURL_INCLUDES}" HAVE_GMTIME_R)



check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)

check_symbol_exists(signal        "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
check_symbol_exists(SIGALRM       "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
  set(HAVE_SIGNAL 1)
endif()

check_symbol_exists(strtoll        "${CURL_INCLUDES}" HAVE_STRTOLL)
check_symbol_exists(_strtoi64      "${CURL_INCLUDES}" HAVE__STRTOI64)
check_symbol_exists(strerror_r     "${CURL_INCLUDES}" HAVE_STRERROR_R)
check_symbol_exists(siginterrupt   "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
check_symbol_exists(getaddrinfo    "${CURL_INCLUDES}" HAVE_GETADDRINFO)
check_symbol_exists(freeaddrinfo   "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
check_symbol_exists(pipe           "${CURL_INCLUDES}" HAVE_PIPE)
check_symbol_exists(ftruncate      "${CURL_INCLUDES}" HAVE_FTRUNCATE)

check_symbol_exists(getpeername    "${CURL_INCLUDES}" HAVE_GETPEERNAME)
check_symbol_exists(getsockname    "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
check_symbol_exists(getrlimit      "${CURL_INCLUDES}" HAVE_GETRLIMIT)
check_symbol_exists(setlocale      "${CURL_INCLUDES}" HAVE_SETLOCALE)
check_symbol_exists(setmode        "${CURL_INCLUDES}" HAVE_SETMODE)
check_symbol_exists(setrlimit      "${CURL_INCLUDES}" HAVE_SETRLIMIT)



check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
check_symbol_exists(inet_pton      "${CURL_INCLUDES}" HAVE_INET_PTON)

check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
if(HAVE_FSETXATTR)
  foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6)
    curl_internal_test(${CURL_TEST})
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
    HAVE_IN_ADDR_T
    HAVE_BOOL_T
    STDC_HEADERS
    HAVE_GETADDRINFO
    HAVE_FILE_OFFSET_BITS
    HAVE_VARIADIC_MACROS_C99
    HAVE_VARIADIC_MACROS_GCC

    )
  curl_internal_test(${CURL_TEST})
endforeach()

if(HAVE_FILE_OFFSET_BITS)
  set(_FILE_OFFSET_BITS 64)
  set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
endif()
check_type_size("off_t"  SIZEOF_OFF_T)

# include this header to get the type
set(CMAKE_REQUIRED_INCLUDES "${CURL_SOURCE_DIR}/include")
set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h")
check_type_size("curl_off_t"  SIZEOF_CURL_OFF_T)
set(CMAKE_EXTRA_INCLUDE_FILES "")














set(CMAKE_REQUIRED_FLAGS)

foreach(CURL_TEST
    HAVE_GLIBC_STRERROR_R
    HAVE_POSIX_STRERROR_R
    )







>















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







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
    HAVE_IN_ADDR_T
    HAVE_BOOL_T
    STDC_HEADERS
    HAVE_GETADDRINFO
    HAVE_FILE_OFFSET_BITS
    HAVE_VARIADIC_MACROS_C99
    HAVE_VARIADIC_MACROS_GCC
    HAVE_ATOMIC
    )
  curl_internal_test(${CURL_TEST})
endforeach()

if(HAVE_FILE_OFFSET_BITS)
  set(_FILE_OFFSET_BITS 64)
  set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
endif()
check_type_size("off_t"  SIZEOF_OFF_T)

# include this header to get the type
set(CMAKE_REQUIRED_INCLUDES "${CURL_SOURCE_DIR}/include")
set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h")
check_type_size("curl_off_t"  SIZEOF_CURL_OFF_T)
set(CMAKE_EXTRA_INCLUDE_FILES "")

if(WIN32)
  # detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT
  curl_internal_test(HAVE_WIN32_WINNT)
  if(HAVE_WIN32_WINNT)
    string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" OUTPUT "${OUTPUT}")
    string(REGEX REPLACE ".*_WIN32_WINNT=" "" OUTPUT "${OUTPUT}")
    math(EXPR HAVE_WIN32_WINNT "${OUTPUT}" OUTPUT_FORMAT DECIMAL)
    message(STATUS "Found _WIN32_WINNT=${OUTPUT} (${HAVE_WIN32_WINNT})")
  endif()
  # avoid storing HAVE_WIN32_WINNT in CMake cache
  unset(HAVE_WIN32_WINNT CACHE)
endif()

set(CMAKE_REQUIRED_FLAGS)

foreach(CURL_TEST
    HAVE_GLIBC_STRERROR_R
    HAVE_POSIX_STRERROR_R
    )
1323
1324
1325
1326
1327
1328
1329


1330
1331
1332
1333
1334
1335
1336
    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)







>
>







1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
    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()

  list(APPEND CURL_LIBS "bcrypt")
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)
1463
1464
1465
1466
1467
1468
1469



1470
1471
1472
1473
1474
1475
1476
_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))
_add_if("unicode"       ENABLE_UNICODE)



string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
message(STATUS "Enabled features: ${SUPPORT_FEATURES}")

# Clear list and try to detect available protocols
set(_items)
_add_if("HTTP"          NOT CURL_DISABLE_HTTP)
_add_if("HTTPS"         NOT CURL_DISABLE_HTTP AND SSL_ENABLED)







>
>
>







1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
_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))
_add_if("unicode"       ENABLE_UNICODE)
_add_if("threadsafe"    HAVE_ATOMIC OR (WIN32 AND
                        HAVE_WIN32_WINNT GREATER_EQUAL 0x600))
_add_if("PSL"           USE_LIBPSL)
string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
message(STATUS "Enabled features: ${SUPPORT_FEATURES}")

# Clear list and try to detect available protocols
set(_items)
_add_if("HTTP"          NOT CURL_DISABLE_HTTP)
_add_if("HTTPS"         NOT CURL_DISABLE_HTTP AND SSL_ENABLED)
Changes to jni/curl/Makefile.in.
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







166
167
168
169
170
171
172
173

174
175
176
177
178
179
180
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
476
477
478
479
480
481
482

483
484
485
486
487
488
489
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
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
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

curl and libcurl 7.84.0

 Public curl releases:         209
 Command line options:         248
 curl_easy_setopt() options:   297
 Public functions in libcurl:  88
 Contributors:                 2652

This release includes the following changes:

 o curl: add --rate to set max request rate per time unit [69]
 o curl: deprecate --random-file and --egd-file [12]
 o curl_version_info: add CURL_VERSION_THREADSAFE [100]
 o CURLINFO_CAPATH/CAINFO: get the default CA paths from libcurl [9]
 o lib: make curl_global_init() threadsafe when possible [101]
 o libssh2: add CURLOPT_SSH_HOSTKEYFUNCTION [78]
 o opts: deprecate RANDOM_FILE and EGDSOCKET [13]
 o socks: support unix sockets for socks proxy [2]

This release includes the following bugfixes:

 o aws-sigv4: fix potentional NULL pointer arithmetic [48]
 o bindlocal: don't use a random port if port number would wrap [14]
 o c-hyper: mark status line as status for Curl_client_write() [58]
 o ci: avoid `cmake -Hpath` [114]
 o CI: bump FreeBSD 13.0 to 13.1 [127]





 o ci: update github actions [36]

 o cmake: add libpsl support [3]
 o cmake: do not add libcurl.rc to the static libcurl library [53]
 o cmake: enable curl.rc for all Windows targets [55]


 o cmake: fix detecting libidn2 [56]
 o cmake: support adding a suffix to the OS value [54]
 o configure: skip libidn2 detection when winidn is used [89]
 o configure: use the SED value to invoke sed [28]








 o configure: warn about rustls being experimental [103]
 o content_encoding: return error on too many compression steps [106]




 o cookie: address secure domain overlay [7]

 o cookie: apply limits [83]
 o copyright.pl: parse and use .reuse/dep5 for skips [105]
 o copyright: make repository REUSE compliant [119]
 o curl.1: add a few see also --tls-max [52]
 o curl.1: mention exit code zero too [44]
 o curl: re-enable --no-remote-name [31]

 o curl_easy_pause.3: remove explanation of progress function [97]
 o curl_getdate.3: document that some illegal dates pass through [34]
 o Curl_parsenetrc: don't access local pwbuf outside of scope [27]
 o curl_url_set.3: clarify by default using known schemes only [120]
 o CURLOPT_ALTSVC.3: document the file format [118]
 o CURLOPT_FILETIME.3: fix the protocols this works with
 o CURLOPT_HTTPHEADER.3: improve comment in example [66]
 o CURLOPT_NETRC.3: document the .netrc file format









 o CURLOPT_PORT.3: We discourage using this option [92]
 o CURLOPT_RANGE.3: remove ranged upload advice [99]
 o digest: added detection of more syntax error in server headers [81]
 o digest: tolerate missing "realm" [80]
 o digest: unquote realm and nonce before processing [82]
 o DISABLED: disable 1021 for hyper again


 o docs/cmdline-opts: add copyright and license identifier to each file [112]
 o docs/CONTRIBUTE.md: document the 'needs-votes' concept [79]
 o docs: clarify data replacement policy for MIME API [16]
 o doh: remove UNITTEST macro definition [67]
 o examples/crawler.c: use the curl license [73]

 o examples: remove fopen.c and rtsp.c [76]
 o FAQ: Clarify Windows double quote usage [42]
 o fopen: add Curl_fopen() for better overwriting of files [72]
 o ftp: restore protocol state after http proxy CONNECT [110]

 o ftp: when failing to do a secure GSSAPI login, fail hard [62]
 o GHA/hyper: enable debug in the build
 o gssapi: improve handling of errors from gss_display_status [45]
 o gssapi: initialize gss_buffer_desc strings


 o headers api: remove EXPERIMENTAL tag [35]
 o http2: always debug print stream id in decimal with %u [46]
 o http2: reject overly many push-promise headers [63]
 o http: restore header folding behavior [64]


 o hyper: use 'alt-used' [71]
 o krb5: return error properly on decode errors [107]
 o lib: make more protocol specific struct fields #ifdefed [84]
 o libcurl-security.3: add "Secrets in memory" [30]
 o libcurl-security.3: document CRLF header injection [98]
 o libssh: skip the fake-close when libssh does the right thing [102]
 o links: update dead links to the curl-wiki [21]
 o log2changes: do not indent empty lines [ci skip] [37]





 o macos9: remove partial support [22]







 o Makefile.am: fix portability issues [1]




 o Makefile.m32: delete obsolete options, improve -On [ci skip] [65]
 o Makefile.m32: delete two obsolete OpenSSL options [ci skip] [39]
 o Makefile.m32: stop forcing XP target with ipv6 enabled [ci skip] [116]
 o max-time.d: clarify max-time sets max transfer time [70]
 o mprintf: ignore clang non-literal format string [19]
 o netrc: check %USERPROFILE% as well on Windows [77]
 o netrc: support quoted strings [33]
 o ngtcp2: allow curl to send larger UDP datagrams [29]
 o ngtcp2: correct use of ngtcp2 and nghttp3 signed integer types [25]
 o ngtcp2: enable Linux GSO [91]
 o ngtcp2: extend QUIC transport parameters buffer [4]
 o ngtcp2: fix alert_read_func return value [26]
 o ngtcp2: fix typo in preprocessor condition [121]
 o ngtcp2: handle error from ngtcp2_conn_submit_crypto_data [5]
 o ngtcp2: send appropriate connection close error code [6]
 o ngtcp2: support boringssl crypto backend [17]
 o ngtcp2: use helper funcs to simplify TLS handshake integration [68]
 o ntlm: provide a fixed fake host name [32]

 o projects: fix third-party SSL library build paths for Visual Studio [125]
 o quic: add Curl_quic_idle [18]
 o quiche: support ca-fallback [49]
 o rand: stop detecting /dev/urandom in cross-builds [113]
 o remote-name.d: mention --output-dir [88]
 o runtests.pl: add the --repeat parameter to the --help output [43]

 o runtests: fix skipping tests not done event-based [95]
 o runtests: skip starting the ssh server if user name is lacking [104]
 o scripts/copyright.pl: fix the exclusion to not ignore man pages [75]


 o sectransp: check for a function defined when __BLOCKS__ is undefined [20]








 o select: return error from "lethal" poll/select errors [93]
 o server/sws: support spaces in the HTTP request path

 o speed-limit/time.d: mention these affect transfers in either direction [74]
 o strcase: some optimisations [8]



 o test 2081: add a valid reply for the second request [60]
 o test 675: add missing CR so the test passes when run through Privoxy [61]
 o test414: add the '--resolve' keyword [23]
 o test681: verify --no-remote-name [90]
 o tests 266, 116 and 1540: add a small write delay
 o tests/data/test1501: kill ftp server after slow LIST response [59]
 o tests/getpart: fix getpartattr to work with "data" and "data2"
 o tests/server/sws.c: change the HTTP writedelay unit to milliseconds [47]
 o test{440,441,493,977}: add "HTTP proxy" keywords [40]






 o tool_getparam: fix --parallel-max maximum value constraint [51]
 o tool_operate: make sure --fail-with-body works with --retry [24]
 o transfer: fix potential NULL pointer dereference [15]
 o transfer: maintain --path-as-is after redirects [96]

 o transfer: upload performance; avoid tiny send [124]



 o url: free old conn better on reuse [41]

 o url: remove redundant #ifdefs in allocate_conn()
 o url: URL encode the path when extracted, if spaces were set

 o urlapi: make curl_url_set(url, CURLUPART_URL, NULL, 0) clear all parts [126]
 o urlapi: support CURLU_URLENCODE for curl_url_get()


 o urldata: reduce size of a few struct fields [86]
 o urldata: remove three unused booleans from struct UserDefined [87]
 o urldata: store tcp_keepidle and tcp_keepintvl as ints [85]
 o version: allow stricmp() for sorting the feature list [57]
 o vtls: make curl_global_sslset thread-safe [94]
 o wolfssh.h: removed [10]
 o wolfssl: correct the failf() message when a handle can't be made [38]
 o wolfSSL: explicitly use compatibility layer [11]
 o x509asn1: mark msnprintf return as unchecked [50]

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:

  Andrea Pappacoda, Balakrishnan Balasubramanian, Boris Verkhovskiy,

  Carlo Alberto, Christian Weisgerber, Dan Fandrich, Daniel Gustafsson,
  Daniel Stenberg, Egor Pugin, Emanuele Torre, Emil Engler, Evgeny Grin,
  Fabian Keil, Frank Gevaerts, Frazer Smith, Gisle Vanem, Glenn Strauss,


  Gregor Jasny, Harry Sintonen, Illarion Taev, ImpatientHippo on GitHub,

  Jakub Bochenski, Kamil Dudka, Karlson2k on github, KotlinIsland on github,
  Ladar Levison, Marcel Raad, Marc Hörsken, Marcus T, Max Mehl, michael musset,


  Nick Zitzmann, Nuru on github, Patrick Monnerat, Petr Pisar, Philip H,
  Pierrick Charron, Ray Satiro, Ricardo M. Correia, Simon Berger,


  Stefan Eissing, Steve Holme, Tatsuhiro Tsujikawa, Thomas Guillem, Tom Eccles,
  Viktor Szakats, Vincent Torri, vvb2060 on github, Willem Hoek,
  Wolf Vollprecht, Elms

  (51 contributors)

References to bug reports and discussions on issues:

 [1] = https://curl.se/mail/lib-2022-05/0024.html
 [2] = https://curl.se/bug/?i=8668
 [3] = https://curl.se/bug/?i=8865
 [4] = https://curl.se/bug/?i=8872
 [5] = https://curl.se/bug/?i=8871
 [6] = https://curl.se/bug/?i=8870
 [7] = https://hackerone.com/reports/1560324
 [8] = https://curl.se/bug/?i=8875
 [9] = https://curl.se/bug/?i=8888
 [10] = https://curl.se/bug/?i=8863
 [11] = https://curl.se/bug/?i=8864
 [12] = https://curl.se/bug/?i=8670
 [13] = https://curl.se/bug/?i=8670
 [14] = https://curl.se/bug/?i=8862
 [15] = https://curl.se/bug/?i=8857
 [16] = https://curl.se/bug/?i=8860
 [17] = https://curl.se/bug/?i=8789
 [18] = https://curl.se/bug/?i=8698
 [19] = https://curl.se/bug/?i=8740
 [20] = https://curl.se/bug/?i=8846
 [21] = https://curl.se/bug/?i=8897
 [22] = https://curl.se/bug/?i=8836
 [23] = https://curl.se/bug/?i=8959
 [24] = https://curl.se/bug/?i=8845
 [25] = https://curl.se/bug/?i=8851
 [26] = https://curl.se/bug/?i=8852
 [27] = https://curl.se/bug/?i=8850
 [28] = https://curl.se/bug/?i=8891
 [29] = https://curl.se/bug/?i=8883
 [30] = https://curl.se/bug/?i=8881
 [31] = https://curl.se/bug/?i=8931










 [32] = https://curl.se/bug/?i=8859
 [33] = https://curl.se/bug/?i=8908
 [34] = https://curl.se/bug/?i=8938
 [35] = https://curl.se/bug/?i=8900
 [36] = https://curl.se/bug/?i=8843
 [37] = https://curl.se/bug/?i=8887
 [38] = https://curl.se/bug/?i=8885
 [39] = https://curl.se/bug/?i=8884
 [40] = https://curl.se/bug/?i=8959
 [41] = https://curl.se/bug/?i=8841
 [42] = https://curl.se/bug/?i=8823
 [43] = https://curl.se/bug/?i=8959
 [44] = https://curl.se/bug/?i=8833
 [45] = https://curl.se/bug/?i=8832
 [46] = https://curl.se/bug/?i=8808
 [47] = https://curl.se/bug/?i=8827
 [48] = https://curl.se/bug/?i=8814
 [49] = https://curl.se/bug/?i=8696
 [50] = https://curl.se/bug/?i=8831
 [51] = https://curl.se/bug/?i=8930
 [52] = https://curl.se/bug/?i=8929
 [53] = https://curl.se/bug/?i=8918
 [54] = https://curl.se/bug/?i=8919
 [55] = https://curl.se/bug/?i=8918
 [56] = https://curl.se/bug/?i=8917
 [57] = https://curl.se/bug/?i=8916
 [58] = https://curl.se/bug/?i=8894
 [59] = https://curl.se/bug/?i=8907
 [60] = https://curl.se/bug/?i=8959




















 [61] = https://curl.se/bug/?i=8959
 [62] = https://hackerone.com/reports/1590102
 [63] = https://hackerone.com/reports/1589847
 [64] = https://curl.se/bug/?i=8844
 [65] = https://curl.se/bug/?i=8904
 [66] = https://curl.se/bug/?i=9025
 [67] = https://curl.se/bug/?i=8902
 [68] = https://curl.se/bug/?i=8968
 [69] = https://curl.se/bug/?i=8671
 [70] = https://curl.se/bug/?i=8877
 [71] = https://curl.se/bug/?i=8898
 [72] = https://curl.se/docs/CVE-2022-32207.html
 [73] = https://curl.se/bug/?i=8950
 [74] = https://curl.se/bug/?i=8948
 [75] = https://curl.se/bug/?i=8952
 [76] = https://curl.se/bug/?i=8949
 [77] = https://curl.se/bug/?i=8855
 [78] = https://curl.se/bug/?i=7959
 [79] = https://curl.se/bug/?i=8910
 [80] = https://curl.se/bug/?i=8912
 [81] = https://curl.se/bug/?i=8912
 [82] = https://curl.se/bug/?i=8912
 [83] = https://curl.se/docs/CVE-2022-32205.html
 [84] = https://curl.se/bug/?i=8944
 [85] = https://curl.se/bug/?i=8940
 [86] = https://curl.se/bug/?i=8940
 [87] = https://curl.se/bug/?i=8940
 [88] = https://curl.se/bug/?i=8945
 [89] = https://curl.se/bug/?i=8934
 [90] = https://curl.se/bug/?i=8942










 [91] = https://curl.se/bug/?i=8909
 [92] = https://curl.se/bug/?i=8941
 [93] = https://curl.se/bug/?i=8921
 [94] = https://curl.se/bug/?i=9016
 [95] = https://curl.se/bug/?i=8977
 [96] = https://curl.se/bug/?i=8974
 [97] = https://curl.se/bug/?i=9015
 [98] = https://curl.se/bug/?i=8964
 [99] = https://curl.se/bug/?i=8969
 [100] = https://curl.se/bug/?i=8680
 [101] = https://curl.se/bug/?i=8680
 [102] = https://curl.se/bug/?i=9021
 [103] = https://curl.se/bug/?i=9019
 [104] = https://curl.se/bug/?i=9013


 [105] = https://curl.se/bug/?i=9006
 [106] = https://curl.se/docs/CVE-2022-32206.html



 [107] = https://curl.se/docs/CVE-2022-32208.html
 [110] = https://curl.se/bug/?i=8737
 [112] = https://curl.se/bug/?i=9002
 [113] = https://curl.se/bug/?i=9038
 [114] = https://curl.se/bug/?i=9008
 [116] = https://curl.se/bug/?i=9035
 [118] = https://curl.se/bug/?i=9033
 [119] = https://curl.se/bug/?i=8869
 [120] = https://curl.se/bug/?i=8994
 [121] = https://curl.se/bug/?i=8981
 [124] = https://curl.se/bug/?i=8965

 [125] = https://curl.se/bug/?i=8991
 [126] = https://curl.se/bug/?i=9028
 [127] = https://curl.se/bug/?i=8815

|

|

|

|



|
|
<
<
<
|
<
<



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








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



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



13


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35


36
37
38
39
40
41
42
43
44

45
46
47
48
49
50
51

52
53
54
55
56
57







58
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
curl and libcurl 7.85.0

 Public curl releases:         210
 Command line options:         248
 curl_easy_setopt() options:   299
 Public functions in libcurl:  88
 Contributors:                 2690

This release includes the following changes:

 o quic: add support via wolfSSL [142]
 o schannel: Add TLS 1.3 support [96]



 o setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR [30]



This release includes the following bugfixes:

 o amigaos: fix threaded resolver on AmigaOS 4.x [133]
 o amissl: allow AmiSSL to be used with AmigaOS 4.x builds [115]
 o amissl: make AmiSSL v5 a minimum requirement [117]
 o asyn-ares: make a single alloc out of hostname + async data [123]
 o asyn-thread: fix socket leak on OOM [128]
 o asyn-thread: make getaddrinfo_complete return CURLcode [53]
 o base64: base64url encoding has no padding [41]
 o BUGS.md: improve language [62]
 o build: improve OS string in CMake and `config-win32.h` [15]
 o cert.d: clarify that escape character works for file paths [161]
 o cirrus.yml: replace py38-pip with py39-pip [63]
 o cirrus/freebsd-ci: bootstrap the pip installer [104]
 o cmake: add detection of threadsafe feature [163]
 o cmake: do not force Windows target versions [28]
 o cmake: fix build for mingw cross compile [33]
 o cmake: link curl to its dependencies with PRIVATE [57]
 o cmake: remove APPEND in export(TARGETS) [58]
 o cmake: set feature PSL if present [168]
 o cmake: support ngtcp2 boringssl backend [18]


 o cmdline-opts/gen.pl: improve performance [97]
 o config: remove the check for and use of SIZEOF_SHORT [129]
 o configure: -pthread not available on AmigaOS 4.x [118]
 o configure: check for the stdatomic.h header in configure [7]
 o configure: fix --disable-headers-api [55]
 o configure: fix broken m4 syntax in TLS options [145]
 o configure: fixup bsdsocket detection code for AmigaOS 4.x [110]
 o configure: if asked to use TLS, fail if no TLS lib was detected [156]
 o configure: introduce CURL_SIZEOF [130]

 o connect: add quic connection information [100]
 o connect: close the happy eyeballs loser connection when using QUIC [109]
 o connect: revert the use of IP*_RECVERR [102]
 o connect: set socktype/protocol correctly [114]
 o cookie: reject cookies with "control bytes" [152]
 o cookie: treat a blank domain in Set-Cookie: as non-existing [40]
 o cookie: use %zu to infof() for size_t values [26]

 o curl-compilers.m4: make icc use -diag* options and disable two warnings [84]
 o curl-config: quote directories with potential space [132]
 o curl-confopts: remove leftover AC_REQUIREs [91]
 o curl-functions.m4: check whether atomics can link [86]
 o curl-wolfssl.m4: add options header when building test code [87]
 o curl.h: CURLE_CONV_FAILED is obsoleted [4]







 o curl.h: include <sys/select.h> on SunOS [151]
 o curl: output warning when a cookie is dropped due to size [5]
 o curl: writeout: fix repeated header outputs [47]
 o Curl_close: call Curl_resolver_cancel to avoid memory-leak [124]
 o curl_easy_header: Add CURLH_PSEUDO to sanity check [94]
 o curl_mime_data.3: polish the wording [6]
 o curl_multi_timeout.3: clarify usage [48]
 o CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples [121]
 o CURLOPT_BUFFERSIZE.3: add upload buffersize to see also [159]
 o CURLOPT_CONNECT_ONLY.3: clarify multi API use [64]
 o CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name [16]
 o digest: fix memory leak, fix not quoted 'opaque' [66]
 o digest: fix missing increment of 'nc' value for auth-int [39]
 o digest: pass over leading spaces in qop values [119]

 o digest: reject broken header with session protocol but without qop [120]
 o docs/cmdline-opts/gen.pl: encode leading single and double quotes [138]
 o docs/cmdline-opts: fix example and categories for --form-escape [125]
 o docs/cmdline: mark fail and fail-with-body as mutually exclusive [98]
 o docs: add dns category to --resolve [95]


 o docs: explain curl_easy_escape/unescape curl handle is ignored [23]
 o docs: remove him/her/he/she from documentation [103]
 o doh: move doh related struct definitions to doh.h [45]

 o doh: use https protocol by default [51]
 o easy_lock.h: include sched.h if available to fix build [13]
 o easy_lock.h: use __asm__ instead of asm to fix build [11]
 o easy_lock: fix build for mingw [34]
 o easy_lock: fix build with icc [54]
 o easy_lock: fix the #ifdef conditional for ia32_pause [8]
 o easy_lock: switch to using atomic_int instead of bool [9]
 o easyoptions: fix icc warning [42]
 o escape: remove outdated comment [25]

 o examples/curlx.c: remove [150]

 o file: add handling of native AmigaOS paths [108]
 o file: fix icc enumerated type mixed with another type warning [92]
 o ftp: use a correct expire ID for timer expiry [88]
 o getinfo: return better error on NULL as first argument [21]

 o GHA: add two Intel compiler CI jobs [85]

 o GHA: move libressl CI from zuul to GitHub [144]
 o gha: move over ngtcp2-gnutls CI job from zuul [162]
 o GHA: mv CI torture test from Zuul [135]
 o h2h3: fix overriding the 'TE: Trailers' header [43]
 o hostip: resolve *.localhost to 127.0.0.1/::1 [127]
 o HTTP3.md: update to msh3 v0.4.0 [126]
 o http: typecast the httpreq assignment to avoid icc compiler warning [76]
 o http_aws_sigv4.c: remove two unusued includes [36]
 o http_chunks: remove an assign + typecast [82]
 o hyper: customize test1274 to how hyper unfolds headers [131]
 o hyper: enable obs-folded multiline headers [101]
 o hyper: use wakers for curl pause/resume [2]
 o imap: use ISALNUM() for alphanumeric checks [134]
 o ldap: adapt to conn->port now being an 'int' [106]
 o lib/curl_path.c: add ISC to license expression [1]
 o lib3026: reduce the number of threads to 100 [44]
 o libcurl-security.3: fix typo on macro "SH_" [12]
 o libssh2: make atime/mtime date overflow return error [148]
 o libssh2: provide symlink name in SFTP dir listing [155]
 o libssh: ignore deprecation warnings [157]
 o libssh: make atime/mtime date overflow return error [149]
 o Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip] [17]
 o Makefile.m32: add `NGTCP2_LIBS` option [ci skip] [38]
 o makefile.m32: add support for custom ARCH [ci skip] [27]










 o Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip] [141]
 o Makefile.m32: do not set the libcurl.rc debug flag [ci skip] [3]
 o Makefile.m32: stop trying to build libcares.a [ci skip] [46]
 o memdebug: add annotation attributes [143]
 o mprintf: fix *dyn_vprintf() when out-of-memory [90]
 o mprintf: make dprintf_formatf never return negative [49]
 o msh3: fix the QUIC disconnect function [107]
 o multi: fix the return code from Curl_pgrsDone() [80]

 o multi: have curl_multi_remove_handle close CONNECT_ONLY transfer [136]
 o multi: use a pipe instead of a socketpair on apple platforms [154]
 o multi: use larger dns hash table for multi interface [140]
 o multi_wait: fix and improve Curl_poll error handling on Windows [146]
 o multi_wait: fix skipping to populate revents for extra_fds [147]

 o netrc.d: remove spurious quote [37]
 o netrc: Use the password from lines without login [166]
 o ngtcp2: Fix build error due to change in nghttp3 prototypes [61]
 o ngtcp2: fix incompatible function pointer types [10]
 o ngtcp2: Fix missing initialization of nghttp3_nv.flags [31]
 o ngtcp2: fix stall or busy loop on STOP_SENDING with upload data [19]
 o ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks [59]
 o openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL [24]
 o openssl: add cert path in error message [160]
 o openssl: add details to "unable to set client certificate" error [116]
 o openssl: fix BoringSSL symbol conflicts with LDAP and Schannel [52]
 o quiche: fix build failure [99]
 o select: do not return fatal error on EINTR from poll() [32]

 o sendf: fix paused header writes since after the header API [89]
 o sendf: make Curl_debug a void function [81]

 o sendf: skip storing HTTP headers if HTTP disabled [73]
 o sendf: store the header type in an usigned char to avoid icc warnings [79]
 o splay: avoid using -1 in unsigned variable [78]
 o test3026: add support for Windows using native Win32 threads [65]
 o test3026: require 'threadsafe' [56]
 o test44[2-4]: add '--resolve' to the keywords [122]
 o tests/server/sockfilt.c: avoid race condition without a mutex [139]
 o tests: fix http2 tests to use CRLF headers [153]

 o tests: several enumerated type cleanups [67]


 o THANKS: merged two entries for Evgeny Grin
 o tidy-up: delete unused build configuration macros [93]
 o tool: reintroduce set file comment code for AmigaOS [111]
 o tool_cfgable: make 'synthetic_error' a plain bool [70]
 o tool_formparse: fix variable may be used before its value is set [72]
 o tool_getparam: make --doh-url "" switch it off [60]
 o tool_getparam: repair cleanarg [22]
 o tool_operate: better cleanup of easy handle in exit path [20]
 o tool_paramhlp: fix "enumerated type mixed with another type" [68]

 o tool_paramhlp: make check_protocol return ParameterError [71]
 o tool_progress: avoid division by zero in parallel progress meter [35]
 o tool_writeout: fix enumerated type mixed with another type [69]
 o trace: 0x7F character is non-printable [50]
 o unit1303: four tests should have TRUE for 'connecting' [158]
 o url: enumerated type mixed with another type [74]
 o url: really use the user provided in the url when netrc entry exists [165]
 o url: reject URLs with hostnames longer than 65535 bytes [137]
 o url: treat missing usernames in netrc as empty [167]
 o urldata: change second proxytype field to unsigned char to match [75]
 o urldata: make 'negnpn' use less storage [112]
 o urldata: make state.httpreq an unsigned char [77]
 o urldata: make three *_proto struct fields smaller [113]
 o urldata: move smaller fields down in connectdata struct [105]
 o urldata: reduce size of several struct fields [14]



 o vtls: make Curl_ssl_backend() return the enum type curl_sslbackend [83]
 o windows: improve random source [29]




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:

  Adam Sampson, Alessandro Ghedini, Alexandre Bury, Andreas Sommer,
  Andrew Lambert, Axel Chong, Brad Forschinger, Brian Carpenter,
  Cering on github, Chris Paulson-Ellis, Chris Young, Daniel Katz,
  Daniel Stenberg, David Carlier, dEajL3kA on github, Domen Kožar,

  Dominik Thalhammer, Don J Olmstead, Dustin Howett, Emanuele Torre,
  Emil Engler, Érico Nogueira Rolim, Even Rouault, Evgeny Grin (Karlson2k),
  Fabian Fischer, Fabian Keil, Gisle Vanem, Gwen Shapira, Harry Sintonen,
  highmtworks on github, Ivan Tsybulin, Jacob Tolar, Jakub Zakrzewski,
  Jilayne Lovejoy, Joshua Root, jurisuk on github, jvvprasad78 on github,
  Kai Pastor, Litter White, lwthiker on github, Marcel Raad, Marc Hörsken,
  Marco Kamner, MasterInQuestion on github, Matthew Thompson, Maxim Ivanov,
  Michael Trebilcock, Michał Antoniak, Nao Yonashiro, Nick Banks,
  Oliver Roberts, opensignature on github, Orgad Shaneh, Patrick Monnerat,
  Philip H, privetryan on github, Ray Satiro, rcombs on github, Rosen Penev,
  Ryan Schmidt, Ryan Sleevi, rzrymiak on github, Samuel Henrique,
  Sean McArthur, Sergey Ogryzkov, Somnath Kundu, Stefan Eissing,
  Sukanya Hanumanthu, Tatsuhiro Tsujikawa, Ted Lyngmo, TheKnarf on github,
  Thomas Weißschuh, Tobias Nygren, Viktor Szakats, vlubart on github, Wu Zheng,

  Wyatt O'Day, Xiaoke Wang, yiyuaner on github
  (79 contributors)

References to bug reports and discussions on issues:

 [1] = https://curl.se/bug/?i=9073
 [2] = https://curl.se/bug/?i=9070
 [3] = https://curl.se/bug/?i=9069
 [4] = https://curl.se/bug/?i=9067
 [5] = https://curl.se/bug/?i=9064
 [6] = https://curl.se/bug/?i=9063
 [7] = https://curl.se/bug/?i=9059
 [8] = https://curl.se/bug/?i=9058
 [9] = https://curl.se/bug/?i=9055
 [10] = https://curl.se/bug/?i=9056
 [11] = https://curl.se/bug/?i=9056
 [12] = https://curl.se/bug/?i=9057
 [13] = https://curl.se/bug/?i=9054
 [14] = https://curl.se/bug/?i=9106
 [15] = https://curl.se/bug/?i=9117
 [16] = https://curl.se/bug/?i=9104
 [17] = https://curl.se/bug/?i=9132
 [18] = https://curl.se/bug/?i=9065
 [19] = https://curl.se/bug/?i=9122
 [20] = https://curl.se/bug/?i=9114
 [21] = https://curl.se/bug/?i=9114
 [22] = https://curl.se/bug/?i=9128
 [23] = https://curl.se/bug/?i=9115
 [24] = https://curl.se/bug/?i=9113
 [25] = https://curl.se/bug/?i=9115
 [26] = https://curl.se/bug/?i=9095
 [27] = https://curl.se/bug/?i=9092
 [28] = https://curl.se/bug/?i=9046
 [29] = https://curl.se/bug/?i=9027
 [30] = https://curl.se/bug/?i=8992
 [31] = https://curl.se/bug/?i=9118
 [32] = https://bugs.archlinux.org/task/75201
 [33] = https://curl.se/bug/?i=9084
 [34] = https://curl.se/bug/?i=8997
 [35] = https://curl.se/bug/?i=9082
 [36] = https://curl.se/bug/?i=9080
 [37] = https://curl.se/bug/?i=9111
 [38] = https://curl.se/bug/?i=9109
 [39] = https://curl.se/bug/?i=9090
 [40] = https://curl.se/bug/?i=9164
 [41] = https://curl.se/bug/?i=9139
 [42] = https://curl.se/bug/?i=9176
 [43] = https://curl.se/bug/?i=9170
 [44] = https://curl.se/bug/?i=9172
 [45] = https://curl.se/bug/?i=9174
 [46] = https://curl.se/bug/?i=9169
 [47] = https://curl.se/bug/?i=9150
 [48] = https://curl.se/bug/?i=9155
 [49] = https://curl.se/bug/?i=9149
 [50] = https://curl.se/bug/?i=9162
 [51] = https://curl.se/bug/?i=9163
 [52] = https://curl.se/bug/?i=9110
 [53] = https://curl.se/bug/?i=9081
 [54] = https://curl.se/bug/?i=9081
 [55] = https://curl.se/bug/?i=9134
 [56] = https://curl.se/bug/?i=9141
 [57] = https://curl.se/bug/?i=9125
 [58] = https://curl.se/bug/?i=9124
 [59] = https://curl.se/bug/?i=9135
 [60] = https://curl.se/bug/?i=9207
 [61] = https://curl.se/bug/?i=9204
 [62] = https://curl.se/bug/?i=9205
 [63] = https://curl.se/bug/?i=9201
 [64] = https://curl.se/bug/?i=9244
 [65] = https://curl.se/bug/?i=9012
 [66] = https://curl.se/bug/?i=9199
 [67] = https://curl.se/bug/?i=9179
 [68] = https://curl.se/bug/?i=9179
 [69] = https://curl.se/bug/?i=9179
 [70] = https://curl.se/bug/?i=9179
 [71] = https://curl.se/bug/?i=9179
 [72] = https://curl.se/bug/?i=9179
 [73] = https://curl.se/bug/?i=9179
 [74] = https://curl.se/bug/?i=9179
 [75] = https://curl.se/bug/?i=9179
 [76] = https://curl.se/bug/?i=9179
 [77] = https://curl.se/bug/?i=9179
 [78] = https://curl.se/bug/?i=9179
 [79] = https://curl.se/bug/?i=9179
 [80] = https://curl.se/bug/?i=9179
 [81] = https://curl.se/bug/?i=9179
 [82] = https://curl.se/bug/?i=9179
 [83] = https://curl.se/bug/?i=9179
 [84] = https://curl.se/bug/?i=9179
 [85] = https://curl.se/bug/?i=9179
 [86] = https://curl.se/bug/?i=9190
 [87] = https://curl.se/bug/?i=9187
 [88] = https://curl.se/bug/?i=9184
 [89] = https://curl.se/bug/?i=9180
 [90] = https://curl.se/bug/?i=9185
 [91] = https://curl.se/bug/?i=9183
 [92] = https://curl.se/bug/?i=9181
 [93] = https://curl.se/bug/?i=9044
 [94] = https://curl.se/bug/?i=9235
 [95] = https://curl.se/bug/?i=9229
 [96] = https://curl.se/bug/?i=8419
 [97] = https://curl.se/bug/?i=9230
 [98] = https://curl.se/bug/?i=9221
 [99] = https://curl.se/bug/?i=9223
 [100] = https://curl.se/bug/?i=9286
 [101] = https://curl.se/bug/?i=9216
 [102] = https://curl.se/bug/?i=9209
 [103] = https://curl.se/bug/?i=9208
 [104] = https://curl.se/bug/?i=9213
 [105] = https://curl.se/bug/?i=9280
 [106] = https://curl.se/bug/?i=9281
 [107] = https://curl.se/bug/?i=8915
 [108] = https://curl.se/bug/?i=9259
 [109] = https://curl.se/bug/?i=9303
 [110] = https://curl.se/bug/?i=9268
 [111] = https://curl.se/bug/?i=9258
 [112] = https://curl.se/bug/?i=9279
 [113] = https://curl.se/bug/?i=9278
 [114] = https://curl.se/bug/?i=9274
 [115] = https://curl.se/bug/?i=9269
 [116] = https://curl.se/bug/?i=9228
 [117] = https://curl.se/bug/?i=9267
 [118] = https://curl.se/bug/?i=9266
 [119] = https://curl.se/bug/?i=9264
 [120] = https://curl.se/bug/?i=9077
 [121] = https://curl.se/bug/?i=9239
 [122] = https://curl.se/bug/?i=9250
 [123] = https://curl.se/bug/?i=9310
 [124] = https://curl.se/bug/?i=9310
 [125] = https://curl.se/bug/?i=9298
 [126] = https://curl.se/bug/?i=9297
 [127] = https://curl.se/bug/?i=9192
 [128] = https://curl.se/bug/?i=9310
 [129] = https://curl.se/bug/?i=9291
 [130] = https://curl.se/bug/?i=9291
 [131] = https://curl.se/bug/?i=9217
 [132] = https://curl.se/bug/?i=9253
 [133] = https://curl.se/bug/?i=9265
 [134] = https://curl.se/bug/?i=9289
 [135] = https://curl.se/bug/?i=9310
 [136] = https://curl.se/bug/?i=9335
 [137] = https://curl.se/bug/?i=9317
 [138] = https://curl.se/bug/?i=9352
 [139] = https://curl.se/bug/?i=9023
 [140] = https://curl.se/bug/?i=9376
 [141] = https://curl.se/bug/?i=9314
 [142] = https://curl.se/bug/?i=9290
 [143] = https://curl.se/bug/?i=9306
 [144] = https://curl.se/bug/?i=9309
 [145] = https://curl.se/bug/?i=9344
 [146] = https://curl.se/bug/?i=9372
 [147] = https://curl.se/bug/?i=9361
 [148] = https://curl.se/bug/?i=9328
 [149] = https://curl.se/bug/?i=9328
 [150] = https://curl.se/bug/?i=9330
 [151] = https://curl.se/bug/?i=9329
 [152] = https://curl.se/docs/CVE-2022-35252.html
 [153] = https://curl.se/bug/?i=9364
 [154] = https://curl.se/bug/?i=6132
 [155] = https://curl.se/bug/?i=9369
 [156] = https://curl.se/bug/?i=9367
 [157] = https://curl.se/bug/?i=9382
 [158] = https://curl.se/bug/?i=9356
 [159] = https://curl.se/bug/?i=9354
 [160] = https://curl.se/bug/?i=9349
 [161] = https://curl.se/bug/?i=9349
 [162] = https://curl.se/bug/?i=9331
 [163] = https://curl.se/bug/?i=9312
 [165] = https://curl.se/bug/?i=9243
 [166] = https://curl.se/bug/?i=9248
 [167] = https://curl.se/bug/?i=8653
 [168] = https://curl.se/bug/?i=9391
Changes to jni/curl/acinclude.m4.
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
    yes)
      AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1,
        [Define to 1 if you have the winldap.h header file.])
      ;;
  esac
])


dnl CURL_CHECK_HEADER_WINBER
dnl -------------------------------------------------
dnl Check for compilable and valid winber.h header

AC_DEFUN([CURL_CHECK_HEADER_WINBER], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINLDAP])dnl
  AC_CACHE_CHECK([for winber.h], [curl_cv_header_winber_h], [
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#endif
#include <winldap.h>
#include <winber.h>
      ]],[[
#if defined(__CYGWIN__) || defined(__CEGCC__)
        HAVE_WINBER_H shall not be defined.
#else
        BERVAL *bvp = NULL;
        BerElement *bep = ber_init(bvp);
        ber_free(bep, 1);
#endif
      ]])
    ],[
      curl_cv_header_winber_h="yes"
    ],[
      curl_cv_header_winber_h="no"
    ])
  ])
  case "$curl_cv_header_winber_h" in
    yes)
      AC_DEFINE_UNQUOTED(HAVE_WINBER_H, 1,
        [Define to 1 if you have the winber.h header file.])
      ;;
  esac
])


dnl CURL_CHECK_HEADER_LBER
dnl -------------------------------------------------
dnl Check for compilable and valid lber.h header,
dnl and check if it is needed even with ldap.h

AC_DEFUN([CURL_CHECK_HEADER_LBER], [







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







380
381
382
383
384
385
386










































387
388
389
390
391
392
393
    yes)
      AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1,
        [Define to 1 if you have the winldap.h header file.])
      ;;
  esac
])












































dnl CURL_CHECK_HEADER_LBER
dnl -------------------------------------------------
dnl Check for compilable and valid lber.h header,
dnl and check if it is needed even with ldap.h

AC_DEFUN([CURL_CHECK_HEADER_LBER], [
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
    yes)
      AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1,
        [Define to 1 if you have the ldap_ssl.h header file.])
      ;;
  esac
])


dnl CURL_CHECK_HEADER_LDAPSSL
dnl -------------------------------------------------
dnl Check for compilable and valid ldapssl.h header

AC_DEFUN([CURL_CHECK_HEADER_LDAPSSL], [
  AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
  AC_CACHE_CHECK([for ldapssl.h], [curl_cv_header_ldapssl_h], [
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#endif
#ifndef NULL
#define NULL (void *)0
#endif
#ifndef LDAP_DEPRECATED
#define LDAP_DEPRECATED 1
#endif
#ifdef NEED_LBER_H
#include <lber.h>
#endif
#ifdef HAVE_LDAP_H
#include <ldap.h>
#endif
#include <ldapssl.h>
      ]],[[
        char *cert_label = NULL;
        LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
      ]])
    ],[
      curl_cv_header_ldapssl_h="yes"
    ],[
      curl_cv_header_ldapssl_h="no"
    ])
  ])
  case "$curl_cv_header_ldapssl_h" in
    yes)
      AC_DEFINE_UNQUOTED(HAVE_LDAPSSL_H, 1,
        [Define to 1 if you have the ldapssl.h header file.])
      ;;
  esac
])


dnl CURL_CHECK_LIBS_WINLDAP
dnl -------------------------------------------------
dnl Check for libraries needed for WINLDAP support,
dnl and prepended to LIBS any needed libraries.
dnl This macro can take an optional parameter with a
dnl whitespace separated list of libraries to check







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







555
556
557
558
559
560
561




















































562
563
564
565
566
567
568
    yes)
      AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1,
        [Define to 1 if you have the ldap_ssl.h header file.])
      ;;
  esac
])






















































dnl CURL_CHECK_LIBS_WINLDAP
dnl -------------------------------------------------
dnl Check for libraries needed for WINLDAP support,
dnl and prepended to LIBS any needed libraries.
dnl This macro can take an optional parameter with a
dnl whitespace separated list of libraries to check
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
      AC_MSG_RESULT([$curl_cv_ldap_LIBS])
      ;;
  esac
  #
])


dnl CURL_CHECK_HEADER_MALLOC
dnl -------------------------------------------------
dnl Check for compilable and valid malloc.h header,
dnl and check if it is needed even with stdlib.h

AC_DEFUN([CURL_CHECK_HEADER_MALLOC], [
  AC_CACHE_CHECK([for malloc.h], [curl_cv_header_malloc_h], [
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#include <malloc.h>
      ]],[[
        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);
      ]])
    ],[
      curl_cv_header_malloc_h="yes"
    ],[
      curl_cv_header_malloc_h="no"
    ])
  ])
  if test "$curl_cv_header_malloc_h" = "yes"; then
    AC_DEFINE_UNQUOTED(HAVE_MALLOC_H, 1,
      [Define to 1 if you have the malloc.h header file.])
    #
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#include <stdlib.h>
      ]],[[
        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);
      ]])
    ],[
      curl_cv_need_header_malloc_h="no"
    ],[
      curl_cv_need_header_malloc_h="yes"
    ])
    #
    case "$curl_cv_need_header_malloc_h" in
      yes)
        AC_DEFINE_UNQUOTED(NEED_MALLOC_H, 1,
          [Define to 1 if you need the malloc.h header file even with stdlib.h])
        ;;
    esac
  fi
])


dnl CURL_CHECK_HEADER_MEMORY
dnl -------------------------------------------------
dnl Check for compilable and valid memory.h header,
dnl and check if it is needed even with stdlib.h for
dnl memory related functions.

AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
  AC_CACHE_CHECK([for memory.h], [curl_cv_header_memory_h], [
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#include <memory.h>
      ]],[[
        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);
      ]])
    ],[
      curl_cv_header_memory_h="yes"
    ],[
      curl_cv_header_memory_h="no"
    ])
  ])
  if test "$curl_cv_header_memory_h" = "yes"; then
    AC_DEFINE_UNQUOTED(HAVE_MEMORY_H, 1,
      [Define to 1 if you have the memory.h header file.])
    #
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#include <stdlib.h>
      ]],[[
        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);
      ]])
    ],[
      curl_cv_need_header_memory_h="no"
    ],[
      curl_cv_need_header_memory_h="yes"
    ])
    #
    case "$curl_cv_need_header_memory_h" in
      yes)
        AC_DEFINE_UNQUOTED(NEED_MEMORY_H, 1,
          [Define to 1 if you need the memory.h header file even with stdlib.h])
        ;;
    esac
  fi
])

dnl TYPE_SOCKADDR_STORAGE
dnl -------------------------------------------------
dnl Check for struct sockaddr_storage. Most IPv6-enabled
dnl hosts have it, but AIX 4.3 is one known exception.

AC_DEFUN([TYPE_SOCKADDR_STORAGE],
[







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







760
761
762
763
764
765
766






































































































767
768
769
770
771
772
773
      AC_MSG_RESULT([$curl_cv_ldap_LIBS])
      ;;
  esac
  #
])








































































































dnl TYPE_SOCKADDR_STORAGE
dnl -------------------------------------------------
dnl Check for struct sockaddr_storage. Most IPv6-enabled
dnl hosts have it, but AIX 4.3 is one known exception.

AC_DEFUN([TYPE_SOCKADDR_STORAGE],
[
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
dnl will be defined, defining the types of the arguments
dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
dnl and RECV_TYPE_ARG4, defining the type of the function
dnl return value in RECV_TYPE_RETV.

AC_DEFUN([CURL_CHECK_FUNC_RECV], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl

  AC_CHECK_HEADERS(sys/types.h sys/socket.h)
  #
  AC_MSG_CHECKING([for recv])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif







>















<
|
<
<







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
dnl will be defined, defining the types of the arguments
dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
dnl and RECV_TYPE_ARG4, defining the type of the function
dnl return value in RECV_TYPE_RETV.

AC_DEFUN([CURL_CHECK_FUNC_RECV], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  AC_CHECK_HEADERS(sys/types.h sys/socket.h)
  #
  AC_MSG_CHECKING([for recv])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define RECVCALLCONV PASCAL
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define RECVCALLCONV







<
|
<
<







867
868
869
870
871
872
873

874


875
876
877
878
879
880
881
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define RECVCALLCONV PASCAL
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define RECVCALLCONV
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
dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
dnl and SEND_TYPE_ARG4, defining the type of the function
dnl return value in SEND_TYPE_RETV, and also defining the
dnl type qualifier of second argument in SEND_QUAL_ARG2.

AC_DEFUN([CURL_CHECK_FUNC_SEND], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl

  AC_CHECK_HEADERS(sys/types.h sys/socket.h)
  #
  AC_MSG_CHECKING([for send])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif







>















<
|
<
<







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
dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
dnl and SEND_TYPE_ARG4, defining the type of the function
dnl return value in SEND_TYPE_RETV, and also defining the
dnl type qualifier of second argument in SEND_QUAL_ARG2.

AC_DEFUN([CURL_CHECK_FUNC_SEND], [
  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  AC_CHECK_HEADERS(sys/types.h sys/socket.h)
  #
  AC_MSG_CHECKING([for send])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define SENDCALLCONV PASCAL
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define SENDCALLCONV







<
|
<
<







997
998
999
1000
1001
1002
1003

1004


1005
1006
1007
1008
1009
1010
1011
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define SENDCALLCONV PASCAL
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define SENDCALLCONV
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif







<
<
<
<







1107
1108
1109
1110
1111
1112
1113




1114
1115
1116
1117
1118
1119
1120
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else




#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
1736
1737
1738
1739
1740
1741
1742

1743
1744
1745
1746
1747
1748
1749
dnl and SELECT_TYPE_ARG5, defining the type of the
dnl function return value in SELECT_TYPE_RETV, and
dnl also defining the type qualifier of fifth argument
dnl in SELECT_QUAL_ARG5.

AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
  AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl

  AC_CHECK_HEADERS(sys/select.h sys/socket.h)
  #
  AC_MSG_CHECKING([for select])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H







>







1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
dnl and SELECT_TYPE_ARG5, defining the type of the
dnl function return value in SELECT_TYPE_RETV, and
dnl also defining the type qualifier of fifth argument
dnl in SELECT_QUAL_ARG5.

AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
  AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  AC_CHECK_HEADERS(sys/select.h sys/socket.h)
  #
  AC_MSG_CHECKING([for select])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
#undef inline
#ifdef HAVE_WINDOWS_H
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
#endif
    ]],[[
      select(0, 0, 0, 0, 0);
    ]])
  ],[
    AC_MSG_RESULT([yes])
    curl_cv_select="yes"







<
|
<
<
<







1558
1559
1560
1561
1562
1563
1564

1565



1566
1567
1568
1569
1570
1571
1572
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif

$curl_includes_bsdsocket



#endif
    ]],[[
      select(0, 0, 0, 0, 0);
    ]])
  ],[
    AC_MSG_RESULT([yes])
    curl_cv_select="yes"
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
#define SELECTCALLCONV
#endif
#ifndef HAVE_STRUCT_TIMEVAL
                    struct timeval {
                      long tv_sec;
                      long tv_usec;
                    };







<
|
<
<
<







1609
1610
1611
1612
1613
1614
1615

1616



1617
1618
1619
1620
1621
1622
1623
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif

$curl_includes_bsdsocket



#define SELECTCALLCONV
#endif
#ifndef HAVE_STRUCT_TIMEVAL
                    struct timeval {
                      long tv_sec;
                      long tv_usec;
                    };
Changes to jni/curl/aclocal.m4.
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
  AC_MSG_RESULT([$am_cv_prog_tar_$1])])

AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR

m4_include([m4/ax_compile_check_sizeof.m4])
m4_include([m4/curl-amissl.m4])
m4_include([m4/curl-bearssl.m4])
m4_include([m4/curl-compilers.m4])
m4_include([m4/curl-confopts.m4])
m4_include([m4/curl-functions.m4])
m4_include([m4/curl-gnutls.m4])
m4_include([m4/curl-mbedtls.m4])







<







1180
1181
1182
1183
1184
1185
1186

1187
1188
1189
1190
1191
1192
1193
  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
  AC_MSG_RESULT([$am_cv_prog_tar_$1])])

AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR


m4_include([m4/curl-amissl.m4])
m4_include([m4/curl-bearssl.m4])
m4_include([m4/curl-compilers.m4])
m4_include([m4/curl-confopts.m4])
m4_include([m4/curl-functions.m4])
m4_include([m4/curl-gnutls.m4])
m4_include([m4/curl-mbedtls.m4])
Changes to jni/curl/configure.
927
928
929
930
931
932
933

934
935
936
937
938
939
940
NROFF
PERL
FISH_FUNCTIONS_DIR
ZSH_FUNCTIONS_DIR
USE_MSH3
USE_QUICHE
USE_NGHTTP3

USE_NGTCP2_CRYPTO_GNUTLS
USE_NGTCP2_CRYPTO_OPENSSL
USE_NGTCP2
USE_NGHTTP2
IDN_ENABLED
CURL_PLIST_VERSION
CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE







>







927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
NROFF
PERL
FISH_FUNCTIONS_DIR
ZSH_FUNCTIONS_DIR
USE_MSH3
USE_QUICHE
USE_NGHTTP3
USE_NGTCP2_CRYPTO_WOLFSSL
USE_NGTCP2_CRYPTO_GNUTLS
USE_NGTCP2_CRYPTO_OPENSSL
USE_NGTCP2
USE_NGHTTP2
IDN_ENABLED
CURL_PLIST_VERSION
CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE
2320
2321
2322
2323
2324
2325
2326

































2327
2328
2329
2330
2331
2332
2333
    ac_retval=1
fi
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_cpp


































# ac_fn_c_try_link LINENO
# -----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_link ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext







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







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
    ac_retval=1
fi
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_cpp

# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
# INCLUDES, setting the cache variable VAR accordingly.
ac_fn_c_check_header_compile ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$4
#include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  eval "$3=yes"
else $as_nop
  eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
printf "%s\n" "$ac_res" >&6; }
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_header_compile

# ac_fn_c_try_link LINENO
# -----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_link ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
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
  # left behind by Apple's compiler.  We do this before executing the actions.
  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_link

# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
# INCLUDES, setting the cache variable VAR accordingly.
ac_fn_c_check_header_compile ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$4
#include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  eval "$3=yes"
else $as_nop
  eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
printf "%s\n" "$ac_res" >&6; }
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_header_compile

# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5







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







2401
2402
2403
2404
2405
2406
2407

































2408
2409
2410
2411
2412
2413
2414
  # left behind by Apple's compiler.  We do this before executing the actions.
  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_link


































# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
fi
  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_run

# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
# variable VAR accordingly.
ac_fn_c_check_type ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }







|
|







2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
fi
  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_run

# ac_fn_c_check_type LINENO SIZEOF_LONG_LONG VAR INCLUDES
# -------------------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
# variable VAR accordingly.
ac_fn_c_check_type ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }
5581
5582
5583
5584
5585
5586
5587















5588





















5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600

5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624





5625
5626
5627
5628
5629
5630
5631
  CPPFLAGS=$xc_prog_cc_prev_CPPFLAGS











































  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _Atomic is available" >&5
printf %s "checking if _Atomic is available... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_unistd

int main (void)
{

      _Atomic int i = 0;


 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_ATOMIC 1" >>confdefs.h

    tst_atomic="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_atomic="no"

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







{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
printf %s "checking for a sed that does not truncate output... " >&6; }
if test ${ac_cv_path_SED+y}
then :
  printf %s "(cached) " >&6







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

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|

|



|




|
>






|


|




|



|

|


|
>
>
>
>
>







5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
  CPPFLAGS=$xc_prog_cc_prev_CPPFLAGS






ac_header= ac_cache=
for ac_item in $ac_header_c_list
do
  if test $ac_cache; then
    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
      printf "%s\n" "#define $ac_item 1" >> confdefs.h
    fi
    ac_header= ac_cache=
  elif test $ac_header; then
    ac_cache=$ac_item
  else
    ac_header=$ac_item
  fi
done








if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
then :

printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h

fi

         for ac_header in stdatomic.h
do :
  ac_fn_c_check_header_compile "$LINENO" "stdatomic.h" "ac_cv_header_stdatomic_h" "$ac_includes_default"
if test "x$ac_cv_header_stdatomic_h" = xyes
then :
  printf "%s\n" "#define HAVE_STDATOMIC_H 1" >>confdefs.h

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _Atomic is available" >&5
printf %s "checking if _Atomic is available... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_unistd

int main (void)
{

        _Atomic int i = 0;
        i = 4;  // Force an atomic-write operation.

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_ATOMIC 1" >>confdefs.h

      tst_atomic="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_atomic="no"

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

fi

done


{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
printf %s "checking for a sed that does not truncate output... " >&6; }
if test ${ac_cv_path_SED+y}
then :
  printf %s "(cached) " >&6
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


OPT_SECURETRANSPORT=no

# Check whether --with-secure-transport was given.
if test ${with_secure_transport+y}
then :
  withval=$with_secure_transport; OPT_SECURETRANSPORT=$withval

  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }Secure-Transport"

fi


OPT_AMISSL=no

# Check whether --with-amissl was given.
if test ${with_amissl+y}
then :
  withval=$with_amissl; OPT_AMISSL=$withval

  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }AmiSSL"
fi


OPT_OPENSSL=no
ca="no"

# Check whether --with-ssl was given.
if test ${with_ssl+y}
then :
  withval=$with_ssl; OPT_SSL=$withval

  OPT_OPENSSL=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }OpenSSL"
fi

  fi



# Check whether --with-openssl was given.
if test ${with_openssl+y}
then :
  withval=$with_openssl; OPT_OPENSSL=$withval

  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }OpenSSL"
fi

  fi


OPT_GNUTLS=no

# Check whether --with-gnutls was given.
if test ${with_gnutls+y}
then :
  withval=$with_gnutls; OPT_GNUTLS=$withval

  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }GnuTLS"
fi

  fi


OPT_MBEDTLS=no

# Check whether --with-mbedtls was given.
if test ${with_mbedtls+y}
then :
  withval=$with_mbedtls; OPT_MBEDTLS=$withval

  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }mbedTLS"
fi

  fi


OPT_WOLFSSL=no

# Check whether --with-wolfssl was given.
if test ${with_wolfssl+y}
then :
  withval=$with_wolfssl; OPT_WOLFSSL=$withval

  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }wolfSSL"
fi

  fi


OPT_BEARSSL=no

# Check whether --with-bearssl was given.
if test ${with_bearssl+y}
then :
  withval=$with_bearssl; OPT_BEARSSL=$withval

  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }BearSSL"
fi

  fi


OPT_RUSTLS=no

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

  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }rustls"
fi

    experimental="$experimental rustls"
  fi


OPT_NSS_AWARE=no

# Check whether --with-nss-deprecated was given.
if test ${with_nss_deprecated+y}
then :
  withval=$with_nss_deprecated; if test X"$withval" != Xno; then







|
>
|
<
<









|
>
|
|
<









|
>


|
|
|
|

|
>





|
>

|
<
<
|

|
>






|
>

|
<
<
|

|
>






|
>

|
<
<
|

|
>






|
>

|
<
<
|

|
>






|
>

|
<
<
|

|
>






|
>

|
<
|
|

<
|
>







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


OPT_SECURETRANSPORT=no

# Check whether --with-secure-transport was given.
if test ${with_secure_transport+y}
then :
  withval=$with_secure_transport;
  OPT_SECURETRANSPORT=$withval
  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"



fi


OPT_AMISSL=no

# Check whether --with-amissl was given.
if test ${with_amissl+y}
then :
  withval=$with_amissl;
  OPT_AMISSL=$withval
  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL"


fi


OPT_OPENSSL=no
ca="no"

# Check whether --with-ssl was given.
if test ${with_ssl+y}
then :
  withval=$with_ssl;
  OPT_SSL=$withval
  OPT_OPENSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
  else
    SSL_DISABLED="D"
  fi

fi



# Check whether --with-openssl was given.
if test ${with_openssl+y}
then :
  withval=$with_openssl;
  OPT_OPENSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"


  fi

fi


OPT_GNUTLS=no

# Check whether --with-gnutls was given.
if test ${with_gnutls+y}
then :
  withval=$with_gnutls;
  OPT_GNUTLS=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS"


  fi

fi


OPT_MBEDTLS=no

# Check whether --with-mbedtls was given.
if test ${with_mbedtls+y}
then :
  withval=$with_mbedtls;
  OPT_MBEDTLS=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS"


  fi

fi


OPT_WOLFSSL=no

# Check whether --with-wolfssl was given.
if test ${with_wolfssl+y}
then :
  withval=$with_wolfssl;
  OPT_WOLFSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL"


  fi

fi


OPT_BEARSSL=no

# Check whether --with-bearssl was given.
if test ${with_bearssl+y}
then :
  withval=$with_bearssl;
  OPT_BEARSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL"


  fi

fi


OPT_RUSTLS=no

# Check whether --with-rustls was given.
if test ${with_rustls+y}
then :
  withval=$with_rustls;
  OPT_RUSTLS=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls"

    experimental="$experimental rustls"
  fi


fi


OPT_NSS_AWARE=no

# Check whether --with-nss-deprecated was given.
if test ${with_nss_deprecated+y}
then :
  withval=$with_nss_deprecated; if test X"$withval" != Xno; then
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
  withval=$with_nss; OPT_NSS=$withval
  if test X"$withval" != Xno; then

    if test X"$OPT_NSS_AWARE" = "Xno" ; then
      as_fn_error $? "NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md" "$LINENO" 5
    fi

    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
else $as_nop
  }NSS"
  fi

fi


if test -z "$TLSCHOICE"; then
  if test "x$OPT_SSL" != "xno"; then







|
<
<







6806
6807
6808
6809
6810
6811
6812
6813


6814
6815
6816
6817
6818
6819
6820
  withval=$with_nss; OPT_NSS=$withval
  if test X"$withval" != Xno; then

    if test X"$OPT_NSS_AWARE" = "Xno" ; then
      as_fn_error $? "NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md" "$LINENO" 5
    fi

    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"


  fi

fi


if test -z "$TLSCHOICE"; then
  if test "x$OPT_SSL" != "xno"; then
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
        ;;
    *)
        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
        ;;
    esac
}

ac_header= ac_cache=
for ac_item in $ac_header_c_list
do
  if test $ac_cache; then
    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
      printf "%s\n" "#define $ac_item 1" >> confdefs.h
    fi
    ac_header= ac_cache=
  elif test $ac_header; then
    ac_cache=$ac_item
  else
    ac_header=$ac_item
  fi
done








if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
then :

printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
"
if test "x$ac_cv_header_dlfcn_h" = xyes
then :
  printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h

fi







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







11614
11615
11616
11617
11618
11619
11620





























11621
11622
11623
11624
11625
11626
11627
        ;;
    *)
        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
        ;;
    esac
}






























ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
"
if test "x$ac_cv_header_dlfcn_h" = xyes
then :
  printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h

fi
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888
17889
17890
                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -qnoansialias"
                        tmp_CPPFLAGS="$tmp_CPPFLAGS -qhalt=e"
        ;;
        #
      INTEL_UNIX_C)
        #
                        tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
                                                tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
        ;;
        #
      INTEL_WINDOWS_C)
        #
                tmp_CFLAGS="$tmp_CFLAGS"
        ;;
        #







|
|







17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -qnoansialias"
                        tmp_CPPFLAGS="$tmp_CPPFLAGS -qhalt=e"
        ;;
        #
      INTEL_UNIX_C)
        #
                        tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
                                                tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266"
                                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259"
        ;;
        #
      INTEL_WINDOWS_C)
        #
                tmp_CFLAGS="$tmp_CFLAGS"
        ;;
        #
20330
20331
20332
20333
20334
20335
20336









































20337
20338
20339
20340
20341
20342
20343
printf "%s\n" "no" >&6; }

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













































  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for windows.h" >&5
printf %s "checking for windows.h... " >&6; }
if test ${curl_cv_header_windows_h+y}
then :







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







20343
20344
20345
20346
20347
20348
20349
20350
20351
20352
20353
20354
20355
20356
20357
20358
20359
20360
20361
20362
20363
20364
20365
20366
20367
20368
20369
20370
20371
20372
20373
20374
20375
20376
20377
20378
20379
20380
20381
20382
20383
20384
20385
20386
20387
20388
20389
20390
20391
20392
20393
20394
20395
20396
20397
printf "%s\n" "no" >&6; }

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

# Detect original MinGW (not MinGW-w64)
curl_mingw_original=no
case $host in
  *-*-mingw32*)
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking using original MinGW (not MinGW-w64)" >&5
printf %s "checking using original MinGW (not MinGW-w64)... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#include <_mingw.h>

int main (void)
{

#if defined(__MINGW64_VERSION_MAJOR)
#error
#endif

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      curl_mingw_original=yes
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }

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




  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for windows.h" >&5
printf %s "checking for windows.h... " >&6; }
if test ${curl_cv_header_windows_h+y}
then :
20669
20670
20671
20672
20673
20674
20675
20676
20677
20678
20679
20680
20681
20682
20683
20684
20685
20686
20687
20688
20689
20690
20691
20692
20693
20694
20695
20696
20697
20698
20699
20700
20701
20702
20703
20704
20705
20706
20707
20708
20709
20710
20711
20712
20713
20714
20715
20716
20717
20718
20719
20720
20721
20722
20723
20724
20725
20726
20727
20728
20729
20730
20731
20732
20733
20734
20735
20736
20737
20738
20739
20740
20741
20742
20743
20744
20745
20746
20747
20748
20749
20750
    yes)

printf "%s\n" "#define HAVE_WINLDAP_H 1" >>confdefs.h

      ;;
  esac


    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winber.h" >&5
printf %s "checking for winber.h... " >&6; }
if test ${curl_cv_header_winber_h+y}
then :
  printf %s "(cached) " >&6
else $as_nop

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


#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#endif
#include <winldap.h>
#include <winber.h>

int main (void)
{

#if defined(__CYGWIN__) || defined(__CEGCC__)
        HAVE_WINBER_H shall not be defined.
#else
        BERVAL *bvp = NULL;
        BerElement *bep = ber_init(bvp);
        ber_free(bep, 1);
#endif

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      curl_cv_header_winber_h="yes"

else $as_nop

      curl_cv_header_winber_h="no"

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

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_winber_h" >&5
printf "%s\n" "$curl_cv_header_winber_h" >&6; }
  case "$curl_cv_header_winber_h" in
    yes)

printf "%s\n" "#define HAVE_WINBER_H 1" >>confdefs.h

      ;;
  esac

    ;;
  *)
    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

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target supports WIN32 file API" >&5
printf %s "checking whether build target supports WIN32 file API... " >&6; }
  curl_win32_file_api="no"
  if test "$curl_cv_header_windows_h" = "yes"; then







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





<







20723
20724
20725
20726
20727
20728
20729


























































20730



20731
20732
20733
20734
20735

20736
20737
20738
20739
20740
20741
20742
    yes)

printf "%s\n" "#define HAVE_WINLDAP_H 1" >>confdefs.h

      ;;
  esac



























































    ;;



  *)
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"
    curl_cv_header_wincrypt_h="no"
    curl_cv_header_winldap_h="no"

    ;;
esac

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target supports WIN32 file API" >&5
printf %s "checking whether build target supports WIN32 file API... " >&6; }
  curl_win32_file_api="no"
  if test "$curl_cv_header_windows_h" = "yes"; then
22227
22228
22229
22230
22231
22232
22233

22234



22235

22236
22237
22238
22239
22240
22241
22242
then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for AmigaOS bsdsocket.library" >&5
printf %s "checking for gethostbyname for AmigaOS bsdsocket.library... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */



  #include <proto/bsdsocket.h>



  struct Library *SocketBase = NULL;


int main (void)
{

      gethostbyname("www.dummysite.com");

 ;







>

>
>
>

>







22219
22220
22221
22222
22223
22224
22225
22226
22227
22228
22229
22230
22231
22232
22233
22234
22235
22236
22237
22238
22239
then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for AmigaOS bsdsocket.library" >&5
printf %s "checking for gethostbyname for AmigaOS bsdsocket.library... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


  #define __USE_INLINE__
  #include <proto/bsdsocket.h>
  #ifdef __amigaos4__
  struct SocketIFace *ISocket = NULL;
  #else
  struct Library *SocketBase = NULL;
  #endif

int main (void)
{

      gethostbyname("www.dummysite.com");

 ;
22441
22442
22443
22444
22445
22446
22447
22448


22449






22450


22451
22452
22453
22454
22455
22456
22457
22458
22459
22460
      ;;
  esac



curl_includes_bsdsocket="\
/* includes start */
#ifdef HAVE_PROTO_BSDSOCKET_H


#  include <proto/bsdsocket.h>






  struct Library *SocketBase = NULL;


#endif
/* includes end */"
  ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" "      $curl_includes_bsdsocket
"
if test "x$ac_cv_header_proto_bsdsocket_h" = xyes
then :
  printf "%s\n" "#define HAVE_PROTO_BSDSOCKET_H 1" >>confdefs.h

fi








|
>
>

>
>
>
>
>
>
|
>
>


|







22438
22439
22440
22441
22442
22443
22444
22445
22446
22447
22448
22449
22450
22451
22452
22453
22454
22455
22456
22457
22458
22459
22460
22461
22462
22463
22464
22465
22466
22467
      ;;
  esac



curl_includes_bsdsocket="\
/* includes start */
#if defined(HAVE_PROTO_BSDSOCKET_H)
#  define __NO_NET_API
#  define __USE_INLINE__
#  include <proto/bsdsocket.h>
#  ifdef HAVE_SYS_IOCTL_H
#    include <sys/ioctl.h>
#  endif
#  ifdef __amigaos4__
struct SocketIFace *ISocket = NULL;
#  else
struct Library *SocketBase = NULL;
#  endif
#  define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
/* includes end */"
  ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" "$curl_includes_bsdsocket
"
if test "x$ac_cv_header_proto_bsdsocket_h" = xyes
then :
  printf "%s\n" "#define HAVE_PROTO_BSDSOCKET_H 1" >>confdefs.h

fi

23854
23855
23856
23857
23858
23859
23860
23861
23862
23863
23864
23865
23866
23867
23868
23869
23870
23871
23872
23873
23874
23875
23876
23877
23878
23879
23880
23881
23882
23883
23884
23885
23886
23887
23888
23889
23890
23891
23892
23893
23894
23895
23896
23897
23898
23899
23900
23901
23902
23903
23904
23905
23906
23907
23908
23909
23910
23911
23912
23913
23914
23915
23916
23917
23918
23919
23920
23921
23922
23923
23924
23925
23926
23927
23928
23929
23930
23931
23932
23933
23934
23935
23936
23937
23938
    yes)

printf "%s\n" "#define HAVE_LDAP_H 1" >>confdefs.h

      ;;
  esac


    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldapssl.h" >&5
printf %s "checking for ldapssl.h... " >&6; }
if test ${curl_cv_header_ldapssl_h+y}
then :
  printf %s "(cached) " >&6
else $as_nop

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


#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#endif
#ifndef NULL
#define NULL (void *)0
#endif
#ifndef LDAP_DEPRECATED
#define LDAP_DEPRECATED 1
#endif
#ifdef NEED_LBER_H
#include <lber.h>
#endif
#ifdef HAVE_LDAP_H
#include <ldap.h>
#endif
#include <ldapssl.h>

int main (void)
{

        char *cert_label = NULL;
        LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      curl_cv_header_ldapssl_h="yes"

else $as_nop

      curl_cv_header_ldapssl_h="no"

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

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ldapssl_h" >&5
printf "%s\n" "$curl_cv_header_ldapssl_h" >&6; }
  case "$curl_cv_header_ldapssl_h" in
    yes)

printf "%s\n" "#define HAVE_LDAPSSL_H 1" >>confdefs.h

      ;;
  esac


    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_ssl.h" >&5
printf %s "checking for ldap_ssl.h... " >&6; }
if test ${curl_cv_header_ldap_ssl_h+y}
then :
  printf %s "(cached) " >&6
else $as_nop







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







23861
23862
23863
23864
23865
23866
23867







































































23868
23869
23870
23871
23872
23873
23874
    yes)

printf "%s\n" "#define HAVE_LDAP_H 1" >>confdefs.h

      ;;
  esac









































































    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_ssl.h" >&5
printf %s "checking for ldap_ssl.h... " >&6; }
if test ${curl_cv_header_ldap_ssl_h+y}
then :
  printf %s "(cached) " >&6
else $as_nop
24265
24266
24267
24268
24269
24270
24271
24272
24273
24274
24275
24276
24277
24278
24279
24280
24281
24282
24283
24284

if test x$CURL_DISABLE_LDAP != x1 ; then
  ac_fn_c_check_func "$LINENO" "ldap_url_parse" "ac_cv_func_ldap_url_parse"
if test "x$ac_cv_func_ldap_url_parse" = xyes
then :
  printf "%s\n" "#define HAVE_LDAP_URL_PARSE 1" >>confdefs.h

fi
ac_fn_c_check_func "$LINENO" "ldap_init_fd" "ac_cv_func_ldap_init_fd"
if test "x$ac_cv_func_ldap_init_fd" = xyes
then :
  printf "%s\n" "#define HAVE_LDAP_INIT_FD 1" >>confdefs.h

fi


  if test "$LDAPLIBNAME" = "wldap32"; then
    curl_ldap_msg="enabled (winldap)"

printf "%s\n" "#define USE_WIN32_LDAP 1" >>confdefs.h







<
<
<
<
<
<







24201
24202
24203
24204
24205
24206
24207






24208
24209
24210
24211
24212
24213
24214

if test x$CURL_DISABLE_LDAP != x1 ; then
  ac_fn_c_check_func "$LINENO" "ldap_url_parse" "ac_cv_func_ldap_url_parse"
if test "x$ac_cv_func_ldap_url_parse" = xyes
then :
  printf "%s\n" "#define HAVE_LDAP_URL_PARSE 1" >>confdefs.h







fi


  if test "$LDAPLIBNAME" = "wldap32"; then
    curl_ldap_msg="enabled (winldap)"

printf "%s\n" "#define USE_WIN32_LDAP 1" >>confdefs.h
25441
25442
25443
25444
25445
25446
25447
25448
25449
25450
25451
25452


25453























25454
25455
25456
25457
25458




25459
25460
25461
25462
25463
25464
25465










































25466

25467
25468

25469

25470
25471
25472
25473
25474
25475
25476
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi



{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL)" >&5
printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL)... " >&6; }
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
  if test "x$OPT_AMISSL" != xno; then
    ssl_msg=


    if test "x$OPT_AMISSL" != "xno"; then























      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      ssl_msg="AmiSSL"
      test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
      AMISSL_ENABLED=1




      LIBS="-lamisslauto $LIBS"

printf "%s\n" "#define USE_AMISSL 1" >>confdefs.h


printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h











































    else

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }

    fi

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







|
|



>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>





>
>
>
>
|






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>


>
|
>







25371
25372
25373
25374
25375
25376
25377
25378
25379
25380
25381
25382
25383
25384
25385
25386
25387
25388
25389
25390
25391
25392
25393
25394
25395
25396
25397
25398
25399
25400
25401
25402
25403
25404
25405
25406
25407
25408
25409
25410
25411
25412
25413
25414
25415
25416
25417
25418
25419
25420
25421
25422
25423
25424
25425
25426
25427
25428
25429
25430
25431
25432
25433
25434
25435
25436
25437
25438
25439
25440
25441
25442
25443
25444
25445
25446
25447
25448
25449
25450
25451
25452
25453
25454
25455
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
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi



{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL v5)" >&5
printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... " >&6; }
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
  if test "x$OPT_AMISSL" != xno; then
    ssl_msg=
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        #include <libraries/amisslmaster.h>
        #include <openssl/opensslv.h>

int main (void)
{

        #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
            defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
            defined(PROTO_AMISSL_H)
        return 0;
        #else
        #error not AmiSSL v5 / OpenSSL 3
        #endif

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      ssl_msg="AmiSSL"
      test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
      AMISSL_ENABLED=1
      OPENSSL_ENABLED=1
      # Use AmiSSL's built-in ca bundle
      check_for_ca_bundle=1
      with_ca_fallback=yes
      LIBS="-lamisslstubs -lamisslauto $LIBS"

printf "%s\n" "#define USE_AMISSL 1" >>confdefs.h


printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h


printf "%s\n" "#define HAVE_OPENSSL3 1" >>confdefs.h

      ac_fn_c_check_header_compile "$LINENO" "openssl/x509.h" "ac_cv_header_openssl_x509_h" "$ac_includes_default"
if test "x$ac_cv_header_openssl_x509_h" = xyes
then :
  printf "%s\n" "#define HAVE_OPENSSL_X509_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "openssl/rsa.h" "ac_cv_header_openssl_rsa_h" "$ac_includes_default"
if test "x$ac_cv_header_openssl_rsa_h" = xyes
then :
  printf "%s\n" "#define HAVE_OPENSSL_RSA_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "openssl/crypto.h" "ac_cv_header_openssl_crypto_h" "$ac_includes_default"
if test "x$ac_cv_header_openssl_crypto_h" = xyes
then :
  printf "%s\n" "#define HAVE_OPENSSL_CRYPTO_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "openssl/pem.h" "ac_cv_header_openssl_pem_h" "$ac_includes_default"
if test "x$ac_cv_header_openssl_pem_h" = xyes
then :
  printf "%s\n" "#define HAVE_OPENSSL_PEM_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default"
if test "x$ac_cv_header_openssl_ssl_h" = xyes
then :
  printf "%s\n" "#define HAVE_OPENSSL_SSL_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "openssl/err.h" "ac_cv_header_openssl_err_h" "$ac_includes_default"
if test "x$ac_cv_header_openssl_err_h" = xyes
then :
  printf "%s\n" "#define HAVE_OPENSSL_ERR_H 1" >>confdefs.h

fi

                              CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
  fi
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
27174
27175
27176
27177
27178
27179
27180

27181
27182
27183
27184
27185
27186
27187
/* end confdefs.h.  */


/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG

#include <wolfssl/ssl.h>

int main (void)
{

	  return wolfSSL_Init();








>







27178
27179
27180
27181
27182
27183
27184
27185
27186
27187
27188
27189
27190
27191
27192
/* end confdefs.h.  */


/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
#include <wolfssl/options.h>
#include <wolfssl/ssl.h>

int main (void)
{

	  return wolfSSL_Init();

27220
27221
27222
27223
27224
27225
27226


27227
27228
27229
27230
27231
27232
27233
27234
27235
27236
27237
27238
27239
27240
27241




27242
27243
27244
27245
27246
27247
27248
27249




27250
27251
27252
27253
27254
27255
27256
27257
27258
27259
27260
27261


27262

27263

27264
27265
27266
27267
27268
27269
27270
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected wolfSSL" >&5
printf "%s\n" "$as_me: detected wolfSSL" >&6;}
      check_for_ca_bundle=1



            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
printf %s "checking size of long long... " >&6; }
if test ${ac_cv_sizeof_long_long+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{




switch (0) case 0: case (sizeof (long long) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_long_long=$ac_size




fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_long_long != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_long_long = x ; then
  as_fn_error $? "cannot determine a size for long long" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
printf "%s\n" "$ac_cv_sizeof_long_long" >&6; }




printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h




      LIBS="$addlib -lm $LIBS"

                        ac_fn_c_check_func "$LINENO" "wolfSSL_get_peer_certificate" "ac_cv_func_wolfSSL_get_peer_certificate"
if test "x$ac_cv_func_wolfSSL_get_peer_certificate" = xyes







>
>
|

<
<
|
<
|
|







>
>
>
>
|






|
>
>
>
>


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

>
|
>







27225
27226
27227
27228
27229
27230
27231
27232
27233
27234
27235


27236

27237
27238
27239
27240
27241
27242
27243
27244
27245
27246
27247
27248
27249
27250
27251
27252
27253
27254
27255
27256
27257
27258
27259
27260
27261
27262
27263
27264

27265
27266
27267
27268
27269
27270
27271
27272
27273
27274
27275
27276
27277
27278
27279
27280
27281
27282
27283
27284
27285
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected wolfSSL" >&5
printf "%s\n" "$as_me: detected wolfSSL" >&6;}
      check_for_ca_bundle=1



  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
printf %s "checking size of long long... " >&6; }


  r=0

    for typesize in 8 4 2 16 1; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{
switch(0) {
       case 0:
       case (sizeof(long long) == $typesize):;
     }

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

       r=$typesize
else $as_nop

       r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
        if test $r -gt 0; then

      break;
    fi
  done
  if test $r -eq 0; then
    as_fn_error $? "Failed to find size of long long" "$LINENO" 5
  fi
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
printf "%s\n" "$r" >&6; }
    tname=$(echo "ac_cv_sizeof_long long" | tr A-Z a-z | tr " " "_")
  eval "$tname=$r"


printf "%s\n" "#define SIZEOF_LONG_LONG $r" >>confdefs.h




      LIBS="$addlib -lm $LIBS"

                        ac_fn_c_check_func "$LINENO" "wolfSSL_get_peer_certificate" "ac_cv_func_wolfSSL_get_peer_certificate"
if test "x$ac_cv_func_wolfSSL_get_peer_certificate" = xyes
28075
28076
28077
28078
28079
28080
28081





28082
28083
28084
28085
28086
28087
28088
28089
28090
28091
28092
28093
28094
28095
28096



28097
28098
28099
28100
28101
28102
28103



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






case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED$RUSTLS_ENABLED"
in
x)
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
printf "%s\n" "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this." >&5
printf "%s\n" "$as_me: WARNING: Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this." >&2;}
  ;;
x1)
  # one SSL backend is enabled

  SSL_ENABLED="1"
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5
printf "%s\n" "$as_me: built with one SSL backend" >&6;}
  ;;



*)
  # more than one SSL backend is enabled

  SSL_ENABLED="1"

  CURL_WITH_MULTI_SSL="1"








>
>
>
>
>
|


<
|
<
|








>
>
>







28090
28091
28092
28093
28094
28095
28096
28097
28098
28099
28100
28101
28102
28103
28104

28105

28106
28107
28108
28109
28110
28111
28112
28113
28114
28115
28116
28117
28118
28119
28120
28121
28122
28123
28124



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

if test "x$curl_cv_native_windows" = "xyes" &&
   test "x$curl_mingw_original" = "xno"; then
  LIBS="-lbcrypt $LIBS"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED$SSL_DISABLED"
in
x)

  as_fn_error $? "TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more.

Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this." "$LINENO" 5
  ;;
x1)
  # one SSL backend is enabled

  SSL_ENABLED="1"
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5
printf "%s\n" "$as_me: built with one SSL backend" >&6;}
  ;;
xD)
  # explicitly built without TLS
  ;;
*)
  # more than one SSL backend is enabled

  SSL_ENABLED="1"

  CURL_WITH_MULTI_SSL="1"

31091
31092
31093
31094
31095
31096
31097





























































































































































































































































31098
31099
31100
31101
31102
31103
31104
  else
        if test X"$want_tcp2" != Xdefault; then
                  as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file." "$LINENO" 5
    fi
  fi
fi































































































































































































































































OPT_NGHTTP3="yes"

if test "x$NGTCP2_ENABLED" = "x"; then
  # without ngtcp2, nghttp3 is of no use for us
  OPT_NGHTTP3="no"
fi







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







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
31204
31205
31206
31207
31208
31209
31210
31211
31212
31213
31214
31215
31216
31217
31218
31219
31220
31221
31222
31223
31224
31225
31226
31227
31228
31229
31230
31231
31232
31233
31234
31235
31236
31237
31238
31239
31240
31241
31242
31243
31244
31245
31246
31247
31248
31249
31250
31251
31252
31253
31254
31255
31256
31257
31258
31259
31260
31261
31262
31263
31264
31265
31266
31267
31268
31269
31270
31271
31272
31273
31274
31275
31276
31277
31278
31279
31280
31281
31282
31283
31284
31285
31286
31287
31288
31289
31290
31291
31292
31293
31294
31295
31296
31297
31298
31299
31300
31301
31302
31303
31304
31305
31306
31307
31308
31309
31310
31311
31312
31313
31314
31315
31316
31317
31318
31319
31320
31321
31322
31323
31324
31325
31326
31327
31328
31329
31330
31331
31332
31333
31334
31335
31336
31337
31338
31339
31340
31341
31342
31343
31344
31345
31346
31347
31348
31349
31350
31351
31352
31353
31354
31355
31356
31357
31358
31359
31360
31361
31362
31363
31364
31365
31366
31367
31368
31369
31370
31371
31372
31373
31374
31375
31376
31377
31378
  else
        if test X"$want_tcp2" != Xdefault; then
                  as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file." "$LINENO" 5
    fi
  fi
fi

if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then
    CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"


    if test -n "$PKG_CONFIG"; then
      PKGCONFIG="$PKG_CONFIG"
    else
      if test -n "$ac_tool_prefix"; then
  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_PKGCONFIG+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  case $PKGCONFIG in
  [\\/]* | ?:[\\/]*)
  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
  ;;
  *)
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_dummy="$PATH:/usr/bin:/usr/local/bin"
for as_dir in $as_dummy
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    for ac_exec_ext in '' $ac_executable_extensions; do
  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
    ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
    break 2
  fi
done
  done
IFS=$as_save_IFS

  ;;
esac
fi
PKGCONFIG=$ac_cv_path_PKGCONFIG
if test -n "$PKGCONFIG"; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
printf "%s\n" "$PKGCONFIG" >&6; }
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi


fi
if test -z "$ac_cv_path_PKGCONFIG"; then
  ac_pt_PKGCONFIG=$PKGCONFIG
  # Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  case $ac_pt_PKGCONFIG in
  [\\/]* | ?:[\\/]*)
  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
  ;;
  *)
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_dummy="$PATH:/usr/bin:/usr/local/bin"
for as_dir in $as_dummy
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    for ac_exec_ext in '' $ac_executable_extensions; do
  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
    ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
    break 2
  fi
done
  done
IFS=$as_save_IFS

  ;;
esac
fi
ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
if test -n "$ac_pt_PKGCONFIG"; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi

  if test "x$ac_pt_PKGCONFIG" = x; then
    PKGCONFIG="no"
  else
    case $cross_compiling:$ac_tool_warned in
yes:)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
    PKGCONFIG=$ac_pt_PKGCONFIG
  fi
else
  PKGCONFIG="$ac_cv_path_PKGCONFIG"
fi

    fi

    if test "x$PKGCONFIG" != "xno"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_wolfssl options with pkg-config" >&5
printf %s "checking for libngtcp2_crypto_wolfssl options with pkg-config... " >&6; }
            itexists=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi
         $PKGCONFIG --exists libngtcp2_crypto_wolfssl >/dev/null 2>&1 && echo 1`

      if test -z "$itexists"; then
                        PKGCONFIG="no"
        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      else
        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
printf "%s\n" "found" >&6; }
      fi
    fi


  if test "$PKGCONFIG" != "no" ; then
    LIB_NGTCP2_CRYPTO_WOLFSSL=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi

      $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl`
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&5
printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&6;}

    CPP_NGTCP2_CRYPTO_WOLFSSL=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi
       $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl`
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&5
printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&6;}

    LD_NGTCP2_CRYPTO_WOLFSSL=`
    if test -n "$want_tcp2_path"; then
      PKG_CONFIG_LIBDIR="$want_tcp2_path"
      export PKG_CONFIG_LIBDIR
    fi

      $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl`
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&5
printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&6;}

    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL"
    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL"
    LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS"

    if test "x$cross_compiling" != "xyes"; then
      DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'`
    fi
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl" >&5
printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl... " >&6; }
if test ${ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lngtcp2_crypto_wolfssl  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


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

              for ac_header in ngtcp2/ngtcp2_crypto.h
do :
  ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default"
if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes
then :
  printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h
 NGTCP2_ENABLED=1

printf "%s\n" "#define USE_NGTCP2_CRYPTO_WOLFSSL 1" >>confdefs.h

          USE_NGTCP2_CRYPTO_WOLFSSL=1

          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL"
          export CURL_LIBRARY_PATH
          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&5
printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&6;}

fi

done

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

fi


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


OPT_NGHTTP3="yes"

if test "x$NGTCP2_ENABLED" = "x"; then
  # without ngtcp2, nghttp3 is of no use for us
  OPT_NGHTTP3="no"
fi
31979
31980
31981
31982
31983
31984
31985
31986
31987
31988
31989
31990
31991
31992
31993
31994
31995
31996
31997
31998
31999
32000
32001
32002
32003
32004
32005
32006
32007
32008
32009
32010
32011
32012
32013
32014
32015
32016
32017
32018
32019
32020
32021
32022
32023
32024
32025
32026
32027
32028
32029
32030
32031
32032
32033
32034
32035
32036
32037
32038
32039
32040
32041
32042
32043
32044
32045
32046
32047
32048
32049
32050
32051
32052
32053
32054
32055
32056
32057
32058
32059
32060
32061
32062
32063
32064
32065
32066
32067
32068
32069
32070
32071
32072
32073
32074
32075
32076
32077
32078
32079
32080
32081
32082
32083
32084
32085
32086
32087
32088
32089
32090
32091
32092
32093
32094
32095
32096
32097
32098
32099
32100
32101
32102
32103
32104
32105
32106
32107
32108
32109
32110
32111
32112
32113
32114
32115
32116
32117
32118
32119
32120
32121
32122
32123
32124
32125
32126
32127
32128
32129
32130
32131
32132
32133
32134
32135
32136
32137
32138
32139
32140
32141
32142
32143
32144
32145
32146
32147
32148
32149
32150
32151
32152
32153
32154
32155
32156
32157
32158
32159
32160
32161
32162
32163
32164
32165
32166
32167
    ;;
  *)
        FISH_FUNCTIONS_DIR="$withval"

    ;;
esac


  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for malloc.h" >&5
printf %s "checking for malloc.h... " >&6; }
if test ${curl_cv_header_malloc_h+y}
then :
  printf %s "(cached) " >&6
else $as_nop

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


#include <malloc.h>

int main (void)
{

        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      curl_cv_header_malloc_h="yes"

else $as_nop

      curl_cv_header_malloc_h="no"

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

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_malloc_h" >&5
printf "%s\n" "$curl_cv_header_malloc_h" >&6; }
  if test "$curl_cv_header_malloc_h" = "yes"; then

printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h

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


#include <stdlib.h>

int main (void)
{

        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      curl_cv_need_header_malloc_h="no"

else $as_nop

      curl_cv_need_header_malloc_h="yes"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    #
    case "$curl_cv_need_header_malloc_h" in
      yes)

printf "%s\n" "#define NEED_MALLOC_H 1" >>confdefs.h

        ;;
    esac
  fi


  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for memory.h" >&5
printf %s "checking for memory.h... " >&6; }
if test ${curl_cv_header_memory_h+y}
then :
  printf %s "(cached) " >&6
else $as_nop

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


#include <memory.h>

int main (void)
{

        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      curl_cv_header_memory_h="yes"

else $as_nop

      curl_cv_header_memory_h="no"

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

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_memory_h" >&5
printf "%s\n" "$curl_cv_header_memory_h" >&6; }
  if test "$curl_cv_header_memory_h" = "yes"; then

printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h

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


#include <stdlib.h>

int main (void)
{

        void *p = malloc(10);
        void *q = calloc(10,10);
        free(p);
        free(q);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      curl_cv_need_header_memory_h="no"

else $as_nop

      curl_cv_need_header_memory_h="yes"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    #
    case "$curl_cv_need_header_memory_h" in
      yes)

printf "%s\n" "#define NEED_MEMORY_H 1" >>confdefs.h

        ;;
    esac
  fi


ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif







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







32253
32254
32255
32256
32257
32258
32259















































































































































































32260
32261
32262
32263
32264
32265
32266
    ;;
  *)
        FISH_FUNCTIONS_DIR="$withval"

    ;;
esac
















































































































































































ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
32921
32922
32923
32924
32925
32926
32927
32928
32929
32930
32931
32932
32933
32934
32935
32936
32937
32938
32939
32940
32941
32942
32943
32944
32945
32946
32947
32948
32949
32950
32951
32952
32953
32954
32955
32956
32957
32958
32959
32960
32961
32962
32963
32964
32965
32966


"
if test "x$ac_cv_header_fcntl_h" = xyes
then :
  printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_NETINET_IN6_H
#include <netinet/in6.h>
#endif
#ifdef HAVE_SYS_UN_H
#include <sys/un.h>
#endif


"
if test "x$ac_cv_header_alloca_h" = xyes
then :
  printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>







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







33020
33021
33022
33023
33024
33025
33026
































33027
33028
33029
33030
33031
33032
33033


"
if test "x$ac_cv_header_fcntl_h" = xyes
then :
  printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h

































fi
ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
33839
33840
33841
33842
33843
33844
33845


33846
33847
33848
33849
33850
33851
33852
33853
33854
33855
33856
33857
33858
33859
33860




33861
33862
33863
33864
33865
33866
33867
33868




33869
33870
33871
33872
33873
33874
33875
33876
33877
33878
33879
33880


33881

33882
33883
33884



33885
33886
33887
33888
33889
33890

33891
33892
33893
33894
33895
33896
33897
33898
33899




33900
33901
33902
33903
33904
33905
33906
33907




33908
33909
33910
33911
33912
33913
33914
33915
33916
33917
33918
33919


33920

33921
33922
33923



33924
33925
33926
33927
33928
33929

33930
33931
33932
33933
33934
33935
33936
33937
33938




33939
33940
33941
33942
33943
33944
33945
33946




33947
33948
33949
33950
33951
33952
33953
33954
33955
33956
33957
33958
33959
33960
33961
33962
33963
33964
33965
33966
33967
33968
33969
33970
33971
33972
33973
33974
33975
33976
33977
33978
33979
33980
33981
33982
33983
33984
33985
33986
33987
33988
33989
33990
33991
33992
33993
33994
33995
33996
33997
33998
33999
34000
34001
34002
34003
34004
34005
34006
34007

34008
34009
34010
34011
34012
34013
34014
34015
34016




34017
34018
34019
34020
34021
34022
34023
34024




34025
34026
34027
34028
34029
34030
34031
34032
34033
34034
34035
34036


34037

34038
34039
34040



34041
34042
34043
34044
34045
34046

34047
34048
34049
34050
34051
34052
34053
34054
34055




34056
34057
34058
34059
34060
34061
34062
34063




34064
34065
34066
34067
34068
34069
34070
34071
34072
34073
34074
34075


34076

34077

34078
34079
34080
34081
34082


34083
34084
34085
34086
34087
34088
34089
34090
34091
34092
34093
34094
34095
34096
34097
34098
34099




34100
34101
34102
34103
34104
34105
34106
34107




34108
34109
34110
34111
34112
34113
34114
34115
34116
34117
34118
34119


34120

34121

34122
34123
34124
34125
34126
34127
34128
34129
34130
34131
34132
34133
34134
34135
34136
34137
34138
34139
34140
34141
34142
34143
34144
34145
34146
34147
34148
34149
34150
34151
34152
34153
34154
34155
34156
34157
34158
34159
34160
34161
34162
34163
34164
34165
34166
34167
34168
34169
34170
34171
34172
34173
34174
34175
34176
34177
34178
34179
     ;;
   esac


      fi




{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
printf %s "checking size of size_t... " >&6; }
if test ${ac_cv_sizeof_size_t+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{




switch (0) case 0: case (sizeof (size_t) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_size_t=$ac_size




fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_size_t != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_size_t = x ; then
  as_fn_error $? "cannot determine a size for size_t" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }




printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h





{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
printf %s "checking size of long... " >&6; }
if test ${ac_cv_sizeof_long+y}
then :
  printf %s "(cached) " >&6
else $as_nop

  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{




switch (0) case 0: case (sizeof (long) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_long=$ac_size




fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_long != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_long = x ; then
  as_fn_error $? "cannot determine a size for long" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
printf "%s\n" "$ac_cv_sizeof_long" >&6; }




printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h





{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
printf %s "checking size of int... " >&6; }
if test ${ac_cv_sizeof_int+y}
then :
  printf %s "(cached) " >&6
else $as_nop

  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{




switch (0) case 0: case (sizeof (int) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_int=$ac_size




fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_int != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_int = x ; then
  as_fn_error $? "cannot determine a size for int" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
printf "%s\n" "$ac_cv_sizeof_int" >&6; }

printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h


{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
printf %s "checking size of short... " >&6; }
if test ${ac_cv_sizeof_short+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{
switch (0) case 0: case (sizeof (short) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_short=$ac_size
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_short != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_short = x ; then
  as_fn_error $? "cannot determine a size for short" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
printf "%s\n" "$ac_cv_sizeof_short" >&6; }

printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h


{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
printf %s "checking size of time_t... " >&6; }
if test ${ac_cv_sizeof_time_t+y}
then :
  printf %s "(cached) " >&6
else $as_nop

  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{




switch (0) case 0: case (sizeof (time_t) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_time_t=$ac_size




fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_time_t != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_time_t = x ; then
  as_fn_error $? "cannot determine a size for time_t" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }




printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h





{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
printf %s "checking size of off_t... " >&6; }
if test ${ac_cv_sizeof_off_t+y}
then :
  printf %s "(cached) " >&6
else $as_nop

  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{




switch (0) case 0: case (sizeof (off_t) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_off_t=$ac_size




fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_off_t != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_off_t = x ; then
  as_fn_error $? "cannot determine a size for off_t" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
printf "%s\n" "$ac_cv_sizeof_off_t" >&6; }




printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h




o=$CPPFLAGS
CPPFLAGS="-I$srcdir/include $CPPFLAGS"


{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5
printf %s "checking size of curl_off_t... " >&6; }
if test ${ac_cv_sizeof_curl_off_t+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>

#include <curl/system.h>


int main (void)
{




switch (0) case 0: case (sizeof (curl_off_t) == $ac_size):;
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_sizeof_curl_off_t=$ac_size




fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  if test x$ac_cv_sizeof_curl_off_t != x ; then break; fi
done

fi

if test x$ac_cv_sizeof_curl_off_t = x ; then
  as_fn_error $? "cannot determine a size for curl_off_t" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_curl_off_t" >&5
printf "%s\n" "$ac_cv_sizeof_curl_off_t" >&6; }




printf "%s\n" "#define SIZEOF_CURL_OFF_T $ac_cv_sizeof_curl_off_t" >>confdefs.h



CPPFLAGS=$o

ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
if test "x$ac_cv_type_long_long" = xyes
then :

printf "%s\n" "#define HAVE_LONGLONG 1" >>confdefs.h

   longlong="yes"

fi


if test "xyes" = "x$longlong"; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if numberLL works" >&5
printf %s "checking if numberLL works... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */



int main (void)
{

      long long val = 1000LL;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_LL 1" >>confdefs.h


else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }

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


# check for ssize_t
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
if test "x$ac_cv_type_ssize_t" = xyes
then :

else $as_nop







>
>
|

<
<
|
<
|
|







>
>
>
>
|






|
>
>
>
>


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

>
|


>
>
>
|

<
<
<
<
>
|
|







>
>
>
>
|






|
>
>
>
>


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

>
|


>
>
>
|

<
<
<
<
>
|
|







>
>
>
>
|






|
>
>
>
>


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


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

<

<
<
<
<
<

<


|

<
<
<
<
>
|
|







>
>
>
>
|






|
>
>
>
>


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

>
|


>
>
>
|

<
<
<
<
>
|
|







>
>
>
>
|






|
>
>
>
>


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

>
|
>





>
>
|

<
<
|
<
|
|









>
>
>
>
|






|
>
>
>
>


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

>
|
>















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







33906
33907
33908
33909
33910
33911
33912
33913
33914
33915
33916


33917

33918
33919
33920
33921
33922
33923
33924
33925
33926
33927
33928
33929
33930
33931
33932
33933
33934
33935
33936
33937
33938
33939
33940
33941
33942
33943
33944
33945

33946
33947
33948
33949
33950
33951
33952
33953
33954
33955
33956
33957
33958
33959
33960
33961
33962
33963
33964
33965




33966
33967
33968
33969
33970
33971
33972
33973
33974
33975
33976
33977
33978
33979
33980
33981
33982
33983
33984
33985
33986
33987
33988
33989
33990
33991
33992
33993
33994

33995
33996
33997
33998
33999
34000
34001
34002
34003
34004
34005
34006
34007
34008
34009
34010
34011
34012
34013
34014




34015
34016
34017
34018
34019
34020
34021
34022
34023
34024
34025
34026
34027
34028
34029
34030
34031
34032
34033
34034
34035
34036
34037
34038
34039
34040
34041
34042
34043

34044
34045
34046
34047
34048
34049
34050
34051
34052

34053












34054
34055






34056







34057

34058





34059

34060
34061
34062
34063




34064
34065
34066
34067
34068
34069
34070
34071
34072
34073
34074
34075
34076
34077
34078
34079
34080
34081
34082
34083
34084
34085
34086
34087
34088
34089
34090
34091
34092

34093
34094
34095
34096
34097
34098
34099
34100
34101
34102
34103
34104
34105
34106
34107
34108
34109
34110
34111
34112




34113
34114
34115
34116
34117
34118
34119
34120
34121
34122
34123
34124
34125
34126
34127
34128
34129
34130
34131
34132
34133
34134
34135
34136
34137
34138
34139
34140
34141

34142
34143
34144
34145
34146
34147
34148
34149
34150
34151
34152
34153
34154
34155
34156
34157
34158
34159
34160
34161
34162
34163
34164


34165

34166
34167
34168
34169
34170
34171
34172
34173
34174
34175
34176
34177
34178
34179
34180
34181
34182
34183
34184
34185
34186
34187
34188
34189
34190
34191
34192
34193
34194
34195

34196
34197
34198
34199
34200
34201
34202
34203
34204
34205
34206
34207
34208
34209
34210
34211
34212
34213
34214
34215
34216
34217
34218
34219
34220
34221
34222
34223
34224




































34225
34226
34227
34228
34229
34230
34231
     ;;
   esac


      fi




  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
printf %s "checking size of size_t... " >&6; }


  r=0

    for typesize in 8 4 2 16 1; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{
switch(0) {
       case 0:
       case (sizeof(size_t) == $typesize):;
     }

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

       r=$typesize
else $as_nop

       r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
        if test $r -gt 0; then

      break;
    fi
  done
  if test $r -eq 0; then
    as_fn_error $? "Failed to find size of size_t" "$LINENO" 5
  fi
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
printf "%s\n" "$r" >&6; }
    tname=$(echo "ac_cv_sizeof_size_t" | tr A-Z a-z | tr " " "_")
  eval "$tname=$r"


printf "%s\n" "#define SIZEOF_SIZE_T $r" >>confdefs.h





  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
printf %s "checking size of long... " >&6; }




  r=0
    for typesize in 8 4 2 16 1; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{
switch(0) {
       case 0:
       case (sizeof(long) == $typesize):;
     }

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

       r=$typesize
else $as_nop

       r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
        if test $r -gt 0; then

      break;
    fi
  done
  if test $r -eq 0; then
    as_fn_error $? "Failed to find size of long" "$LINENO" 5
  fi
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
printf "%s\n" "$r" >&6; }
    tname=$(echo "ac_cv_sizeof_long" | tr A-Z a-z | tr " " "_")
  eval "$tname=$r"


printf "%s\n" "#define SIZEOF_LONG $r" >>confdefs.h





  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
printf %s "checking size of int... " >&6; }




  r=0
    for typesize in 8 4 2 16 1; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{
switch(0) {
       case 0:
       case (sizeof(int) == $typesize):;
     }

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

       r=$typesize
else $as_nop

       r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
        if test $r -gt 0; then

      break;
    fi
  done
  if test $r -eq 0; then
    as_fn_error $? "Failed to find size of int" "$LINENO" 5
  fi
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
printf "%s\n" "$r" >&6; }
    tname=$(echo "ac_cv_sizeof_int" | tr A-Z a-z | tr " " "_")

  eval "$tname=$r"




















printf "%s\n" "#define SIZEOF_INT $r" >>confdefs.h



















  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
printf %s "checking size of time_t... " >&6; }




  r=0
    for typesize in 8 4 2 16 1; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{
switch(0) {
       case 0:
       case (sizeof(time_t) == $typesize):;
     }

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

       r=$typesize
else $as_nop

       r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
        if test $r -gt 0; then

      break;
    fi
  done
  if test $r -eq 0; then
    as_fn_error $? "Failed to find size of time_t" "$LINENO" 5
  fi
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
printf "%s\n" "$r" >&6; }
    tname=$(echo "ac_cv_sizeof_time_t" | tr A-Z a-z | tr " " "_")
  eval "$tname=$r"


printf "%s\n" "#define SIZEOF_TIME_T $r" >>confdefs.h





  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
printf %s "checking size of off_t... " >&6; }




  r=0
    for typesize in 8 4 2 16 1; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>


int main (void)
{
switch(0) {
       case 0:
       case (sizeof(off_t) == $typesize):;
     }

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

       r=$typesize
else $as_nop

       r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
        if test $r -gt 0; then

      break;
    fi
  done
  if test $r -eq 0; then
    as_fn_error $? "Failed to find size of off_t" "$LINENO" 5
  fi
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
printf "%s\n" "$r" >&6; }
    tname=$(echo "ac_cv_sizeof_off_t" | tr A-Z a-z | tr " " "_")
  eval "$tname=$r"


printf "%s\n" "#define SIZEOF_OFF_T $r" >>confdefs.h




o=$CPPFLAGS
CPPFLAGS="-I$srcdir/include $CPPFLAGS"


  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5
printf %s "checking size of curl_off_t... " >&6; }


  r=0

    for typesize in 8 4 2 16 1; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>

#include <curl/system.h>


int main (void)
{
switch(0) {
       case 0:
       case (sizeof(curl_off_t) == $typesize):;
     }

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

       r=$typesize
else $as_nop

       r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
        if test $r -gt 0; then

      break;
    fi
  done
  if test $r -eq 0; then
    as_fn_error $? "Failed to find size of curl_off_t" "$LINENO" 5
  fi
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
printf "%s\n" "$r" >&6; }
    tname=$(echo "ac_cv_sizeof_curl_off_t" | tr A-Z a-z | tr " " "_")
  eval "$tname=$r"


printf "%s\n" "#define SIZEOF_CURL_OFF_T $r" >>confdefs.h



CPPFLAGS=$o

ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
if test "x$ac_cv_type_long_long" = xyes
then :

printf "%s\n" "#define HAVE_LONGLONG 1" >>confdefs.h

   longlong="yes"

fi







































# check for ssize_t
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
if test "x$ac_cv_type_ssize_t" = xyes
then :

else $as_nop
34564
34565
34566
34567
34568
34569
34570
34571
34572
34573
34574
34575
34576
34577
34578
printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h

fi




    ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_select_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_socket_h" = xyes







|







34616
34617
34618
34619
34620
34621
34622
34623
34624
34625
34626
34627
34628
34629
34630
printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h

fi




      ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_select_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_socket_h" = xyes
34610
34611
34612
34613
34614
34615
34616
34617
34618
34619
34620
34621
34622
34623
34624
34625
34626
34627
34628
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
#endif

int main (void)
{

      select(0, 0, 0, 0, 0);








<
|
<
<
<







34662
34663
34664
34665
34666
34667
34668

34669



34670
34671
34672
34673
34674
34675
34676
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif

$curl_includes_bsdsocket



#endif

int main (void)
{

      select(0, 0, 0, 0, 0);

34689
34690
34691
34692
34693
34694
34695
34696
34697
34698
34699
34700
34701
34702
34703
34704
34705
34706
34707
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
#define SELECTCALLCONV
#endif
#ifndef HAVE_STRUCT_TIMEVAL
                    struct timeval {
                      long tv_sec;
                      long tv_usec;
                    };







<
|
<
<
<







34737
34738
34739
34740
34741
34742
34743

34744



34745
34746
34747
34748
34749
34750
34751
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif

$curl_includes_bsdsocket



#define SELECTCALLCONV
#endif
#ifndef HAVE_STRUCT_TIMEVAL
                    struct timeval {
                      long tv_sec;
                      long tv_usec;
                    };
34809
34810
34811
34812
34813
34814
34815
34816
34817
34818
34819
34820
34821
34822
34823

      curl_cv_func_select="yes"
    fi
  fi



    ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_socket_h" = xyes







|







34853
34854
34855
34856
34857
34858
34859
34860
34861
34862
34863
34864
34865
34866
34867

      curl_cv_func_select="yes"
    fi
  fi



      ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_socket_h" = xyes
34839
34840
34841
34842
34843
34844
34845
34846
34847
34848
34849
34850
34851
34852
34853
34854
34855
34856
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif







<
|
<
<







34883
34884
34885
34886
34887
34888
34889

34890


34891
34892
34893
34894
34895
34896
34897
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
34908
34909
34910
34911
34912
34913
34914
34915
34916
34917
34918
34919
34920
34921
34922
34923
34924
34925
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define RECVCALLCONV PASCAL
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define RECVCALLCONV







<
|
<
<







34949
34950
34951
34952
34953
34954
34955

34956


34957
34958
34959
34960
34961
34962
34963
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define RECVCALLCONV PASCAL
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define RECVCALLCONV
34990
34991
34992
34993
34994
34995
34996
34997
34998
34999
35000
35001
35002
35003
35004
      curl_cv_func_recv="yes"
    fi
  else
    as_fn_error $? "Unable to link function recv" "$LINENO" 5
  fi


    ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_socket_h" = xyes







|







35028
35029
35030
35031
35032
35033
35034
35035
35036
35037
35038
35039
35040
35041
35042
      curl_cv_func_recv="yes"
    fi
  else
    as_fn_error $? "Unable to link function recv" "$LINENO" 5
  fi


      ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_socket_h" = xyes
35020
35021
35022
35023
35024
35025
35026
35027
35028
35029
35030
35031
35032
35033
35034
35035
35036
35037
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif







<
|
<
<







35058
35059
35060
35061
35062
35063
35064

35065


35066
35067
35068
35069
35070
35071
35072
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
35089
35090
35091
35092
35093
35094
35095
35096
35097
35098
35099
35100
35101
35102
35103
35104
35105
35106
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define SENDCALLCONV PASCAL
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define SENDCALLCONV







<
|
<
<







35124
35125
35126
35127
35128
35129
35130

35131


35132
35133
35134
35135
35136
35137
35138
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#define SENDCALLCONV PASCAL
#else

$curl_includes_bsdsocket


#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define SENDCALLCONV
35239
35240
35241
35242
35243
35244
35245
35246
35247
35248
35249
35250
35251
35252
35253
35254
35255
35256
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_PROTO_BSDSOCKET_H
#include <proto/bsdsocket.h>
struct Library *SocketBase = NULL;
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif







<
<
<
<







35271
35272
35273
35274
35275
35276
35277




35278
35279
35280
35281
35282
35283
35284
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else




#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
35717
35718
35719
35720
35721
35722
35723
35724
35725
35726
35727
35728
35729
35730
35731
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket can be linked" >&5
printf %s "checking if closesocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_socket

int main (void)
{

      if(0 != closesocket(0))
        return 1;







<







35745
35746
35747
35748
35749
35750
35751

35752
35753
35754
35755
35756
35757
35758
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket can be linked" >&5
printf %s "checking if closesocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_winsock2

      $curl_includes_socket

int main (void)
{

      if(0 != closesocket(0))
        return 1;
35755
35756
35757
35758
35759
35760
35761
35762
35763
35764
35765
35766
35767
35768
35769
  if test "$tst_links_closesocket" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is prototyped" >&5
printf %s "checking if closesocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_socket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "closesocket" >/dev/null 2>&1
then :








<







35782
35783
35784
35785
35786
35787
35788

35789
35790
35791
35792
35793
35794
35795
  if test "$tst_links_closesocket" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is prototyped" >&5
printf %s "checking if closesocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_winsock2

      $curl_includes_socket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "closesocket" >/dev/null 2>&1
then :

35786
35787
35788
35789
35790
35791
35792
35793
35794
35795
35796
35797
35798
35799
35800
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is compilable" >&5
printf %s "checking if closesocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_socket

int main (void)
{

        if(0 != closesocket(0))
          return 1;







<







35812
35813
35814
35815
35816
35817
35818

35819
35820
35821
35822
35823
35824
35825
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is compilable" >&5
printf %s "checking if closesocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2

        $curl_includes_socket

int main (void)
{

        if(0 != closesocket(0))
          return 1;
35876
35877
35878
35879
35880
35881
35882
35883
35884
35885
35886
35887
35888
35889
35890
35891
35892
35893
35894

35895
35896
35897
35898
35899
35900
35901
then :
  printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h

fi



    #
  tst_links_closesocket_camel="unknown"
  tst_proto_closesocket_camel="unknown"
  tst_compi_closesocket_camel="unknown"
  tst_allow_closesocket_camel="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket can be linked" >&5
printf %s "checking if CloseSocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */



      $curl_includes_sys_socket

int main (void)
{

      if(0 != CloseSocket(0))
        return 1;







|











>







35901
35902
35903
35904
35905
35906
35907
35908
35909
35910
35911
35912
35913
35914
35915
35916
35917
35918
35919
35920
35921
35922
35923
35924
35925
35926
35927
then :
  printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h

fi



      #
  tst_links_closesocket_camel="unknown"
  tst_proto_closesocket_camel="unknown"
  tst_compi_closesocket_camel="unknown"
  tst_allow_closesocket_camel="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket can be linked" >&5
printf %s "checking if CloseSocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_bsdsocket
      $curl_includes_sys_socket

int main (void)
{

      if(0 != CloseSocket(0))
        return 1;
35924
35925
35926
35927
35928
35929
35930

35931
35932
35933
35934
35935
35936
35937
  #
  if test "$tst_links_closesocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket is prototyped" >&5
printf %s "checking if CloseSocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_sys_socket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "CloseSocket" >/dev/null 2>&1
then :








>







35950
35951
35952
35953
35954
35955
35956
35957
35958
35959
35960
35961
35962
35963
35964
  #
  if test "$tst_links_closesocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket is prototyped" >&5
printf %s "checking if CloseSocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_bsdsocket
      $curl_includes_sys_socket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "CloseSocket" >/dev/null 2>&1
then :

35953
35954
35955
35956
35957
35958
35959

35960
35961
35962
35963
35964
35965
35966
  if test "$tst_proto_closesocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket is compilable" >&5
printf %s "checking if CloseSocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */



        $curl_includes_sys_socket

int main (void)
{

        if(0 != CloseSocket(0))
          return 1;







>







35980
35981
35982
35983
35984
35985
35986
35987
35988
35989
35990
35991
35992
35993
35994
  if test "$tst_proto_closesocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket is compilable" >&5
printf %s "checking if CloseSocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_bsdsocket
        $curl_includes_sys_socket

int main (void)
{

        if(0 != CloseSocket(0))
          return 1;
36016
36017
36018
36019
36020
36021
36022
36023
36024
36025
36026
36027
36028
36029
36030
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_closesocket_camel="no"
  fi


        #
  tst_links_connect="unknown"
  tst_proto_connect="unknown"
  tst_compi_connect="unknown"
  tst_allow_connect="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect can be linked" >&5
printf %s "checking if connect can be linked... " >&6; }







|







36044
36045
36046
36047
36048
36049
36050
36051
36052
36053
36054
36055
36056
36057
36058
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_closesocket_camel="no"
  fi


          #
  tst_links_connect="unknown"
  tst_proto_connect="unknown"
  tst_compi_connect="unknown"
  tst_allow_connect="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect can be linked" >&5
printf %s "checking if connect can be linked... " >&6; }
36100
36101
36102
36103
36104
36105
36106
36107
36108
36109
36110
36111
36112
36113
36114
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect is compilable" >&5
printf %s "checking if connect is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket

int main (void)
{

        if(0 != connect(0, 0, 0))







|







36128
36129
36130
36131
36132
36133
36134
36135
36136
36137
36138
36139
36140
36141
36142
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect is compilable" >&5
printf %s "checking if connect is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
        $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket

int main (void)
{

        if(0 != connect(0, 0, 0))
37746
37747
37748
37749
37750
37751
37752
37753
37754
37755
37756
37757
37758
37759
37760
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname is compilable" >&5
printf %s "checking if gethostbyname is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_netdb

int main (void)
{

        if(0 != gethostbyname(0))
          return 1;







|







37774
37775
37776
37777
37778
37779
37780
37781
37782
37783
37784
37785
37786
37787
37788
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname is compilable" >&5
printf %s "checking if gethostbyname is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
        $curl_includes_bsdsocket
        $curl_includes_netdb

int main (void)
{

        if(0 != gethostbyname(0))
          return 1;
37900
37901
37902
37903
37904
37905
37906

37907
37908
37909
37910
37911
37912
37913
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 3 args." >&5
printf %s "checking if gethostbyname_r takes 3 args.... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


          $curl_includes_netdb


int main (void)
{

          if(0 != gethostbyname_r(0, 0, 0))
            return 1;








>







37928
37929
37930
37931
37932
37933
37934
37935
37936
37937
37938
37939
37940
37941
37942
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 3 args." >&5
printf %s "checking if gethostbyname_r takes 3 args.... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


          $curl_includes_netdb
          $curl_includes_bsdsocket

int main (void)
{

          if(0 != gethostbyname_r(0, 0, 0))
            return 1;

37937
37938
37939
37940
37941
37942
37943

37944
37945
37946
37947
37948
37949
37950
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 5 args." >&5
printf %s "checking if gethostbyname_r takes 5 args.... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


          $curl_includes_netdb


int main (void)
{

          if(0 != gethostbyname_r(0, 0, 0, 0, 0))
            return 1;








>







37966
37967
37968
37969
37970
37971
37972
37973
37974
37975
37976
37977
37978
37979
37980
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 5 args." >&5
printf %s "checking if gethostbyname_r takes 5 args.... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


          $curl_includes_netdb
          $curl_includes_bsdsocket

int main (void)
{

          if(0 != gethostbyname_r(0, 0, 0, 0, 0))
            return 1;

37974
37975
37976
37977
37978
37979
37980

37981
37982
37983
37984
37985
37986
37987
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 6 args." >&5
printf %s "checking if gethostbyname_r takes 6 args.... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


          $curl_includes_netdb


int main (void)
{

          if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
            return 1;








>







38004
38005
38006
38007
38008
38009
38010
38011
38012
38013
38014
38015
38016
38017
38018
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 6 args." >&5
printf %s "checking if gethostbyname_r takes 6 args.... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


          $curl_includes_netdb
          $curl_includes_bsdsocket

int main (void)
{

          if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
            return 1;

38085
38086
38087
38088
38089
38090
38091
38092
38093
38094
38095
38096
38097
38098
38099
38100
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname can be linked" >&5
printf %s "checking if gethostname can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_unistd

int main (void)
{

      if(0 != gethostname(0, 0))
        return 1;








|
|







38116
38117
38118
38119
38120
38121
38122
38123
38124
38125
38126
38127
38128
38129
38130
38131
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname can be linked" >&5
printf %s "checking if gethostname can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_winsock2
      $curl_includes_unistd
      $curl_includes_bsdsocket

int main (void)
{

      if(0 != gethostname(0, 0))
        return 1;

38123
38124
38125
38126
38127
38128
38129
38130
38131
38132
38133
38134
38135
38136
38137
38138
  if test "$tst_links_gethostname" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is prototyped" >&5
printf %s "checking if gethostname is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_unistd

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "gethostname" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5







|
|







38154
38155
38156
38157
38158
38159
38160
38161
38162
38163
38164
38165
38166
38167
38168
38169
  if test "$tst_links_gethostname" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is prototyped" >&5
printf %s "checking if gethostname is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_winsock2
      $curl_includes_unistd
      $curl_includes_bsdsocket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "gethostname" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
38154
38155
38156
38157
38158
38159
38160
38161
38162
38163
38164
38165
38166
38167
38168
38169
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is compilable" >&5
printf %s "checking if gethostname is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_unistd

int main (void)
{

        if(0 != gethostname(0, 0))
          return 1;








|
|







38185
38186
38187
38188
38189
38190
38191
38192
38193
38194
38195
38196
38197
38198
38199
38200
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is compilable" >&5
printf %s "checking if gethostname is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
        $curl_includes_unistd
        $curl_includes_bsdsocket

int main (void)
{

        if(0 != gethostname(0, 0))
          return 1;

38197
38198
38199
38200
38201
38202
38203
38204
38205
38206
38207
38208
38209
38210
38211
38212
      for tst_arg2 in 'int' 'unsigned int' 'size_t'; do
        if test "$tst_gethostname_type_arg2" = "unknown"; then
          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


              $curl_includes_winsock2
      $curl_includes_bsdsocket
              $curl_includes_unistd
              $curl_preprocess_callconv
              extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);

int main (void)
{

              if(0 != gethostname(0, 0))







|
|







38228
38229
38230
38231
38232
38233
38234
38235
38236
38237
38238
38239
38240
38241
38242
38243
      for tst_arg2 in 'int' 'unsigned int' 'size_t'; do
        if test "$tst_gethostname_type_arg2" = "unknown"; then
          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


              $curl_includes_winsock2
              $curl_includes_unistd
              $curl_includes_bsdsocket
              $curl_preprocess_callconv
              extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);

int main (void)
{

              if(0 != gethostname(0, 0))
40053
40054
40055
40056
40057
40058
40059
40060
40061
40062
40063
40064
40065
40066
40067
40068
40069
40070
40071
40072
40073
40074
40075
40076
40077
40078
40079
40080
40081
40082
40083
40084
40085
40086
40087
40088
40089
40090
40091
40092
40093
40094
40095
40096
40097
40098
40099
40100
40101
40102
40103
40104
40105
40106
40107
40108
40109
40110
40111
40112
40113
40114
40115
40116
40117
40118
40119
40120
40121
40122
40123
40124
40125
40126
40127
40128
40129
40130
40131
40132
40133
40134
40135
40136
40137
40138
40139
40140
40141
40142
40143
40144
40145
40146
40147
40148
40149
40150
40151
40152
40153
40154
40155
40156
40157
40158
40159
40160
40161
40162
40163
40164
40165
40166
40167
40168
40169
40170
40171
40172
40173
40174
40175
40176
40177
40178
40179
40180
40181
40182
40183
40184
40185
40186
40187
40188
40189
40190
40191
40192
40193
40194
40195
40196
40197
40198
40199
40200
40201
40202
40203
40204
40205
40206
40207
40208
40209
40210
40211
40212
40213
40214
40215
40216
40217
40218
40219
40220
40221
40222
40223
40224
40225
40226
40227
40228
40229
40230
40231
40232
40233
40234
40235
40236
40237
40238
40239
40240
40241
40242
40243
40244
40245
40246
40247
40248
40249
40250
40251
40252
40253
40254
40255
40256
40257
40258
40259
40260
40261
40262
40263
40264
40265
40266
40267
40268
40269
40270
40271
40272
40273
40274
40275
40276
40277
40278
40279
40280
40281
40282
40283
40284
40285
40286
40287
40288
40289
40290
40291
40292
40293
40294
40295
40296
40297
40298
40299
40300
40301
40302
40303
40304
40305
40306
40307
40308
40309
40310
40311
40312
40313
40314
40315
40316
40317
40318
40319
40320
40321
40322
40323
40324
40325
40326
40327
40328
40329
40330
40331
40332
40333
40334
40335
40336
40337
40338
40339
40340
40341
40342
40343
40344
40345
40346
40347
40348
40349
40350
40351
40352
40353
40354
40355
40356
40357
40358
40359
40360
40361
40362
40363
40364
40365
40366
40367
40368
40369
40370
40371
40372
40373
40374
40375
40376
40377
40378
40379
40380
40381
40382
40383
40384
40385
40386
40387
40388
40389
40390
40391
40392
40393
40394
40395
40396
40397
40398
40399
40400
40401
40402
40403
40404
40405
40406
40407
40408
40409
40410
40411
40412
40413
40414
40415
40416
40417
40418
40419
40420
40421
40422
40423
40424
40425
40426
40427
40428
40429
40430
40431
40432
40433
40434
    curl_cv_func_inet_pton="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_inet_pton="no"
  fi


curl_includes_stropts="\
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_UNISTD_H
#  include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#  include <sys/socket.h>
#endif
#ifdef HAVE_SYS_IOCTL_H
#  include <sys/ioctl.h>
#endif
#ifdef HAVE_STROPTS_H
#  include <stropts.h>
#endif
/* includes end */"
  ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_stropts
"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_stropts
"
if test "x$ac_cv_header_unistd_h" = xyes
then :
  printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_stropts
"
if test "x$ac_cv_header_sys_socket_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$curl_includes_stropts
"
if test "x$ac_cv_header_sys_ioctl_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$curl_includes_stropts
"
if test "x$ac_cv_header_stropts_h" = xyes
then :
  printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h

fi



    #
  tst_links_ioctl="unknown"
  tst_proto_ioctl="unknown"
  tst_compi_ioctl="unknown"
  tst_allow_ioctl="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl can be linked" >&5
printf %s "checking if ioctl can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define ioctl innocuous_ioctl
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef ioctl
#ifdef __cplusplus
extern "C"
#endif
char ioctl ();
#if defined __stub_ioctl || defined __stub___ioctl
choke me
#endif

int main (void)
{
return ioctl ();
 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
    tst_links_ioctl="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_links_ioctl="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_ioctl" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is prototyped" >&5
printf %s "checking if ioctl is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_stropts

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "ioctl" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_proto_ioctl="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_proto_ioctl="no"

fi
rm -rf conftest*

  fi
  #
  if test "$tst_proto_ioctl" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is compilable" >&5
printf %s "checking if ioctl is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_stropts

int main (void)
{

        if(0 != ioctl(0, 0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_ioctl="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_ioctl="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_ioctl" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl usage allowed" >&5
printf %s "checking if ioctl usage allowed... " >&6; }
    if test "x$curl_disallow_ioctl" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_ioctl="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_ioctl="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl might be used" >&5
printf %s "checking if ioctl might be used... " >&6; }
  if test "$tst_links_ioctl" = "yes" &&
     test "$tst_proto_ioctl" = "yes" &&
     test "$tst_compi_ioctl" = "yes" &&
     test "$tst_allow_ioctl" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_IOCTL 1" >>confdefs.h

    curl_cv_func_ioctl="yes"

  #
  tst_compi_ioctl_fionbio="unknown"
  tst_allow_ioctl_fionbio="unknown"
  #
  if test "$curl_cv_func_ioctl" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO is compilable" >&5
printf %s "checking if ioctl FIONBIO is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_stropts

int main (void)
{

        int flags = 0;
        if(0 != ioctl(0, FIONBIO, &flags))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_ioctl_fionbio="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_ioctl_fionbio="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_ioctl_fionbio" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO usage allowed" >&5
printf %s "checking if ioctl FIONBIO usage allowed... " >&6; }
    if test "x$curl_disallow_ioctl_fionbio" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_ioctl_fionbio="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_ioctl_fionbio="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO might be used" >&5
printf %s "checking if ioctl FIONBIO might be used... " >&6; }
  if test "$tst_compi_ioctl_fionbio" = "yes" &&
     test "$tst_allow_ioctl_fionbio" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_IOCTL_FIONBIO 1" >>confdefs.h

    curl_cv_func_ioctl_fionbio="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_ioctl_fionbio="no"
  fi


  #
  tst_compi_ioctl_siocgifaddr="unknown"
  tst_allow_ioctl_siocgifaddr="unknown"
  #
  if test "$curl_cv_func_ioctl" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR is compilable" >&5
printf %s "checking if ioctl SIOCGIFADDR is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_stropts
        #include <net/if.h>

int main (void)
{

        struct ifreq ifr;
        if(0 != ioctl(0, SIOCGIFADDR, &ifr))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_ioctl_siocgifaddr="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_ioctl_siocgifaddr="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR usage allowed" >&5
printf %s "checking if ioctl SIOCGIFADDR usage allowed... " >&6; }
    if test "x$curl_disallow_ioctl_siocgifaddr" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_ioctl_siocgifaddr="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_ioctl_siocgifaddr="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR might be used" >&5
printf %s "checking if ioctl SIOCGIFADDR might be used... " >&6; }
  if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
     test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_IOCTL_SIOCGIFADDR 1" >>confdefs.h

    curl_cv_func_ioctl_siocgifaddr="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_ioctl_siocgifaddr="no"
  fi

  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_ioctl="no"
  fi


    #
  tst_links_ioctlsocket="unknown"
  tst_proto_ioctlsocket="unknown"
  tst_compi_ioctlsocket="unknown"
  tst_allow_ioctlsocket="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket can be linked" >&5
printf %s "checking if ioctlsocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_winsock2
      $curl_includes_bsdsocket

int main (void)
{

      if(0 != ioctlsocket(0, 0, 0))
        return 1;








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














<







40084
40085
40086
40087
40088
40089
40090

































































































































































































































































































































































40091
40092
40093
40094
40095
40096
40097
40098
40099
40100
40101
40102
40103
40104

40105
40106
40107
40108
40109
40110
40111
    curl_cv_func_inet_pton="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_inet_pton="no"
  fi



































































































































































































































































































































































    #
  tst_links_ioctlsocket="unknown"
  tst_proto_ioctlsocket="unknown"
  tst_compi_ioctlsocket="unknown"
  tst_allow_ioctlsocket="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket can be linked" >&5
printf %s "checking if ioctlsocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_winsock2


int main (void)
{

      if(0 != ioctlsocket(0, 0, 0))
        return 1;

40457
40458
40459
40460
40461
40462
40463
40464
40465
40466
40467
40468
40469
40470
40471
  if test "$tst_links_ioctlsocket" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is prototyped" >&5
printf %s "checking if ioctlsocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_winsock2
      $curl_includes_bsdsocket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "ioctlsocket" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5







<







40134
40135
40136
40137
40138
40139
40140

40141
40142
40143
40144
40145
40146
40147
  if test "$tst_links_ioctlsocket" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is prototyped" >&5
printf %s "checking if ioctlsocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_winsock2


_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "ioctlsocket" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
40487
40488
40489
40490
40491
40492
40493
40494
40495
40496
40497
40498
40499
40500
40501
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is compilable" >&5
printf %s "checking if ioctlsocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket

int main (void)
{

        if(0 != ioctlsocket(0, 0, 0))
          return 1;








<







40163
40164
40165
40166
40167
40168
40169

40170
40171
40172
40173
40174
40175
40176
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is compilable" >&5
printf %s "checking if ioctlsocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2


int main (void)
{

        if(0 != ioctlsocket(0, 0, 0))
          return 1;

40556
40557
40558
40559
40560
40561
40562
40563
40564
40565
40566
40567
40568
40569
40570
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO is compilable" >&5
printf %s "checking if ioctlsocket FIONBIO is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket

int main (void)
{

        int flags = 0;
        if(0 != ioctlsocket(0, FIONBIO, &flags))
          return 1;







<







40231
40232
40233
40234
40235
40236
40237

40238
40239
40240
40241
40242
40243
40244
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO is compilable" >&5
printf %s "checking if ioctlsocket FIONBIO is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2


int main (void)
{

        int flags = 0;
        if(0 != ioctlsocket(0, FIONBIO, &flags))
          return 1;
40636
40637
40638
40639
40640
40641
40642
40643
40644
40645
40646
40647
40648
40649
40650
40651
40652
40653
40654
40655
40656
40657
40658
40659

40660

40661
40662
40663
40664
40665
40666
40667
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket can be linked" >&5
printf %s "checking if IoctlSocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define IoctlSocket innocuous_IoctlSocket
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef IoctlSocket
#ifdef __cplusplus
extern "C"
#endif
char IoctlSocket ();
#if defined __stub_IoctlSocket || defined __stub___IoctlSocket
choke me
#endif

int main (void)
{

return IoctlSocket ();

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :







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



>
|
>







40310
40311
40312
40313
40314
40315
40316


40317











40318
40319
40320
40321
40322
40323
40324
40325
40326
40327
40328
40329
40330
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket can be linked" >&5
printf %s "checking if IoctlSocket can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */




      $curl_includes_bsdsocket












int main (void)
{

      IoctlSocket(0, 0, 0);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
40682
40683
40684
40685
40686
40687
40688
40689
40690
40691
40692
40693
40694
40695
40696
  #
  if test "$tst_links_ioctlsocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket is prototyped" >&5
printf %s "checking if IoctlSocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_stropts

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "IoctlSocket" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5







|







40345
40346
40347
40348
40349
40350
40351
40352
40353
40354
40355
40356
40357
40358
40359
  #
  if test "$tst_links_ioctlsocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket is prototyped" >&5
printf %s "checking if IoctlSocket is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_bsdsocket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "IoctlSocket" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
40711
40712
40713
40714
40715
40716
40717
40718
40719
40720
40721
40722
40723
40724
40725
  if test "$tst_proto_ioctlsocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket is compilable" >&5
printf %s "checking if IoctlSocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_stropts

int main (void)
{

        if(0 != IoctlSocket(0, 0, 0))
          return 1;








|







40374
40375
40376
40377
40378
40379
40380
40381
40382
40383
40384
40385
40386
40387
40388
  if test "$tst_proto_ioctlsocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket is compilable" >&5
printf %s "checking if IoctlSocket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_bsdsocket

int main (void)
{

        if(0 != IoctlSocket(0, 0, 0))
          return 1;

40768
40769
40770
40771
40772
40773
40774
40775
40776
40777
40778
40779
40780
40781
40782
40783
40784
40785
40786
40787
40788
40789
40790
40791
40792
40793
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL 1" >>confdefs.h

    curl_cv_func_ioctlsocket_camel="yes"

  #
  tst_compi_ioctlsocket_camel_fionbio="unknown"
  tst_allow_ioctlsocket_camel_fionbio="unknown"
  #
  if test "$curl_cv_func_ioctlsocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO is compilable" >&5
printf %s "checking if IoctlSocket FIONBIO is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_stropts

int main (void)
{

        long flags = 0;
        if(0 != IoctlSocket(0, FIONBIO, &flags))
          return 1;







|










|







40431
40432
40433
40434
40435
40436
40437
40438
40439
40440
40441
40442
40443
40444
40445
40446
40447
40448
40449
40450
40451
40452
40453
40454
40455
40456
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL 1" >>confdefs.h

    curl_cv_func_ioctlsocket_camel="yes"

    #
  tst_compi_ioctlsocket_camel_fionbio="unknown"
  tst_allow_ioctlsocket_camel_fionbio="unknown"
  #
  if test "$curl_cv_func_ioctlsocket_camel" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO is compilable" >&5
printf %s "checking if IoctlSocket FIONBIO is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_bsdsocket

int main (void)
{

        long flags = 0;
        if(0 != IoctlSocket(0, FIONBIO, &flags))
          return 1;
40846
40847
40848
40849
40850
40851
40852
40853
40854
40855
40856
40857
40858
40859
40860
40861
40862
40863
40864
40865
40866
40867
40868
40869
40870
40871
40872
40873
40874
40875
40876
40877
40878
40879
40880
40881
40882
40883
40884
40885
40886
40887
40888
40889
40890
40891
40892
40893
40894
40895
40896
40897
40898
40899
40900
40901
40902
40903
40904
40905
40906
40907
40908
40909
40910
40911
40912
40913
40914
40915
40916
40917
40918
40919
40920
40921
40922
40923
40924
40925
40926
40927
40928
40929
40930
40931
40932
40933
40934
40935
40936
40937
40938
40939
40940
40941
40942
40943
40944
40945
40946
40947
40948
40949
40950
40951
40952
40953
40954
40955
40956
40957
40958
40959
40960
40961
40962
40963
40964
40965
40966
40967
40968
40969
40970
40971
40972
40973
40974
40975
40976
40977
40978
40979
40980
40981
40982
40983
40984
40985
40986
40987
40988
40989
40990
40991
40992
40993
40994
40995
40996
40997
40998
40999
41000
41001
41002
41003
41004
41005
41006
41007
41008
41009
41010
41011
41012
41013
41014
41015
41016
41017
41018
41019
41020
41021
41022
41023
41024
41025
41026
41027
41028
41029
41030
41031
41032
41033
41034
41035
41036
41037
41038
41039
41040
41041
41042
41043
41044
41045
41046
41047
41048
41049
41050
41051
41052
41053
41054
41055
41056
41057
41058
41059
41060
41061
41062
41063
41064
41065
41066
41067
41068
41069
41070
41071
41072
41073
41074
41075
41076
41077
41078
41079
41080
41081
41082
41083
41084
41085
41086
41087
41088
41089
41090
41091
41092
41093
41094
41095
41096
41097
41098
41099
41100
41101
41102
41103
41104
41105
41106
41107
41108
41109
41110
41111
41112
41113
41114
41115
41116
41117
41118
41119
41120
41121
41122
41123
41124

  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_ioctlsocket_camel="no"
  fi


      #
  tst_links_localtime_r="unknown"
  tst_proto_localtime_r="unknown"
  tst_compi_localtime_r="unknown"
  tst_works_localtime_r="unknown"
  tst_allow_localtime_r="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r can be linked" >&5
printf %s "checking if localtime_r can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define localtime_r innocuous_localtime_r
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef localtime_r
#ifdef __cplusplus
extern "C"
#endif
char localtime_r ();
#if defined __stub_localtime_r || defined __stub___localtime_r
choke me
#endif

int main (void)
{
return localtime_r ();
 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
    tst_links_localtime_r="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_links_localtime_r="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_localtime_r" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r is prototyped" >&5
printf %s "checking if localtime_r is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_time

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "localtime_r" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_proto_localtime_r="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_proto_localtime_r="no"

fi
rm -rf conftest*

  fi
  #
  if test "$tst_proto_localtime_r" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r is compilable" >&5
printf %s "checking if localtime_r is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_time

int main (void)
{

        if(0 != localtime_r(0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_localtime_r="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_localtime_r="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
    if test "x$cross_compiling" != "xyes" &&
    test "$tst_compi_localtime_r" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r seems to work" >&5
printf %s "checking if localtime_r seems to work... " >&6; }

   case $host_os in
     darwin*)
      if test "$cross_compiling" = yes
then :
  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
See \`config.log' for more details" "$LINENO" 5; }
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_stdlib
        $curl_includes_time

int main (void)
{

        time_t clock = 1170352587;
        struct tm *tmp = 0;
        struct tm result;
        tmp = localtime_r(&clock, &result);
        if(tmp)
          exit(0);
        else
          exit(1);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_works_localtime_r="yes"

else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_works_localtime_r="no"

fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
  conftest.$ac_objext conftest.beam conftest.$ac_ext
fi

     ;;
     *)
      old=$LD_LIBRARY_PATH
      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
      export LD_LIBRARY_PATH
      if test "$cross_compiling" = yes
then :
  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
See \`config.log' for more details" "$LINENO" 5; }
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_stdlib
        $curl_includes_time

int main (void)
{

        time_t clock = 1170352587;
        struct tm *tmp = 0;
        struct tm result;
        tmp = localtime_r(&clock, &result);
        if(tmp)
          exit(0);
        else
          exit(1);

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_works_localtime_r="yes"

else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_works_localtime_r="no"

fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
  conftest.$ac_objext conftest.beam conftest.$ac_ext
fi

      LD_LIBRARY_PATH=$old # restore
     ;;
   esac

  fi
  #
  if test "$tst_compi_localtime_r" = "yes" &&
    test "$tst_works_localtime_r" != "no"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r usage allowed" >&5
printf %s "checking if localtime_r usage allowed... " >&6; }
    if test "x$curl_disallow_localtime_r" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_localtime_r="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_localtime_r="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r might be used" >&5
printf %s "checking if localtime_r might be used... " >&6; }
  if test "$tst_links_localtime_r" = "yes" &&
     test "$tst_proto_localtime_r" = "yes" &&
     test "$tst_compi_localtime_r" = "yes" &&
     test "$tst_allow_localtime_r" = "yes" &&
     test "$tst_works_localtime_r" != "no"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h

    curl_cv_func_localtime_r="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_localtime_r="no"
  fi


    #
  tst_links_memrchr="unknown"
  tst_macro_memrchr="unknown"
  tst_proto_memrchr="unknown"
  tst_compi_memrchr="unknown"
  tst_allow_memrchr="unknown"







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







40509
40510
40511
40512
40513
40514
40515









































































































































































































































































40516
40517
40518
40519
40520
40521
40522

  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_ioctlsocket_camel="no"
  fi











































































































































































































































































    #
  tst_links_memrchr="unknown"
  tst_macro_memrchr="unknown"
  tst_proto_memrchr="unknown"
  tst_compi_memrchr="unknown"
  tst_allow_memrchr="unknown"
41577
41578
41579
41580
41581
41582
41583
41584
41585
41586
41587
41588
41589
41590
41591
41592
41593
41594
41595
41596
41597
41598
41599
41600
41601
41602
41603
41604
41605
41606
41607
41608
41609
41610
41611
41612
41613
41614
41615
41616
41617
41618
41619
41620
41621
41622
41623
41624
41625
41626
41627
41628
41629
41630
41631
41632
41633
41634
41635
41636
41637
41638
41639
41640
41641
41642
41643
41644
41645
41646
41647
41648
41649
41650
41651
41652
41653
41654
41655
41656
41657
41658
41659
41660
41661
41662
41663
41664
41665
41666
41667
41668
41669
41670
41671
41672
41673
41674
41675
41676
41677
41678
41679
41680
41681
41682
41683
41684
41685
41686
41687
41688
41689
41690
41691
41692
41693
41694
41695
41696
41697
41698
41699
41700
41701
41702
41703
41704
41705
41706
41707
41708
41709
41710
41711
41712
41713
41714
41715
41716
41717
41718
41719
41720
41721
41722
41723
41724
41725
41726
41727
41728
41729
41730
41731
41732
41733
41734
41735
41736
41737
41738
41739
41740
41741
41742
41743
41744
41745
41746
41747
41748
41749
41750
41751
41752
41753
41754
41755
41756
41757
41758
41759
41760
41761
41762
41763
41764
41765
41766
41767
41768
41769
41770
41771
41772
41773
41774
41775
41776
41777
41778
41779
41780
41781
41782
41783
41784
41785
41786
41787
41788
41789
41790
41791
41792
41793
41794
41795
41796
41797
41798
41799
41800
41801
41802
41803
41804
41805
41806
41807
41808
41809
41810
41811
41812
41813
41814
41815
41816
41817
41818
41819
41820
41821
41822
41823
  if test "$tst_links_poll" = "yes" &&
     test "$tst_proto_poll" = "yes" &&
     test "$tst_compi_poll" = "yes" &&
     test "$tst_allow_poll" = "yes" &&
     test "$tst_works_poll" != "no"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h


printf "%s\n" "#define HAVE_POLL_FINE 1" >>confdefs.h

    curl_cv_func_poll="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_poll="no"
  fi


      #
  tst_links_setsockopt="unknown"
  tst_proto_setsockopt="unknown"
  tst_compi_setsockopt="unknown"
  tst_allow_setsockopt="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt can be linked" >&5
printf %s "checking if setsockopt can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_sys_socket

int main (void)
{

      if(0 != setsockopt(0, 0, 0, 0, 0))
        return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
    tst_links_setsockopt="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_links_setsockopt="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_setsockopt" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt is prototyped" >&5
printf %s "checking if setsockopt is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_sys_socket

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "setsockopt" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_proto_setsockopt="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_proto_setsockopt="no"

fi
rm -rf conftest*

  fi
  #
  if test "$tst_proto_setsockopt" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt is compilable" >&5
printf %s "checking if setsockopt is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket

int main (void)
{

        if(0 != setsockopt(0, 0, 0, 0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_setsockopt="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_setsockopt="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_setsockopt" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt usage allowed" >&5
printf %s "checking if setsockopt usage allowed... " >&6; }
    if test "x$curl_disallow_setsockopt" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_setsockopt="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_setsockopt="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt might be used" >&5
printf %s "checking if setsockopt might be used... " >&6; }
  if test "$tst_links_setsockopt" = "yes" &&
     test "$tst_proto_setsockopt" = "yes" &&
     test "$tst_compi_setsockopt" = "yes" &&
     test "$tst_allow_setsockopt" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_SETSOCKOPT 1" >>confdefs.h

    curl_cv_func_setsockopt="yes"

  #
  tst_compi_setsockopt_so_nonblock="unknown"
  tst_allow_setsockopt_so_nonblock="unknown"
  #
  if test "$curl_cv_func_setsockopt" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK is compilable" >&5
printf %s "checking if setsockopt SO_NONBLOCK is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket

int main (void)
{

        if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_setsockopt_so_nonblock="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_setsockopt_so_nonblock="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_setsockopt_so_nonblock" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK usage allowed" >&5
printf %s "checking if setsockopt SO_NONBLOCK usage allowed... " >&6; }
    if test "x$curl_disallow_setsockopt_so_nonblock" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_setsockopt_so_nonblock="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_setsockopt_so_nonblock="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK might be used" >&5
printf %s "checking if setsockopt SO_NONBLOCK might be used... " >&6; }
  if test "$tst_compi_setsockopt_so_nonblock" = "yes" &&
     test "$tst_allow_setsockopt_so_nonblock" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_SETSOCKOPT_SO_NONBLOCK 1" >>confdefs.h

    curl_cv_func_setsockopt_so_nonblock="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_setsockopt_so_nonblock="no"
  fi

  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_setsockopt="no"
  fi


curl_includes_signal="\
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_SIGNAL_H







<
<
<










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







40975
40976
40977
40978
40979
40980
40981



40982
40983
40984
40985
40986
40987
40988
40989
40990
40991




























































































































































































































40992
40993
40994
40995
40996
40997
40998
  if test "$tst_links_poll" = "yes" &&
     test "$tst_proto_poll" = "yes" &&
     test "$tst_compi_poll" = "yes" &&
     test "$tst_allow_poll" = "yes" &&
     test "$tst_works_poll" != "no"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }




printf "%s\n" "#define HAVE_POLL_FINE 1" >>confdefs.h

    curl_cv_func_poll="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_poll="no"
  fi






























































































































































































































curl_includes_signal="\
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_SIGNAL_H
42589
42590
42591
42592
42593
42594
42595
42596
42597
42598
42599
42600
42601
42602
42603
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket is compilable" >&5
printf %s "checking if socket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket

int main (void)
{

        if(0 != socket(0, 0, 0))







|







41764
41765
41766
41767
41768
41769
41770
41771
41772
41773
41774
41775
41776
41777
41778
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket is compilable" >&5
printf %s "checking if socket is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_winsock2
        $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket

int main (void)
{

        if(0 != socket(0, 0, 0))
43756
43757
43758
43759
43760
43761
43762
43763
43764
43765
43766
43767
43768
43769
43770
43771
43772
43773
43774
43775
43776
43777
43778
43779
43780
43781
43782
43783
    if test "$tst_glibc_strerror_r" = "yes"; then

printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h


printf "%s\n" "#define HAVE_GLIBC_STRERROR_R 1" >>confdefs.h


printf "%s\n" "#define STRERROR_R_TYPE_ARG3 $tst_glibc_strerror_r_type_arg3" >>confdefs.h

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

printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h


printf "%s\n" "#define HAVE_POSIX_STRERROR_R 1" >>confdefs.h


printf "%s\n" "#define STRERROR_R_TYPE_ARG3 $tst_posix_strerror_r_type_arg3" >>confdefs.h

    fi
    curl_cv_func_strerror_r="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_strerror_r="no"
  fi







<
<
<








<
<
<







42931
42932
42933
42934
42935
42936
42937



42938
42939
42940
42941
42942
42943
42944
42945



42946
42947
42948
42949
42950
42951
42952
    if test "$tst_glibc_strerror_r" = "yes"; then

printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h


printf "%s\n" "#define HAVE_GLIBC_STRERROR_R 1" >>confdefs.h




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

printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h


printf "%s\n" "#define HAVE_POSIX_STRERROR_R 1" >>confdefs.h




    fi
    curl_cv_func_strerror_r="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_strerror_r="no"
  fi
43935
43936
43937
43938
43939
43940
43941
43942
43943
43944
43945
43946
43947
43948
43949
43950
43951
43952
43953
43954
43955
43956
43957
43958
43959
43960
43961
43962
43963
43964
43965
43966
43967
43968
43969
43970
43971
43972
43973
43974
43975
43976
43977
43978
43979
43980
43981
43982
43983
43984
43985
43986
43987
43988
43989
43990
43991
43992
43993
43994
43995
43996
43997
43998
43999
44000
44001
44002
44003
44004
44005
44006
44007
44008
44009
44010
44011
44012
44013
44014
44015
44016
44017
44018
44019
44020
44021
44022
44023
44024
44025
44026
44027
44028
44029
44030
44031
44032
44033
44034
44035
44036
44037
44038
44039
44040
44041
44042
44043
44044
44045
44046
44047
44048
44049
44050
44051
44052
44053
44054
44055
44056
44057
44058
44059
44060
44061
44062
44063
44064
44065
44066
44067
44068
44069
44070
44071
44072
44073
44074
44075
44076
44077
44078
44079
44080
44081
44082
44083
44084
44085
44086
44087
44088
44089
44090
44091
44092
44093
44094
44095
44096
44097
44098
44099
44100
44101
44102
44103
44104
44105
44106
44107
44108
44109
44110
44111
44112
44113
44114
44115
44116
44117
44118
44119
44120
44121
44122
44123
44124
44125
44126
44127
44128
44129
44130
44131
44132
44133
44134
44135
44136
44137
44138
44139
44140
44141
44142
44143
44144
44145
44146
44147
44148
44149
44150
44151
44152
44153
44154
44155
44156
44157
44158
44159
44160
44161
44162
44163
44164
44165
44166
44167
44168
44169
44170
44171
44172
44173
44174
44175
44176
44177
44178
44179
44180
44181
44182
44183
44184
44185
44186
44187
44188
44189
44190
44191
44192
44193
44194
44195
44196
44197
44198
44199
44200
44201
44202
44203
44204
44205
44206
44207
44208
44209
44210
44211
44212
44213
44214
44215
44216
44217
44218
44219
44220
44221
44222
44223
44224
44225
44226
44227
44228
44229
44230
44231
44232
44233
44234
44235
44236
44237
44238
44239
44240
44241
44242
44243
44244
44245
44246
44247
44248
44249
44250
44251
44252
44253
44254
44255
44256
44257
44258
44259
44260
44261
44262
44263
44264
44265
44266
44267
44268
44269
44270
44271
44272
44273
44274
44275
44276
44277
44278
44279
44280
44281
44282
44283
44284
44285
44286
44287
44288
44289
44290
44291
44292
44293
44294
44295
44296
44297
44298
44299
44300
44301
44302
44303
44304
44305
44306
44307
44308
44309
44310
44311
44312
44313
44314
44315
44316
44317
44318
44319
44320
44321
44322
44323
44324
44325
44326
44327
44328
44329
44330
44331
44332
44333
44334
44335
44336
44337
44338
44339
44340
44341
44342
44343
44344
44345
44346
44347
44348
44349
44350
44351
44352
44353
44354
44355
44356
44357
44358
44359
44360
44361
44362
44363
44364
44365
44366
44367
44368
44369
44370
44371
44372
44373
44374
44375
44376
44377
44378
44379
44380
44381
44382
44383
44384
44385
44386
44387
44388
44389
44390
44391
44392
44393
44394
44395
44396
44397
44398
    curl_cv_func_stricmp="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_stricmp="no"
  fi


    #
  tst_links_strncmpi="unknown"
  tst_proto_strncmpi="unknown"
  tst_compi_strncmpi="unknown"
  tst_allow_strncmpi="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi can be linked" >&5
printf %s "checking if strncmpi can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define strncmpi innocuous_strncmpi
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef strncmpi
#ifdef __cplusplus
extern "C"
#endif
char strncmpi ();
#if defined __stub_strncmpi || defined __stub___strncmpi
choke me
#endif

int main (void)
{
return strncmpi ();
 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
    tst_links_strncmpi="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_links_strncmpi="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_strncmpi" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi is prototyped" >&5
printf %s "checking if strncmpi 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 "strncmpi" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_proto_strncmpi="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_proto_strncmpi="no"

fi
rm -rf conftest*

  fi
  #
  if test "$tst_proto_strncmpi" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi is compilable" >&5
printf %s "checking if strncmpi is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_string

int main (void)
{

        if(0 != strncmpi(0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_strncmpi="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_strncmpi="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_strncmpi" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi usage allowed" >&5
printf %s "checking if strncmpi usage allowed... " >&6; }
    if test "x$curl_disallow_strncmpi" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_strncmpi="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_strncmpi="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi might be used" >&5
printf %s "checking if strncmpi might be used... " >&6; }
  if test "$tst_links_strncmpi" = "yes" &&
     test "$tst_proto_strncmpi" = "yes" &&
     test "$tst_compi_strncmpi" = "yes" &&
     test "$tst_allow_strncmpi" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_STRNCMPI 1" >>confdefs.h

    curl_cv_func_strncmpi="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_strncmpi="no"
  fi


    #
  tst_links_strnicmp="unknown"
  tst_proto_strnicmp="unknown"
  tst_compi_strnicmp="unknown"
  tst_allow_strnicmp="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp can be linked" >&5
printf %s "checking if strnicmp can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define strnicmp innocuous_strnicmp
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef strnicmp
#ifdef __cplusplus
extern "C"
#endif
char strnicmp ();
#if defined __stub_strnicmp || defined __stub___strnicmp
choke me
#endif

int main (void)
{
return strnicmp ();
 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
    tst_links_strnicmp="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_links_strnicmp="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_strnicmp" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp is prototyped" >&5
printf %s "checking if strnicmp 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 "strnicmp" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_proto_strnicmp="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_proto_strnicmp="no"

fi
rm -rf conftest*

  fi
  #
  if test "$tst_proto_strnicmp" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp is compilable" >&5
printf %s "checking if strnicmp is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_string

int main (void)
{

        if(0 != strnicmp(0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_strnicmp="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_strnicmp="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_strnicmp" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp usage allowed" >&5
printf %s "checking if strnicmp usage allowed... " >&6; }
    if test "x$curl_disallow_strnicmp" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_strnicmp="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_strnicmp="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp might be used" >&5
printf %s "checking if strnicmp might be used... " >&6; }
  if test "$tst_links_strnicmp" = "yes" &&
     test "$tst_proto_strnicmp" = "yes" &&
     test "$tst_compi_strnicmp" = "yes" &&
     test "$tst_allow_strnicmp" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_STRNICMP 1" >>confdefs.h

    curl_cv_func_strnicmp="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_strnicmp="no"
  fi


    #
  tst_links_strstr="unknown"
  tst_proto_strstr="unknown"
  tst_compi_strstr="unknown"
  tst_allow_strstr="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr can be linked" >&5
printf %s "checking if strstr can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define strstr innocuous_strstr
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef strstr
#ifdef __cplusplus
extern "C"
#endif
char strstr ();
#if defined __stub_strstr || defined __stub___strstr
choke me
#endif

int main (void)
{
return strstr ();
 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
    tst_links_strstr="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_links_strstr="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_strstr" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr is prototyped" >&5
printf %s "checking if strstr 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 "strstr" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_proto_strstr="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_proto_strstr="no"

fi
rm -rf conftest*

  fi
  #
  if test "$tst_proto_strstr" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr is compilable" >&5
printf %s "checking if strstr is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_string

int main (void)
{

        if(0 != strstr(0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_strstr="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_strstr="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_strstr" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr usage allowed" >&5
printf %s "checking if strstr usage allowed... " >&6; }
    if test "x$curl_disallow_strstr" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_strstr="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_strstr="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr might be used" >&5
printf %s "checking if strstr might be used... " >&6; }
  if test "$tst_links_strstr" = "yes" &&
     test "$tst_proto_strstr" = "yes" &&
     test "$tst_compi_strstr" = "yes" &&
     test "$tst_allow_strstr" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h

    curl_cv_func_strstr="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_strstr="no"
  fi


    #
  tst_links_strtok_r="unknown"
  tst_proto_strtok_r="unknown"
  tst_compi_strtok_r="unknown"
  tst_allow_strtok_r="unknown"
  #







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







43104
43105
43106
43107
43108
43109
43110


































































































































































































































































































































































































































































43111
43112
43113
43114
43115
43116
43117
    curl_cv_func_stricmp="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_stricmp="no"
  fi




































































































































































































































































































































































































































































    #
  tst_links_strtok_r="unknown"
  tst_proto_strtok_r="unknown"
  tst_compi_strtok_r="unknown"
  tst_allow_strtok_r="unknown"
  #
44685
44686
44687
44688
44689
44690
44691
44692
44693
44694
44695
44696
44697
44698
44699
44700
44701
44702
44703
44704
44705
44706
44707
44708
44709
44710
44711
44712
44713
44714
44715
44716
44717
44718
44719
44720
44721
44722
44723
44724
44725
44726
44727
44728
44729
44730
44731
44732
44733
44734
44735
44736
44737
44738
44739
44740
44741
44742
44743
44744
44745
44746
44747
44748
44749
44750
44751
44752
44753
44754
44755
44756
44757
44758
44759
44760
44761
44762
44763
44764
44765
44766
44767
44768
44769
44770
44771
44772
44773
44774
44775
44776
44777
44778
44779
44780
44781
44782
44783
44784
44785
44786
44787
44788
44789
44790
44791
44792
44793
44794
44795
44796
44797
44798
44799
44800
44801
44802
44803
44804
44805
44806
44807
44808
44809
44810
44811
44812
44813
44814
44815
44816
44817
44818
44819
44820
44821
44822
44823
44824
44825
44826
44827
44828
44829
44830
44831
44832
44833
44834
44835
44836
44837
44838
44839
44840
44841
44842
44843
44844
44845
44846
44847
44848
44849
44850
44851
44852
44853
44854
44855
44856
44857
44858
44859
44860
44861
44862
44863
44864
44865
44866
44867
44868
44869
44870
44871
44872
44873
44874
    curl_cv_func_strtoll="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_strtoll="no"
  fi


curl_includes_sys_uio="\
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_SYS_UIO_H
#  include <sys/uio.h>
#endif
/* includes end */"
  ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_sys_uio
"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$curl_includes_sys_uio
"
if test "x$ac_cv_header_sys_uio_h" = xyes
then :
  printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h

fi



    #
  tst_links_writev="unknown"
  tst_proto_writev="unknown"
  tst_compi_writev="unknown"
  tst_allow_writev="unknown"
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev can be linked" >&5
printf %s "checking if writev can be linked... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#define writev innocuous_writev
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef writev
#ifdef __cplusplus
extern "C"
#endif
char writev ();
#if defined __stub_writev || defined __stub___writev
choke me
#endif

int main (void)
{
return writev ();
 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"
then :

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
    tst_links_writev="yes"

else $as_nop

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    tst_links_writev="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
  #
  if test "$tst_links_writev" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev is prototyped" >&5
printf %s "checking if writev is prototyped... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

      $curl_includes_sys_uio

_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "writev" >/dev/null 2>&1
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_proto_writev="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_proto_writev="no"

fi
rm -rf conftest*

  fi
  #
  if test "$tst_proto_writev" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev is compilable" >&5
printf %s "checking if writev is compilable... " >&6; }
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


        $curl_includes_sys_uio

int main (void)
{

        if(0 != writev(0, 0, 0))
          return 1;

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_compi_writev="yes"

else $as_nop

      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_compi_writev="no"

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  fi
  #
  if test "$tst_compi_writev" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev usage allowed" >&5
printf %s "checking if writev usage allowed... " >&6; }
    if test "x$curl_disallow_writev" != "xyes"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
      tst_allow_writev="yes"
    else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
      tst_allow_writev="no"
    fi
  fi
  #
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev might be used" >&5
printf %s "checking if writev might be used... " >&6; }
  if test "$tst_links_writev" = "yes" &&
     test "$tst_proto_writev" = "yes" &&
     test "$tst_compi_writev" = "yes" &&
     test "$tst_allow_writev" = "yes"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

printf "%s\n" "#define HAVE_WRITEV 1" >>confdefs.h

    curl_cv_func_writev="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_writev="no"
  fi


case $host in
  *msdosdjgpp)
     ac_cv_func_pipe=no
     skipcheck_pipe=yes
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: skip check for pipe on msdosdjgpp" >&5
printf "%s\n" "$as_me: skip check for pipe on msdosdjgpp" >&6;}







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







43404
43405
43406
43407
43408
43409
43410
















































































































































































43411
43412
43413
43414
43415
43416
43417
    curl_cv_func_strtoll="yes"
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
    curl_cv_func_strtoll="no"
  fi


















































































































































































case $host in
  *msdosdjgpp)
     ac_cv_func_pipe=no
     skipcheck_pipe=yes
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: skip check for pipe on msdosdjgpp" >&5
printf "%s\n" "$as_me: skip check for pipe on msdosdjgpp" >&6;}
44971
44972
44973
44974
44975
44976
44977
44978
44979
44980
44981
44982
44983
44984
44985
printf "%s\n" "#define HAVE_DECL_GETPWUID_R_MISSING 1" >>confdefs.h

fi




  for ac_func in fnmatch fchmod geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe sched_yield sendmsg setlocale setmode setrlimit usleep utime utimes
do :
  as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"
then :
  cat >>confdefs.h <<_ACEOF
#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1







|







43514
43515
43516
43517
43518
43519
43520
43521
43522
43523
43524
43525
43526
43527
43528
printf "%s\n" "#define HAVE_DECL_GETPWUID_R_MISSING 1" >>confdefs.h

fi




  for ac_func in fnmatch fchmod geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe sched_yield sendmsg setlocale setmode setrlimit utime utimes
do :
  as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"
then :
  cat >>confdefs.h <<_ACEOF
#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
45031
45032
45033
45034
45035
45036
45037
45038
45039
45040
45041
45042
45043
45044
45045
  fi

fi

done


            #
  tst_method="unknown"

  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5
printf %s "checking how to set a socket into non-blocking mode... " >&6; }
  if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then
    tst_method="fcntl O_NONBLOCK"
  elif test "x$curl_cv_func_ioctl_fionbio" = "xyes"; then







|







43574
43575
43576
43577
43578
43579
43580
43581
43582
43583
43584
43585
43586
43587
43588
  fi

fi

done


        #
  tst_method="unknown"

  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5
printf %s "checking how to set a socket into non-blocking mode... " >&6; }
  if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then
    tst_method="fcntl O_NONBLOCK"
  elif test "x$curl_cv_func_ioctl_fionbio" = "xyes"; then
45713
45714
45715
45716
45717
45718
45719



45720
45721
45722
45723
45724
45725
45726
45727
45728



45729
45730
45731
45732
45733
45734
45735
45736
45737
45738
45739
45740
45741
         ;;
      *)
         ;;
      esac

            if test "$USE_THREADS_POSIX" != "1"
      then



        case $host in
        *-ibm-aix*)
                      COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
           if test x"$COMPILER_VERSION" = "x"; then
             CFLAGS="$CFLAGS -pthread"
           else
             CFLAGS="$CFLAGS -qthreaded"
           fi
           ;;



        *)
           CFLAGS="$CFLAGS -pthread"
           ;;
        esac
        # assign PTHREAD for pkg-config use
        PTHREAD=" -pthread"
        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
printf %s "checking for pthread_create in -lpthread... " >&6; }
if test ${ac_cv_lib_pthread_pthread_create+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_check_lib_save_LIBS=$LIBS







>
>
>









>
>
>




<
<







44256
44257
44258
44259
44260
44261
44262
44263
44264
44265
44266
44267
44268
44269
44270
44271
44272
44273
44274
44275
44276
44277
44278
44279
44280
44281


44282
44283
44284
44285
44286
44287
44288
         ;;
      *)
         ;;
      esac

            if test "$USE_THREADS_POSIX" != "1"
      then
        # assign PTHREAD for pkg-config use
        PTHREAD=" -pthread"

        case $host in
        *-ibm-aix*)
                      COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
           if test x"$COMPILER_VERSION" = "x"; then
             CFLAGS="$CFLAGS -pthread"
           else
             CFLAGS="$CFLAGS -qthreaded"
           fi
           ;;
        powerpc-*amigaos*)
                      PTHREAD=" -lpthread"
           ;;
        *)
           CFLAGS="$CFLAGS -pthread"
           ;;
        esac


        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
printf %s "checking for pthread_create in -lpthread... " >&6; }
if test ${ac_cv_lib_pthread_pthread_create+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_check_lib_save_LIBS=$LIBS
46363
46364
46365
46366
46367
46368
46369
46370
46371
46372
46373
46374
46375
46376
46377
46378
46379
46380




46381
46382
46383
46384
46385
46386
46387

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support headers-api" >&5
printf %s "checking whether to support headers-api... " >&6; }
# Check whether --enable-headers-api was given.
if test ${enable_headers_api+y}
then :
  enableval=$enable_headers_api;  case "$enableval" in
  *)
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
       ;;
  no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
       curl_headers_msg="no      (--enable-headers-api)"

printf "%s\n" "#define CURL_DISABLE_HEADERS_API 1" >>confdefs.h

       ;;




  esac
else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

fi








<
<
<
<







>
>
>
>







44910
44911
44912
44913
44914
44915
44916




44917
44918
44919
44920
44921
44922
44923
44924
44925
44926
44927
44928
44929
44930
44931
44932
44933
44934

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support headers-api" >&5
printf %s "checking whether to support headers-api... " >&6; }
# Check whether --enable-headers-api was given.
if test ${enable_headers_api+y}
then :
  enableval=$enable_headers_api;  case "$enableval" in




  no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
       curl_headers_msg="no      (--enable-headers-api)"

printf "%s\n" "#define CURL_DISABLE_HEADERS_API 1" >>confdefs.h

       ;;
  *)
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
       ;;
  esac
else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

fi

Changes to jni/curl/configure.ac.
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
AC_ARG_WITH(schannel,dnl
AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]),
  OPT_SCHANNEL=$withval
  TLSCHOICE="schannel")

OPT_SECURETRANSPORT=no
AC_ARG_WITH(secure-transport,dnl
AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),
  OPT_SECURETRANSPORT=$withval
  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"
)


OPT_AMISSL=no
AC_ARG_WITH(amissl,dnl
AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),
  OPT_AMISSL=$withval
  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL")


OPT_OPENSSL=no
dnl Default to no CA bundle
ca="no"
AC_ARG_WITH(ssl,dnl
AS_HELP_STRING([--with-ssl=PATH],[old version of --with-openssl])
AS_HELP_STRING([--without-ssl], [build without any TLS library]),
  OPT_SSL=$withval
  OPT_OPENSSL=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL")


  fi


AC_ARG_WITH(openssl,dnl
AS_HELP_STRING([--with-openssl=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]),
  OPT_OPENSSL=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL")
  fi


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]),
  OPT_GNUTLS=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS")
  fi


OPT_MBEDTLS=no
AC_ARG_WITH(mbedtls,dnl
AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),
  OPT_MBEDTLS=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS")
  fi


OPT_WOLFSSL=no
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)]),
  OPT_WOLFSSL=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL")
  fi


OPT_BEARSSL=no
AC_ARG_WITH(bearssl,dnl
AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),
  OPT_BEARSSL=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL")
  fi


OPT_RUSTLS=no
AC_ARG_WITH(rustls,dnl
AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root]),
  OPT_RUSTLS=$withval
  if test X"$withval" != Xno; then
    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls")
    experimental="$experimental rustls"
  fi


OPT_NSS_AWARE=no
AC_ARG_WITH(nss-deprecated,dnl
AS_HELP_STRING([--with-nss-deprecated],[confirm you realize NSS is going away]),
  if test X"$withval" != Xno; then
    OPT_NSS_AWARE=$withval
  fi
)

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]),
  OPT_NSS=$withval
  if test X"$withval" != Xno; then

    if test X"$OPT_NSS_AWARE" = "Xno" ; then
      AC_MSG_ERROR([NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md])
    fi

    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"
  fi
)

dnl If no TLS choice has been made, check if it was explicitly disabled or
dnl error out to force the user to decide.
if test -z "$TLSCHOICE"; then
  if test "x$OPT_SSL" != "xno"; then







|

|
<
>



|

|
>






|



|
>
>

>


|


|

>



|


|

>



|


|

>



|


|

>



|


|

>



|


|


>



















|







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
AC_ARG_WITH(schannel,dnl
AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]),
  OPT_SCHANNEL=$withval
  TLSCHOICE="schannel")

OPT_SECURETRANSPORT=no
AC_ARG_WITH(secure-transport,dnl
AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),[
  OPT_SECURETRANSPORT=$withval
  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"

])

OPT_AMISSL=no
AC_ARG_WITH(amissl,dnl
AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),[
  OPT_AMISSL=$withval
  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL"
])

OPT_OPENSSL=no
dnl Default to no CA bundle
ca="no"
AC_ARG_WITH(ssl,dnl
AS_HELP_STRING([--with-ssl=PATH],[old version of --with-openssl])
AS_HELP_STRING([--without-ssl], [build without any TLS library]),[
  OPT_SSL=$withval
  OPT_OPENSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
  else
    SSL_DISABLED="D"
  fi
])

AC_ARG_WITH(openssl,dnl
AS_HELP_STRING([--with-openssl=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]),[
  OPT_OPENSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
  fi
])

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]),[
  OPT_GNUTLS=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS"
  fi
])

OPT_MBEDTLS=no
AC_ARG_WITH(mbedtls,dnl
AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),[
  OPT_MBEDTLS=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS"
  fi
])

OPT_WOLFSSL=no
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)]),[
  OPT_WOLFSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL"
  fi
])

OPT_BEARSSL=no
AC_ARG_WITH(bearssl,dnl
AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),[
  OPT_BEARSSL=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL"
  fi
])

OPT_RUSTLS=no
AC_ARG_WITH(rustls,dnl
AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root]),[
  OPT_RUSTLS=$withval
  if test X"$withval" != Xno; then
    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls"
    experimental="$experimental rustls"
  fi
])

OPT_NSS_AWARE=no
AC_ARG_WITH(nss-deprecated,dnl
AS_HELP_STRING([--with-nss-deprecated],[confirm you realize NSS is going away]),
  if test X"$withval" != Xno; then
    OPT_NSS_AWARE=$withval
  fi
)

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]),
  OPT_NSS=$withval
  if test X"$withval" != Xno; then

    if test X"$OPT_NSS_AWARE" = "Xno" ; then
      AC_MSG_ERROR([NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md])
    fi

    [TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"]
  fi
)

dnl If no TLS choice has been made, check if it was explicitly disabled or
dnl error out to force the user to decide.
if test -z "$TLSCHOICE"; then
  if test "x$OPT_SSL" != "xno"; then
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
      CPPFLAGS="$CPPFLAGS -DWINVER=0x501"
      AC_MSG_RESULT([yes])
    ],[
      AC_MSG_RESULT([no])
    ])
    ;;
esac























dnl **********************************************************************
dnl Compilation based checks should not be done before this point.
dnl **********************************************************************

dnl **********************************************************************
dnl Make sure that our checks for headers windows.h winsock2.h
dnl and ws2tcpip.h take precedence over any other further checks which
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
dnl this specific header files. And do them before its results are used.
dnl **********************************************************************

CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$curl_cv_native_windows" in
  X-yes)
    CURL_CHECK_HEADER_WINSOCK2
    CURL_CHECK_HEADER_WS2TCPIP
    CURL_CHECK_HEADER_WINCRYPT
    CURL_CHECK_HEADER_WINLDAP
    CURL_CHECK_HEADER_WINBER
    ;;
  *)
    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_DARWIN_CFLAGS
CURL_DARWIN_SYSTEMCONFIGURATION







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




















<






<







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
      CPPFLAGS="$CPPFLAGS -DWINVER=0x501"
      AC_MSG_RESULT([yes])
    ],[
      AC_MSG_RESULT([no])
    ])
    ;;
esac

# Detect original MinGW (not MinGW-w64)
curl_mingw_original=no
case $host in
  *-*-mingw32*)
    AC_MSG_CHECKING([using original MinGW (not MinGW-w64)])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#include <_mingw.h>
      ]],[[
#if defined(__MINGW64_VERSION_MAJOR)
#error
#endif
      ]])
    ],[
      curl_mingw_original=yes
      AC_MSG_RESULT([yes])
    ],[
      AC_MSG_RESULT([no])
    ])
    ;;
esac

dnl **********************************************************************
dnl Compilation based checks should not be done before this point.
dnl **********************************************************************

dnl **********************************************************************
dnl Make sure that our checks for headers windows.h winsock2.h
dnl and ws2tcpip.h take precedence over any other further checks which
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
dnl this specific header files. And do them before its results are used.
dnl **********************************************************************

CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$curl_cv_native_windows" in
  X-yes)
    CURL_CHECK_HEADER_WINSOCK2
    CURL_CHECK_HEADER_WS2TCPIP
    CURL_CHECK_HEADER_WINCRYPT
    CURL_CHECK_HEADER_WINLDAP

    ;;
  *)
    curl_cv_header_winsock2_h="no"
    curl_cv_header_ws2tcpip_h="no"
    curl_cv_header_wincrypt_h="no"
    curl_cv_header_winldap_h="no"

    ;;
esac
CURL_CHECK_WIN32_LARGEFILE
CURL_CHECK_WIN32_CRYPTO

CURL_DARWIN_CFLAGS
CURL_DARWIN_SYSTEMCONFIGURATION
1127
1128
1129
1130
1131
1132
1133

1134



1135

1136
1137
1138
1139
1140
1141
1142

if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set
then
  dnl This is for AmigaOS with bsdsocket.library - needs testing before -lnet
  AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[

  #include <proto/bsdsocket.h>



  struct Library *SocketBase = NULL;

    ]],[[
      gethostbyname("www.dummysite.com");
    ]])
  ],[
    AC_MSG_RESULT([yes])
    HAVE_GETHOSTBYNAME="1"
    HAVE_PROTO_BSDSOCKET_H="1"







>

>
>
>

>







1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177

if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set
then
  dnl This is for AmigaOS with bsdsocket.library - needs testing before -lnet
  AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
  #define __USE_INLINE__
  #include <proto/bsdsocket.h>
  #ifdef __amigaos4__
  struct SocketIFace *ISocket = NULL;
  #else
  struct Library *SocketBase = NULL;
  #endif
    ]],[[
      gethostbyname("www.dummysite.com");
    ]])
  ],[
    AC_MSG_RESULT([yes])
    HAVE_GETHOSTBYNAME="1"
    HAVE_PROTO_BSDSOCKET_H="1"
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
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
  CURL_CHECK_HEADER_LDAP_SSL

  if test -z "$LDAPLIBNAME" ; then
    if test "$curl_cv_native_windows" = "yes"; then
      dnl Windows uses a single and unique LDAP library name
      LDAPLIBNAME="wldap32"
      LBERLIBNAME="no"







<







1511
1512
1513
1514
1515
1516
1517

1518
1519
1520
1521
1522
1523
1524
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_LDAP_SSL

  if test -z "$LDAPLIBNAME" ; then
    if test "$curl_cv_native_windows" = "yes"; then
      dnl Windows uses a single and unique LDAP library name
      LDAPLIBNAME="wldap32"
      LBERLIBNAME="no"
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
        AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
        AC_SUBST(CURL_DISABLE_LDAPS, [1])])
    fi
  fi
fi

if test x$CURL_DISABLE_LDAP != x1 ; then
  AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])

  if test "$LDAPLIBNAME" = "wldap32"; then
    curl_ldap_msg="enabled (winldap)"
    AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation])
  else
    curl_ldap_msg="enabled (OpenLDAP)"
    if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then







|







1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
        AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
        AC_SUBST(CURL_DISABLE_LDAPS, [1])])
    fi
  fi
fi

if test x$CURL_DISABLE_LDAP != x1 ; then
  AC_CHECK_FUNCS([ldap_url_parse])

  if test "$LDAPLIBNAME" = "wldap32"; then
    curl_ldap_msg="enabled (winldap)"
    AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation])
  else
    curl_ldap_msg="enabled (OpenLDAP)"
    if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
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
CURL_WITH_NSS

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







case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_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-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this.])
  ;;
x1)
  # one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)
  SSL_ENABLED="1"
  AC_MSG_NOTICE([built with one SSL backend])
  ;;



*)
  # more than one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)
  SSL_ENABLED="1"
  AC_SUBST(CURL_WITH_MULTI_SSL)
  CURL_WITH_MULTI_SSL="1"
  AC_DEFINE(CURL_WITH_MULTI_SSL, 1, [built with multiple SSL backends])







>
>
>
>
>
>
|


|
|







>
>
>







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
CURL_WITH_NSS

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

dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer)
if test "x$curl_cv_native_windows" = "xyes" &&
   test "x$curl_mingw_original" = "xno"; then
  LIBS="-lbcrypt $LIBS"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED$SSL_DISABLED"
in
x)
  AC_MSG_ERROR([TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more.
Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this.])
  ;;
x1)
  # one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)
  SSL_ENABLED="1"
  AC_MSG_NOTICE([built with one SSL backend])
  ;;
xD)
  # explicitly built without TLS
  ;;
*)
  # more than one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)
  SSL_ENABLED="1"
  AC_SUBST(CURL_WITH_MULTI_SSL)
  CURL_WITH_MULTI_SSL="1"
  AC_DEFINE(CURL_WITH_MULTI_SSL, 1, [built with multiple SSL backends])
2855
2856
2857
2858
2859
2860
2861























































2862
2863
2864
2865
2866
2867
2868
    if test X"$want_tcp2" != Xdefault; then
      dnl To avoid link errors, we do not allow --with-ngtcp2 without
      dnl a pkgconfig file
      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file.])
    fi
  fi
fi
























































dnl **********************************************************************
dnl Check for nghttp3 (HTTP/3 with ngtcp2)
dnl **********************************************************************

OPT_NGHTTP3="yes"








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







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
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
    if test X"$want_tcp2" != Xdefault; then
      dnl To avoid link errors, we do not allow --with-ngtcp2 without
      dnl a pkgconfig file
      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file.])
    fi
  fi
fi

if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then
  dnl backup the pre-ngtcp2_crypto_wolfssl variables
  CLEANLDFLAGS="$LDFLAGS"
  CLEANCPPFLAGS="$CPPFLAGS"
  CLEANLIBS="$LIBS"

  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_wolfssl, $want_tcp2_path)

  if test "$PKGCONFIG" != "no" ; then
    LIB_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
      $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl`
    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_WOLFSSL])

    CPP_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl
      $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl`
    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_WOLFSSL])

    LD_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
      $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl`
    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_WOLFSSL])

    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL"
    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL"
    LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS"

    if test "x$cross_compiling" != "xyes"; then
      DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'`
    fi
    AC_CHECK_LIB(ngtcp2_crypto_wolfssl, ngtcp2_crypto_recv_client_initial_cb,
      [
       AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
          NGTCP2_ENABLED=1
          AC_DEFINE(USE_NGTCP2_CRYPTO_WOLFSSL, 1, [if ngtcp2_crypto_wolfssl is in use])
          AC_SUBST(USE_NGTCP2_CRYPTO_WOLFSSL, [1])
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH])
       )
      ],
        dnl not found, revert back to clean variables
        LDFLAGS=$CLEANLDFLAGS
        CPPFLAGS=$CLEANCPPFLAGS
        LIBS=$CLEANLIBS
    )

  else
    dnl no ngtcp2_crypto_wolfssl pkg-config found, deal with it
    if test X"$want_tcp2" != Xdefault; then
      dnl To avoid link errors, we do not allow --with-ngtcp2 without
      dnl a pkgconfig file
      AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file.])
    fi
  fi
fi

dnl **********************************************************************
dnl Check for nghttp3 (HTTP/3 with ngtcp2)
dnl **********************************************************************

OPT_NGHTTP3="yes"

3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
  *)
    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 \
        sys/time.h \
        sys/select.h \
        sys/socket.h \







<
<
<







3270
3271
3272
3273
3274
3275
3276



3277
3278
3279
3280
3281
3282
3283
  *)
    dnl --with-fish-functions-dir option used with path
    FISH_FUNCTIONS_DIR="$withval"
    AC_SUBST(FISH_FUNCTIONS_DIR)
    ;;
esac




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 \
        sys/time.h \
        sys/select.h \
        sys/socket.h \
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
        netdb.h \
        sys/sockio.h \
        sys/stat.h \
        sys/param.h \
        termios.h \
        termio.h \
        fcntl.h \
        alloca.h \
        io.h \
        pwd.h \
        utime.h \
        sys/utime.h \
        sys/poll.h \
        poll.h \
        socket.h \







<







3297
3298
3299
3300
3301
3302
3303

3304
3305
3306
3307
3308
3309
3310
        netdb.h \
        sys/sockio.h \
        sys/stat.h \
        sys/param.h \
        termios.h \
        termio.h \
        fcntl.h \

        io.h \
        pwd.h \
        utime.h \
        sys/utime.h \
        sys/poll.h \
        poll.h \
        socket.h \
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
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)
AX_COMPILE_CHECK_SIZEOF(time_t)
AX_COMPILE_CHECK_SIZEOF(off_t)

o=$CPPFLAGS
CPPFLAGS="-I$srcdir/include $CPPFLAGS"
AX_COMPILE_CHECK_SIZEOF(curl_off_t, [
#include <curl/system.h>
])
CPPFLAGS=$o

AC_CHECK_TYPE(long long,
   [AC_DEFINE(HAVE_LONGLONG, 1,
      [Define to 1 if the compiler supports the 'long long' data type.])]
   longlong="yes"
)

if test "xyes" = "x$longlong"; then
  AC_MSG_CHECKING([if numberLL works])
  AC_COMPILE_IFELSE([
    AC_LANG_PROGRAM([[
    ]],[[
      long long val = 1000LL;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
  ],[
    AC_MSG_RESULT([no])
  ])
fi


# check for ssize_t
AC_CHECK_TYPE(ssize_t, ,
   AC_DEFINE(ssize_t, int, [the signed version of size_t]))

# check for bool type
AC_CHECK_TYPE([bool],[







|
|
|
<
|
|



|










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







3354
3355
3356
3357
3358
3359
3360
3361
3362
3363

3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379















3380
3381
3382
3383
3384
3385
3386
AC_C_CONST
CURL_CHECK_VARIADIC_MACROS
AC_TYPE_SIZE_T

CURL_CHECK_STRUCT_TIMEVAL
CURL_VERIFY_RUNTIMELIBS

CURL_SIZEOF(size_t)
CURL_SIZEOF(long)
CURL_SIZEOF(int)

CURL_SIZEOF(time_t)
CURL_SIZEOF(off_t)

o=$CPPFLAGS
CPPFLAGS="-I$srcdir/include $CPPFLAGS"
CURL_SIZEOF(curl_off_t, [
#include <curl/system.h>
])
CPPFLAGS=$o

AC_CHECK_TYPE(long long,
   [AC_DEFINE(HAVE_LONGLONG, 1,
      [Define to 1 if the compiler supports the 'long long' data type.])]
   longlong="yes"
)

















# check for ssize_t
AC_CHECK_TYPE(ssize_t, ,
   AC_DEFINE(ssize_t, int, [the signed version of size_t]))

# check for bool type
AC_CHECK_TYPE([bool],[
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
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
CURL_CHECK_FUNC_GETPEERNAME
CURL_CHECK_FUNC_GETSOCKNAME
CURL_CHECK_FUNC_IF_NAMETOINDEX
CURL_CHECK_FUNC_GETIFADDRS
CURL_CHECK_FUNC_GMTIME_R
CURL_CHECK_FUNC_INET_NTOP
CURL_CHECK_FUNC_INET_PTON
CURL_CHECK_FUNC_IOCTL
CURL_CHECK_FUNC_IOCTLSOCKET
CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
CURL_CHECK_FUNC_LOCALTIME_R
CURL_CHECK_FUNC_MEMRCHR
CURL_CHECK_FUNC_POLL
CURL_CHECK_FUNC_SETSOCKOPT
CURL_CHECK_FUNC_SIGACTION
CURL_CHECK_FUNC_SIGINTERRUPT
CURL_CHECK_FUNC_SIGNAL
CURL_CHECK_FUNC_SIGSETJMP
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

case $host in
  *msdosdjgpp)
     ac_cv_func_pipe=no
     skipcheck_pipe=yes
     AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
    ;;







<


<


<











<
<
<


<







3473
3474
3475
3476
3477
3478
3479

3480
3481

3482
3483

3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494



3495
3496

3497
3498
3499
3500
3501
3502
3503
CURL_CHECK_FUNC_GETPEERNAME
CURL_CHECK_FUNC_GETSOCKNAME
CURL_CHECK_FUNC_IF_NAMETOINDEX
CURL_CHECK_FUNC_GETIFADDRS
CURL_CHECK_FUNC_GMTIME_R
CURL_CHECK_FUNC_INET_NTOP
CURL_CHECK_FUNC_INET_PTON

CURL_CHECK_FUNC_IOCTLSOCKET
CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL

CURL_CHECK_FUNC_MEMRCHR
CURL_CHECK_FUNC_POLL

CURL_CHECK_FUNC_SIGACTION
CURL_CHECK_FUNC_SIGINTERRUPT
CURL_CHECK_FUNC_SIGNAL
CURL_CHECK_FUNC_SIGSETJMP
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_STRTOK_R
CURL_CHECK_FUNC_STRTOLL


case $host in
  *msdosdjgpp)
     ac_cv_func_pipe=no
     skipcheck_pipe=yes
     AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
    ;;
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
  mach_absolute_time \
  pipe \
  sched_yield \
  sendmsg \
  setlocale \
  setmode \
  setrlimit \
  usleep \
  utime \
  utimes
],[
],[
  func="$ac_func"
  eval skipcheck=\$skipcheck_$func
  if test "x$skipcheck" != "xyes"; then







<







3521
3522
3523
3524
3525
3526
3527

3528
3529
3530
3531
3532
3533
3534
  mach_absolute_time \
  pipe \
  sched_yield \
  sendmsg \
  setlocale \
  setmode \
  setrlimit \

  utime \
  utimes
],[
],[
  func="$ac_func"
  eval skipcheck=\$skipcheck_$func
  if test "x$skipcheck" != "xyes"; then
3615
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
      *)
         ;;
      esac

      dnl if it wasn't found without lib, search for it in pthread lib
      if test "$USE_THREADS_POSIX" != "1"
      then



        case $host in
        *-ibm-aix*)
           dnl Check if compiler is xlC
           COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
           if test x"$COMPILER_VERSION" = "x"; then
             CFLAGS="$CFLAGS -pthread"
           else
             CFLAGS="$CFLAGS -qthreaded"
           fi
           ;;




        *)
           CFLAGS="$CFLAGS -pthread"
           ;;
        esac
        # assign PTHREAD for pkg-config use
        PTHREAD=" -pthread"
        AC_CHECK_LIB(pthread, pthread_create,
                     [USE_THREADS_POSIX=1],
                     [ CFLAGS="$save_CFLAGS"])
      fi

      if test "x$USE_THREADS_POSIX" = "x1"
      then







>
>
>










>
>
>
>




<
<







3685
3686
3687
3688
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
3714
3715
3716
3717
3718
3719
      *)
         ;;
      esac

      dnl if it wasn't found without lib, search for it in pthread lib
      if test "$USE_THREADS_POSIX" != "1"
      then
        # assign PTHREAD for pkg-config use
        PTHREAD=" -pthread"

        case $host in
        *-ibm-aix*)
           dnl Check if compiler is xlC
           COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
           if test x"$COMPILER_VERSION" = "x"; then
             CFLAGS="$CFLAGS -pthread"
           else
             CFLAGS="$CFLAGS -qthreaded"
           fi
           ;;
        powerpc-*amigaos*)
           dnl No -pthread option, but link with -lpthread
           PTHREAD=" -lpthread"
           ;;
        *)
           CFLAGS="$CFLAGS -pthread"
           ;;
        esac


        AC_CHECK_LIB(pthread, pthread_create,
                     [USE_THREADS_POSIX=1],
                     [ CFLAGS="$save_CFLAGS"])
      fi

      if test "x$USE_THREADS_POSIX" = "x1"
      then
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038



4039
4040
4041
4042
4043
4044
4045
dnl switch on/off headers-api
dnl
AC_MSG_CHECKING([whether to support headers-api])
AC_ARG_ENABLE(headers-api,
AS_HELP_STRING([--enable-headers-api],[Enable headers-api support])
AS_HELP_STRING([--disable-headers-api],[Disable headers-api support]),
[ case "$enableval" in
  *)
       AC_MSG_RESULT(yes)
       ;;
  no) AC_MSG_RESULT(no)
       curl_headers_msg="no      (--enable-headers-api)"
       AC_DEFINE(CURL_DISABLE_HEADERS_API, 1, [disable headers-api])
       ;;



  esac ],
       AC_MSG_RESULT(yes)
)

dnl only check for HSTS if there's SSL present
if test -n "$SSL_ENABLED"; then








<
<
<




>
>
>







4100
4101
4102
4103
4104
4105
4106



4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
dnl switch on/off headers-api
dnl
AC_MSG_CHECKING([whether to support headers-api])
AC_ARG_ENABLE(headers-api,
AS_HELP_STRING([--enable-headers-api],[Enable headers-api support])
AS_HELP_STRING([--disable-headers-api],[Disable headers-api support]),
[ case "$enableval" in



  no) AC_MSG_RESULT(no)
       curl_headers_msg="no      (--enable-headers-api)"
       AC_DEFINE(CURL_DISABLE_HEADERS_API, 1, [disable headers-api])
       ;;
  *)
       AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl only check for HSTS if there's SSL present
if test -n "$SSL_ENABLED"; then

Changes to jni/curl/curl-config.in.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################

prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@
cppflag_curl_staticlib=@CPPFLAG_CURL_STATICLIB@

usage()
{
    cat <<EOF







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################

prefix="@prefix@"
exec_prefix=@exec_prefix@
includedir=@includedir@
cppflag_curl_staticlib=@CPPFLAG_CURL_STATICLIB@

usage()
{
    cat <<EOF
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
        ;;
    --ssl-backends)
        echo "@SSL_BACKENDS@"
        ;;

    --static-libs)
        if test "X@ENABLE_STATIC@" != "Xno" ; then
          echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@
        else
          echo "curl was built with static libraries disabled" >&2
          exit 1
        fi
        ;;

    --configure)







|







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
        ;;
    --ssl-backends)
        echo "@SSL_BACKENDS@"
        ;;

    --static-libs)
        if test "X@ENABLE_STATIC@" != "Xno" ; then
          echo "@libdir@/libcurl.@libext@" @LDFLAGS@ @LIBCURL_LIBS@
        else
          echo "curl was built with static libraries disabled" >&2
          exit 1
        fi
        ;;

    --configure)
Changes to jni/curl/docs/BUGS.md.
1
2
3
4
5
6
7
8
9
10
11
12
13
# BUGS

## There are still bugs

 Curl and libcurl keep being developed. Adding features and changing code
 means that bugs will sneak in, no matter how hard we try not to.

 Of course there are lots of bugs left. And lots of misfeatures.

 To help us make curl the stable and solid product we want it to be, we need
 bug reports and bug fixes.

## Where to report





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# BUGS

## There are still bugs

 Curl and libcurl keep being developed. Adding features and changing code
 means that bugs will sneak in, no matter how hard we try to keep them out.

 Of course there are lots of bugs left. And lots of misfeatures.

 To help us make curl the stable and solid product we want it to be, we need
 bug reports and bug fixes.

## Where to report
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

 The curl project's process for handling security related issues is
 [documented separately](https://curl.se/dev/secprocess.html).

## What to report

 When reporting a bug, you should include all information that will help us
 understand what's wrong, what you expected to happen and how to repeat the
 bad behavior. You therefore need to tell us:

 - your operating system's name and version number

 - what version of curl you are using (`curl -V` is fine)

 - versions of the used libraries that libcurl is built to use







|







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

 The curl project's process for handling security related issues is
 [documented separately](https://curl.se/dev/secprocess.html).

## What to report

 When reporting a bug, you should include all information that will help us
 understand what is wrong, what you expected to happen and how to repeat the
 bad behavior. You therefore need to tell us:

 - your operating system's name and version number

 - what version of curl you are using (`curl -V` is fine)

 - versions of the used libraries that libcurl is built to use
195
196
197
198
199
200
201

202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
 You should then respond to these follow-up questions and provide more info
 about the problem, so that we can help you figure it out. Or maybe you can
 help us figure it out. An active back-and-forth communication is important
 and the key for finding a cure and landing a fix.

## Not reproducible


 For problems that we cannot reproduce and cannot understand even after having
 gotten all the info we need and having studied the source code over again,
 are really hard to solve so then we may require further work from you who
 actually see or experience the problem.

## Unresponsive

 If the problem have not been understood or reproduced, and there's nobody
 responding to follow-up questions or questions asking for clarifications or
 for discussing possible ways to move forward with the task, we take that as a
 strong suggestion that the bug is unimportant.

 Unimportant issues will be closed as inactive sooner or later as they cannot
 be fixed. The inactivity period (waiting for responses) should not be shorter
 than two weeks but may extend months.







>
|
|
<
<



|







195
196
197
198
199
200
201
202
203
204


205
206
207
208
209
210
211
212
213
214
215
 You should then respond to these follow-up questions and provide more info
 about the problem, so that we can help you figure it out. Or maybe you can
 help us figure it out. An active back-and-forth communication is important
 and the key for finding a cure and landing a fix.

## Not reproducible

 We may require further work from you who actually see or experience the 
 problem if we cannot reproduce it and cannot understand it even after having
 gotten all the info we need and having studied the source code over again.



## Unresponsive

 If the problem have not been understood or reproduced, and there is nobody
 responding to follow-up questions or questions asking for clarifications or
 for discussing possible ways to move forward with the task, we take that as a
 strong suggestion that the bug is unimportant.

 Unimportant issues will be closed as inactive sooner or later as they cannot
 be fixed. The inactivity period (waiting for responses) should not be shorter
 than two weeks but may extend months.
Changes to jni/curl/docs/CIPHERS.md.
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
# Ciphers

With curl's options
[`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
and
[`--ciphers`](https://curl.se/docs/manpage.html#--ciphers)
users can control which ciphers to consider when negotiating TLS connections.

TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+ with options

[`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
and
[`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers)
. If you are using a different SSL backend you can try setting TLS 1.3 cipher
suites by using the respective regular cipher option.

The names of the known ciphers differ depending on which TLS backend that








|
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Ciphers

With curl's options
[`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
and
[`--ciphers`](https://curl.se/docs/manpage.html#--ciphers)
users can control which ciphers to consider when negotiating TLS connections.

TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+, and since
curl 7.85 for SChannel with options
[`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
and
[`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers)
. If you are using a different SSL backend you can try setting TLS 1.3 cipher
suites by using the respective regular cipher option.

The names of the known ciphers differ depending on which TLS backend that
516
517
518
519
520
521
522










523
524
525
526
527
528
529
`CALG_ECDH_EPHEM`,

As of curl 7.77.0, you can also pass `SCH_USE_STRONG_CRYPTO` as a cipher name
to [constrain the set of available ciphers as specified in the schannel
documentation](https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-server-2022).
Note that the supported ciphers in this case follow the OS version, so if you
are running an outdated OS you might still be supporting weak ciphers.











## BearSSL

BearSSL ciphers can be specified by either the OpenSSL name (`ECDHE-RSA-AES128-GCM-SHA256`) or the IANA name (`TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`).

Since BearSSL 0.1:








>
>
>
>
>
>
>
>
>
>







517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
`CALG_ECDH_EPHEM`,

As of curl 7.77.0, you can also pass `SCH_USE_STRONG_CRYPTO` as a cipher name
to [constrain the set of available ciphers as specified in the schannel
documentation](https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-server-2022).
Note that the supported ciphers in this case follow the OS version, so if you
are running an outdated OS you might still be supporting weak ciphers.

### TLS 1.3 cipher suites

(Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`)

`TLS_AES_256_GCM_SHA384`
`TLS_AES_128_GCM_SHA256`
`TLS_CHACHA20_POLY1305_SHA256`
`TLS_AES_128_CCM_8_SHA256`
`TLS_AES_128_CCM_SHA256`

## BearSSL

BearSSL ciphers can be specified by either the OpenSSL name (`ECDHE-RSA-AES128-GCM-SHA256`) or the IANA name (`TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`).

Since BearSSL 0.1:

Changes to jni/curl/docs/DEPRECATE.md.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Items to be removed from future curl releases

If any of these deprecated features is a cause for concern for you, please
email the
[curl-library mailing list](https://lists.haxx.se/listinfo/curl-library)
as soon as possible and explain to us why this is a problem for you and
how your use case cannot be satisfied properly using a workaround.

## NSS

We remove support for building curl with the NSS TLS library in August 2022.

- There are very few users left who use curl+NSS
- NSS has very few users outside of curl as well (primarily Firefox)
- NSS is harder than ever to find documentation for
- NSS was always "best" used with Red Hat Linux when they provided additional
  features on top of the regular NSS that is not shipped by the vanilla library











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Items to be removed from future curl releases

If any of these deprecated features is a cause for concern for you, please
email the
[curl-library mailing list](https://lists.haxx.se/listinfo/curl-library)
as soon as possible and explain to us why this is a problem for you and
how your use case cannot be satisfied properly using a workaround.

## NSS

We remove support for building curl with the NSS TLS library in August 2023.

- There are very few users left who use curl+NSS
- NSS has very few users outside of curl as well (primarily Firefox)
- NSS is harder than ever to find documentation for
- NSS was always "best" used with Red Hat Linux when they provided additional
  features on top of the regular NSS that is not shipped by the vanilla library

Changes to jni/curl/docs/HTTP3.md.
106
107
108
109
110
111
112









































113
114
115
116
117
118
119
     % git clone https://github.com/curl/curl
     % cd curl
     % autoreconf -fi
     % ./configure --without-openssl --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
     % make
     % make install










































# quiche version

## build

Build quiche and BoringSSL:

     % git clone --recursive https://github.com/cloudflare/quiche







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







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
     % git clone https://github.com/curl/curl
     % cd curl
     % autoreconf -fi
     % ./configure --without-openssl --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
     % make
     % make install

## Build with wolfSSL

Build wolfSSL

     % git clone https://github.com/wolfSSL/wolfssl.git
     % cd wolfssl
     % autoreconf -fi
     % ./configure --prefix=<somewhere1> --enable-quic --enable-session-ticket --enable-earlydata --enable-psk --enable-harden --enable-altcertchains
     % make
     % make install

Build nghttp3

     % cd ..
     % git clone https://github.com/ngtcp2/nghttp3
     % cd nghttp3
     % autoreconf -fi
     % ./configure --prefix=<somewhere2> --enable-lib-only
     % make
     % make install

Build ngtcp2 (once https://github.com/ngtcp2/ngtcp2/pull/505 is merged)

     % cd ..
     % git clone https://github.com/ngtcp2/ngtcp2
     % cd ngtcp2
     % autoreconf -fi
     % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-wolfssl
     % make
     % make install

Build curl

     % cd ..
     % git clone https://github.com/curl/curl
     % cd curl
     % autoreconf -fi
     % ./configure --without-openssl --with-wolfssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
     % make
     % make install

# quiche version

## build

Build quiche and BoringSSL:

     % git clone --recursive https://github.com/cloudflare/quiche
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

# msh3 (msquic) version

## Build Linux (with quictls fork of OpenSSL)

Build msh3:

     % git clone --depth 1 --recursive https://github.com/nibanks/msh3
     % cd msh3 && mkdir build && cd build
     % cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
     % cmake --build .
     % cmake --install .

Build curl:

     % git clone https://github.com/curl/curl
     % cd curl
     % autoreconf -fi
     % ./configure LDFLAGS="-Wl,-rpath,/usr/local/lib" --with-msh3=/usr/local --with-openssl
     % make
     % make install

Run from `/usr/local/bin/curl`.

## Build Windows

Build msh3:

     % git clone --depth 1 --recursive https://github.com/nibanks/msh3
     % cd msh3 && mkdir build && cd build
     % cmake -G 'Visual Studio 17 2022' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
     % cmake --build . --config Release
     % cmake --install . --config Release

**Note** - On Windows, Schannel will be used for TLS support by default. If
you with to use (the quictls fork of) OpenSSL, specify the `-DQUIC_TLS=openssl`







|




















|







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

# msh3 (msquic) version

## Build Linux (with quictls fork of OpenSSL)

Build msh3:

     % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3
     % cd msh3 && mkdir build && cd build
     % cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
     % cmake --build .
     % cmake --install .

Build curl:

     % git clone https://github.com/curl/curl
     % cd curl
     % autoreconf -fi
     % ./configure LDFLAGS="-Wl,-rpath,/usr/local/lib" --with-msh3=/usr/local --with-openssl
     % make
     % make install

Run from `/usr/local/bin/curl`.

## Build Windows

Build msh3:

     % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3
     % cd msh3 && mkdir build && cd build
     % cmake -G 'Visual Studio 17 2022' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
     % cmake --build . --config Release
     % cmake --install . --config Release

**Note** - On Windows, Schannel will be used for TLS support by default. If
you with to use (the quictls fork of) OpenSSL, specify the `-DQUIC_TLS=openssl`
Changes to jni/curl/docs/KNOWN_BUGS.
30
31
32
33
34
35
36

37
38
39
40
41
42
43
 2.6 CURL_GLOBAL_SSL
 2.7 Client cert (MTLS) issues with Schannel
 2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname
 2.9 TLS session cache does not work with TFO
 2.10 Store TLS context per transfer instead of per connection
 2.11 Schannel TLS 1.2 handshake bug in old Windows versions
 2.12 FTPS with Schannel times out file list operation

 2.14 Secure Transport disabling hostname validation also disables SNI
 2.15 Renegotiate from server may cause hang for OpenSSL backend

 3. Email protocols
 3.1 IMAP SEARCH ALL truncated response
 3.2 No disconnect command
 3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses







>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 2.6 CURL_GLOBAL_SSL
 2.7 Client cert (MTLS) issues with Schannel
 2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname
 2.9 TLS session cache does not work with TFO
 2.10 Store TLS context per transfer instead of per connection
 2.11 Schannel TLS 1.2 handshake bug in old Windows versions
 2.12 FTPS with Schannel times out file list operation
 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
 2.14 Secure Transport disabling hostname validation also disables SNI
 2.15 Renegotiate from server may cause hang for OpenSSL backend

 3. Email protocols
 3.1 IMAP SEARCH ALL truncated response
 3.2 No disconnect command
 3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses
57
58
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
 5.6 make distclean loops forever
 5.7 Visual Studio project gaps
 5.8 configure finding libs in wrong directory
 5.9 Utilize Requires.private directives in libcurl.pc
 5.10 curl hangs on SMB upload over stdin
 5.11 configure --with-gssapi with Heimdal is ignored on macOS
 5.12 flaky Windows CI builds



 6. Authentication
 6.1 NTLM authentication and unicode
 6.2 MIT Kerberos for Windows build
 6.3 NTLM in system context uses wrong name
 6.4 Negotiate and Kerberos V5 need a fake user name
 6.5 NTLM does not support password with § character
 6.6 libcurl can fail to try alternatives with --proxy-any
 6.7 Do not clear digest for single realm
 6.8 RTSP authentication breaks without redirect support
 6.9 SHA-256 digest not supported in Windows SSPI builds
 6.10 curl never completes Negotiate over HTTP
 6.11 Negotiate on Windows fails
 6.12 cannot use Secure Transport with Crypto Token Kit


 7. FTP
 7.1 FTP without or slow 220 response
 7.2 FTP with CONNECT and slow server
 7.3 FTP with NOBODY and FAILONERROR
 7.4 FTP with ACCT
 7.5 ASCII FTP
 7.6 FTP with NULs in URL parts
 7.7 FTP and empty path parts in the URL
 7.8 Premature transfer end but healthy control channel
 7.9 Passive transfer tries only one IP address
 7.10 FTPS needs session reuse
 7.11 FTPS upload data loss with TLS 1.3


 8. TELNET
 8.1 TELNET and time limitations do not work
 8.2 Microsoft telnet server

 9. SFTP and SCP
 9.1 SFTP does not do CURLOPT_POSTQUOTE correct
 9.2 wolfssh: publickey auth does not work
 9.3 Remote recursive folder creation with SFTP


 10. SOCKS
 10.3 FTPS over SOCKS
 10.4 active FTP over a SOCKS

 11. Internals
 11.1 Curl leaks .onion hostnames in DNS
 11.2 error buffer not set if connection to multiple addresses fails
 11.3 Disconnects do not do verbose
 11.4 HTTP test server 'connection-monitor' problems
 11.5 Connection information when using TCP Fast Open
 11.7 signal-based resolver timeouts
 11.8 DoH leaks memory after followlocation
 11.9 DoH does not 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
 11.16 libcurl uses renames instead of locking for atomic operations

 12. LDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?







>
>














>













>









>

















<







58
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
 5.6 make distclean loops forever
 5.7 Visual Studio project gaps
 5.8 configure finding libs in wrong directory
 5.9 Utilize Requires.private directives in libcurl.pc
 5.10 curl hangs on SMB upload over stdin
 5.11 configure --with-gssapi with Heimdal is ignored on macOS
 5.12 flaky Windows CI builds
 5.13 long paths are not fully supported on Windows
 5.14 Windows Unicode builds use homedir in current locale

 6. Authentication
 6.1 NTLM authentication and unicode
 6.2 MIT Kerberos for Windows build
 6.3 NTLM in system context uses wrong name
 6.4 Negotiate and Kerberos V5 need a fake user name
 6.5 NTLM does not support password with § character
 6.6 libcurl can fail to try alternatives with --proxy-any
 6.7 Do not clear digest for single realm
 6.8 RTSP authentication breaks without redirect support
 6.9 SHA-256 digest not supported in Windows SSPI builds
 6.10 curl never completes Negotiate over HTTP
 6.11 Negotiate on Windows fails
 6.12 cannot use Secure Transport with Crypto Token Kit
 6.13 Negotiate against Hadoop HDFS

 7. FTP
 7.1 FTP without or slow 220 response
 7.2 FTP with CONNECT and slow server
 7.3 FTP with NOBODY and FAILONERROR
 7.4 FTP with ACCT
 7.5 ASCII FTP
 7.6 FTP with NULs in URL parts
 7.7 FTP and empty path parts in the URL
 7.8 Premature transfer end but healthy control channel
 7.9 Passive transfer tries only one IP address
 7.10 FTPS needs session reuse
 7.11 FTPS upload data loss with TLS 1.3
 7.12 FTPS directory listing hangs on Windows with Schannel

 8. TELNET
 8.1 TELNET and time limitations do not work
 8.2 Microsoft telnet server

 9. SFTP and SCP
 9.1 SFTP does not do CURLOPT_POSTQUOTE correct
 9.2 wolfssh: publickey auth does not work
 9.3 Remote recursive folder creation with SFTP
 9.4 libssh blocking and infinite loop problem

 10. SOCKS
 10.3 FTPS over SOCKS
 10.4 active FTP over a SOCKS

 11. Internals
 11.1 Curl leaks .onion hostnames in DNS
 11.2 error buffer not set if connection to multiple addresses fails
 11.3 Disconnects do not do verbose
 11.4 HTTP test server 'connection-monitor' problems
 11.5 Connection information when using TCP Fast Open
 11.7 signal-based resolver timeouts
 11.8 DoH leaks memory after followlocation
 11.9 DoH does not 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.14 Multi perform hangs waiting for threaded resolver
 11.15 CURLOPT_OPENSOCKETPAIRFUNCTION is missing
 11.16 libcurl uses renames instead of locking for atomic operations

 12. LDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?
142
143
144
145
146
147
148

149
150
151
152
153
154
155
 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 libpsl is not supported
 15.11 ExternalProject_Add does not set CURL_CA_PATH
 15.12 cannot enable LDAPS on Windows
 15.13 CMake build with MIT Kerberos does not work


 16. Applications

 17. HTTP/2
 17.1 Excessive HTTP/2 packets with TCP_NODELAY
 17.2 HTTP/2 frames while in the connection pool kill reuse
 17.3 ENHANCE_YOUR_CALM causes infinite retries







>







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
 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 libpsl is not supported
 15.11 ExternalProject_Add does not set CURL_CA_PATH
 15.12 cannot enable LDAPS on Windows
 15.13 CMake build with MIT Kerberos does not work
 15.14 cmake build is not thread-safe

 16. Applications

 17. HTTP/2
 17.1 Excessive HTTP/2 packets with TCP_NODELAY
 17.2 HTTP/2 frames while in the connection pool kill reuse
 17.3 ENHANCE_YOUR_CALM causes infinite retries
325
326
327
328
329
330
331




332
333
334
335
336
337
338
 https://github.com/curl/curl/issues/5488

2.12 FTPS with Schannel times out file list operation

 "Instead of the command completing, it just sits there until the timeout
 expires." - the same command line seems to work with other TLS backends and
 other operating systems. See https://github.com/curl/curl/issues/5284.





2.14 Secure Transport disabling hostname validation also disables SNI

 SNI is the hostname that is sent by the TLS library to the server as part of
 the TLS handshake. Secure Transport does not send SNI when hostname validation
 is disabled. Servers that host multiple websites may not know which
 certificate to serve without SNI or which backend server to connect to. The







>
>
>
>







331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
 https://github.com/curl/curl/issues/5488

2.12 FTPS with Schannel times out file list operation

 "Instead of the command completing, it just sits there until the timeout
 expires." - the same command line seems to work with other TLS backends and
 other operating systems. See https://github.com/curl/curl/issues/5284.

2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel

 https://github.com/curl/curl/issues/8741

2.14 Secure Transport disabling hostname validation also disables SNI

 SNI is the hostname that is sent by the TLS library to the server as part of
 the TLS handshake. Secure Transport does not send SNI when hostname validation
 is disabled. Servers that host multiple websites may not know which
 certificate to serve without SNI or which backend server to connect to. The
531
532
533
534
535
536
537



















538
539
540
541
542
543
544
 number of the Windows builds are flaky. This means that we rarely get all CI
 builds go green and complete without errors. This is unfortunate as it makes
 us sometimes miss actual build problems and it is surprising to newcomers to
 the project who (rightfully) do not expect this.

 See https://github.com/curl/curl/issues/6972




















6. Authentication

6.1 NTLM authentication and unicode

 NTLM authentication involving unicode user name or password only works
 properly if built with UNICODE defined together with the Schannel
 backend. The original problem was mentioned in:







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







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
 number of the Windows builds are flaky. This means that we rarely get all CI
 builds go green and complete without errors. This is unfortunate as it makes
 us sometimes miss actual build problems and it is surprising to newcomers to
 the project who (rightfully) do not expect this.

 See https://github.com/curl/curl/issues/6972

5.13 long paths are not fully supported on Windows

 curl on Windows cannot access long paths (paths longer than 260 characters).
 However, as a workaround, the Windows path prefix \\?\ which disables all path
 interpretation may work to allow curl to access the path. For example:
 \\?\c:\longpath.

 See https://github.com/curl/curl/issues/8361

5.14 Windows Unicode builds use homedir in current locale

 The Windows Unicode builds of curl use the current locale, but expect Unicode
 UTF-8 encoded paths for internal use such as open, access and stat. The user's
 home directory is retrieved via curl_getenv in the current locale and not as
 UTF-8 encoded Unicode.

 See https://github.com/curl/curl/pull/7252 and
     https://github.com/curl/curl/pull/7281

6. Authentication

6.1 NTLM authentication and unicode

 NTLM authentication involving unicode user name or password only works
 properly if built with UNICODE defined together with the Schannel
 backend. The original problem was mentioned in:
624
625
626
627
628
629
630




631
632
633
634
635
636
637
 in Unix/Linux.

 https://github.com/curl/curl/issues/5881

6.12 cannot use Secure Transport with Crypto Token Kit

 https://github.com/curl/curl/issues/7048





7. FTP

7.1 FTP without or slow 220 response

 If a connection is made to an FTP server but the server then just never sends
 the 220 response or otherwise is dead slow, libcurl will not acknowledge the







>
>
>
>







653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
 in Unix/Linux.

 https://github.com/curl/curl/issues/5881

6.12 cannot use Secure Transport with Crypto Token Kit

 https://github.com/curl/curl/issues/7048

6.13 Negotiate authentication against Hadoop HDFS

 https://github.com/curl/curl/issues/8264

7. FTP

7.1 FTP without or slow 220 response

 If a connection is made to an FTP server but the server then just never sends
 the 220 response or otherwise is dead slow, libcurl will not acknowledge the
739
740
741
742
743
744
745




746
747
748
749
750
751
752
 Since 7.78.0 this is mostly fixed. curl will do a single read before closing
 TLS connections (which causes the TLS library to read handshake messages),
 however there is still possibility of an RST if more messages need to be read
 or a message arrives after the read but before close (network race condition).

 https://github.com/curl/curl/issues/6149





8. TELNET

8.1 TELNET and time limitations do not work

 When using telnet, the time limitation options do not work.
 https://curl.se/bug/view.cgi?id=846








>
>
>
>







772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
 Since 7.78.0 this is mostly fixed. curl will do a single read before closing
 TLS connections (which causes the TLS library to read handshake messages),
 however there is still possibility of an RST if more messages need to be read
 or a message arrives after the read but before close (network race condition).

 https://github.com/curl/curl/issues/6149

7.12 FTPS directory listing hangs on Windows with Schannel

 https://github.com/curl/curl/issues/9161

8. TELNET

8.1 TELNET and time limitations do not work

 When using telnet, the time limitation options do not work.
 https://curl.se/bug/view.cgi?id=846

777
778
779
780
781
782
783








784
785
786
787
788
789
790

9.3 Remote recursive folder creation with SFTP

 On this servers, the curl fails to create directories on the remote server
 even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set.

 See https://github.com/curl/curl/issues/5204










10. SOCKS

10.3 FTPS over SOCKS

 libcurl does not support FTPS over a SOCKS proxy.







>
>
>
>
>
>
>
>







814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835

9.3 Remote recursive folder creation with SFTP

 On this servers, the curl fails to create directories on the remote server
 even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set.

 See https://github.com/curl/curl/issues/5204

9.4 libssh blocking and infinite loop problem

 In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to
 blocking mode. If the network is suddenly disconnected during sftp
 transmission, curl will be stuck, even if curl is configured with a timeout.

 https://github.com/curl/curl/issues/8632


10. SOCKS

10.3 FTPS over SOCKS

 libcurl does not support FTPS over a SOCKS proxy.
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
11.12 'no_proxy' string-matches IPv6 numerical addresses

 This has the downside that "::1" for example does not match "::0:1" even
 though they are in fact the same address.

 See https://github.com/curl/curl/issues/5745

11.13 wakeup socket disconnect causes havoc

 waking an iPad breaks the wakeup socket pair, triggering a POLLIN event and
 resulting in SOCKERRNO being set to ENOTCONN.

 This condition, and other possible error conditions on the wakeup socket, are
 not handled, so the condition remains on the FD and curl_multi_poll will
 never block again.

 See https://github.com/curl/curl/issues/6132 and
 https://github.com/curl/curl/pull/6133

11.14 Multi perform hangs waiting for threaded resolver

 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







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







934
935
936
937
938
939
940












941
942
943
944
945
946
947
11.12 'no_proxy' string-matches IPv6 numerical addresses

 This has the downside that "::1" for example does not match "::0:1" even
 though they are in fact the same address.

 See https://github.com/curl/curl/issues/5745













11.14 Multi perform hangs waiting for threaded resolver

 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
1070
1071
1072
1073
1074
1075
1076









1077
1078
1079
1080
1081
1082
1083
 MIT Kerberos detection sets few variables to potentially weird mix of space,
 and ;-separated flags. It had to blow up at some point. All the CMake checks
 that involve compilation are doomed from that point, the configured tree
 cannot be built.

 https://github.com/curl/curl/issues/6904










16. Applications

17. HTTP/2

17.1 Excessive HTTP/2 packets with TCP_NODELAY

 Because of how curl sets TCP_NODELAY by default, HTTP/2 requests are issued







>
>
>
>
>
>
>
>
>







1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
 MIT Kerberos detection sets few variables to potentially weird mix of space,
 and ;-separated flags. It had to blow up at some point. All the CMake checks
 that involve compilation are doomed from that point, the configured tree
 cannot be built.

 https://github.com/curl/curl/issues/6904

15.14 cmake build is not thread-safe

 The cmake build does not check for and verify presence of a working Atomic
 type, which then makes curl_global_init() to not build thread-safe on
 non-Windows platforms.

 Bug: https://github.com/curl/curl/issues/8973
 Partial fix: https://github.com/curl/curl/pull/8982

16. Applications

17. HTTP/2

17.1 Excessive HTTP/2 packets with TCP_NODELAY

 Because of how curl sets TCP_NODELAY by default, HTTP/2 requests are issued
Changes to jni/curl/docs/MAIL-ETIQUETTE.
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  Troll - "someone who posts inflammatory, extraneous, or off-topic messages
  in an online community"

  Spam - "use of electronic messaging systems to send unsolicited bulk
  messages"

  No matter what, we NEVER EVER respond to trolls or spammers on the list. If
  you believe the list admin should do something in particular, contact him/her
  off-list. The subject will be taken care of as much as possible to prevent
  repeated offenses, but responding on the list to such messages never leads to
  anything good and only puts the light even more on the offender: which was
  the entire purpose of it getting sent to the list in the first place.

  Do not feed the trolls.








|







101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  Troll - "someone who posts inflammatory, extraneous, or off-topic messages
  in an online community"

  Spam - "use of electronic messaging systems to send unsolicited bulk
  messages"

  No matter what, we NEVER EVER respond to trolls or spammers on the list. If
  you believe the list admin should do something in particular, contact them
  off-list. The subject will be taken care of as much as possible to prevent
  repeated offenses, but responding on the list to such messages never leads to
  anything good and only puts the light even more on the offender: which was
  the entire purpose of it getting sent to the list in the first place.

  Do not feed the trolls.

273
274
275
276
277
278
279
280
281
282
283
284
285
  Many people mail questions to the list, people spend some of their time and
  make an effort in providing good answers to these questions.

  If you are the one who asks, please consider responding once more in case
  one of the hints was what solved your problems. The guys who write answers
  feel good to know that they provided a good answer and that you fixed the
  problem. Far too often, the person who asked the question is never heard from
  again, and we never get to know if he/she is gone because the problem was
  solved or perhaps because the problem was unsolvable.

  Getting the solution posted also helps other users that experience the same
  problem(s). They get to see (possibly in the web archives) that the
  suggested fixes actually have helped at least one person.







|





273
274
275
276
277
278
279
280
281
282
283
284
285
  Many people mail questions to the list, people spend some of their time and
  make an effort in providing good answers to these questions.

  If you are the one who asks, please consider responding once more in case
  one of the hints was what solved your problems. The guys who write answers
  feel good to know that they provided a good answer and that you fixed the
  problem. Far too often, the person who asked the question is never heard from
  again, and we never get to know if they are gone because the problem was
  solved or perhaps because the problem was unsolvable.

  Getting the solution posted also helps other users that experience the same
  problem(s). They get to see (possibly in the web archives) that the
  suggested fixes actually have helped at least one person.
Changes to jni/curl/docs/Makefile.in.
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







109
110
111
112
113
114
115
116

117
118
119
120
121
122
123
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
398
399
400
401
402
403
404

405
406
407
408
409
410
411
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/docs/SECURITY-PROCESS.md.
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

- The security team investigates the report and either rejects it or accepts
  it. See below for examples of problems that are not considered
  vulnerabilities.

- If the report is rejected, the team writes to the reporter to explain why.

- If the report is accepted, the team writes to the reporter to let him/her
  know it is accepted and that they are working on a fix.

- The security team discusses the problem, works out a fix, considers the
  impact of the problem and suggests a release schedule. This discussion
  should involve the reporter as much as possible.

- The release of the information should be "as soon as possible" and is most







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

- The security team investigates the report and either rejects it or accepts
  it. See below for examples of problems that are not considered
  vulnerabilities.

- If the report is rejected, the team writes to the reporter to explain why.

- If the report is accepted, the team writes to the reporter to let them
  know it is accepted and that they are working on a fix.

- The security team discusses the problem, works out a fix, considers the
  impact of the problem and suggests a release schedule. This discussion
  should involve the reporter as much as possible.

- The release of the information should be "as soon as possible" and is most
Changes to jni/curl/docs/THANKS.
96
97
98
99
100
101
102

103
104
105
106
107
108
109
Alexander Lazic
Alexander Pepper
Alexander Peslyak
Alexander Sinditskiy
Alexander Traud
Alexander V. Tikhonov
Alexander Zhuravlev

Alexandre Pion
Alexey Borzov
Alexey Eremikhin
Alexey Melnichuk
Alexey Pesternikov
Alexey Simak
Alexey Zakhlestin







>







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Alexander Lazic
Alexander Pepper
Alexander Peslyak
Alexander Sinditskiy
Alexander Traud
Alexander V. Tikhonov
Alexander Zhuravlev
Alexandre Bury
Alexandre Pion
Alexey Borzov
Alexey Eremikhin
Alexey Melnichuk
Alexey Pesternikov
Alexey Simak
Alexey Zakhlestin
140
141
142
143
144
145
146

147
148
149
150
151
152
153
Andreas Malzahn
Andreas Ntaflos
Andreas Olsson
Andreas Rieke
Andreas Roth
Andreas Schneider
Andreas Schuldei

Andreas Streichardt
Andreas Wurf
Andrei Benea
Andrei Bica
Andrei Cipu
Andrei Karas
Andrei Kurushin







>







141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
Andreas Malzahn
Andreas Ntaflos
Andreas Olsson
Andreas Rieke
Andreas Roth
Andreas Schneider
Andreas Schuldei
Andreas Sommer
Andreas Streichardt
Andreas Wurf
Andrei Benea
Andrei Bica
Andrei Cipu
Andrei Karas
Andrei Kurushin
317
318
319
320
321
322
323

324
325
326
327
328
329
330
bobmitchell1956 on github
Bodo Bergmann
Bogdan Nicula
Boris Rasin
Boris Verkhovskiy
Brad Burdick
Brad Fitzpatrick

Brad Harder
Brad Hards
Brad King
Brad Spencer
Bradford Bruce
bramus on github
Brandon Casey







>







319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
bobmitchell1956 on github
Bodo Bergmann
Bogdan Nicula
Boris Rasin
Boris Verkhovskiy
Brad Burdick
Brad Fitzpatrick
Brad Forschinger
Brad Harder
Brad Hards
Brad King
Brad Spencer
Bradford Bruce
bramus on github
Brandon Casey
382
383
384
385
386
387
388

389
390
391
392
393
394
395
Carlos ORyan
Carsten Lange
Casey O'Donnell
Catalin Patulea
causal-agent on github
cbartl on github
cclauss on github

Cesar Eduardo Barros
Chad Monroe
Chandrakant Bagul
Charles Cazabon
Charles Kerr
Charles Romestant
Chen Prog







>







385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
Carlos ORyan
Carsten Lange
Casey O'Donnell
Catalin Patulea
causal-agent on github
cbartl on github
cclauss on github
Cering on github
Cesar Eduardo Barros
Chad Monroe
Chandrakant Bagul
Charles Cazabon
Charles Kerr
Charles Romestant
Chen Prog
515
516
517
518
519
520
521

522
523
524
525
526
527
528
Daniel Cater
Daniel Egger
Daniel Gustafsson
Daniel Hwang
Daniel Jeliński
Daniel Johnson
Daniel Kahn Gillmor

Daniel Krügler
Daniel Kurečka
Daniel Lee Hwang
Daniel Lublin
Daniel Marjamäki
Daniel Melani
Daniel Mentz







>







519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
Daniel Cater
Daniel Egger
Daniel Gustafsson
Daniel Hwang
Daniel Jeliński
Daniel Johnson
Daniel Kahn Gillmor
Daniel Katz
Daniel Krügler
Daniel Kurečka
Daniel Lee Hwang
Daniel Lublin
Daniel Marjamäki
Daniel Melani
Daniel Mentz
553
554
555
556
557
558
559

560
561
562
563
564
565
566
Davey Shafik
David Bau
David Benjamin
David Binderman
David Blaikie
David Bohman
David Byron

David Cohen
David Cook
David Demelier
David E. Narváez
David Earl
David Eriksson
David Garske







>







558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
Davey Shafik
David Bau
David Benjamin
David Binderman
David Blaikie
David Bohman
David Byron
David Carlier
David Cohen
David Cook
David Demelier
David E. Narváez
David Earl
David Eriksson
David Garske
647
648
649
650
651
652
653

654
655
656

657
658
659
660
661
662
663
Dmitry Mikhirev
Dmitry Popov
Dmitry Rechkin
Dmitry S. Baikov
Dmitry Wagin
dnivras on github
Dolbneff A.V

Domenico Andreoli
Dominick Meglio
Dominik Hölzl

Dominique Leuenberger
Don J Olmstead
Dongliang Mu
Doron Behar
Doug Kaufman
Doug Porter
Douglas Creager







>



>







653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
Dmitry Mikhirev
Dmitry Popov
Dmitry Rechkin
Dmitry S. Baikov
Dmitry Wagin
dnivras on github
Dolbneff A.V
Domen Kožar
Domenico Andreoli
Dominick Meglio
Dominik Hölzl
Dominik Thalhammer
Dominique Leuenberger
Don J Olmstead
Dongliang Mu
Doron Behar
Doug Kaufman
Doug Porter
Douglas Creager
671
672
673
674
675
676
677

678
679
680
681
682
683
684
dpull on github
Drake Arconis
dtmsecurity on github
Duane Cathey
Duncan Mac-Vicar Prett
Duncan Wilcox
Dustin Boswell

Dusty Mabe
Duy Phan Thanh
Dwarakanath Yadavalli
Dylan Ellicott
Dylan Salisbury
Dániel Bakai
Early Ehlinger







>







679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
dpull on github
Drake Arconis
dtmsecurity on github
Duane Cathey
Duncan Mac-Vicar Prett
Duncan Wilcox
Dustin Boswell
Dustin Howett
Dusty Mabe
Duy Phan Thanh
Dwarakanath Yadavalli
Dylan Ellicott
Dylan Salisbury
Dániel Bakai
Early Ehlinger
759
760
761
762
763
764
765
766
767
768
769
770

771
772
773
774
775
776
777
Ethan Glasser Camp
Etienne Simard
Eugene Kotlyarov
Evan Jordan
Evangelos Foutras
Even Rouault
Evert Pot
Evgeny Grin
Evgeny Turnaev
eXeC64 on github
Eygene Ryabinkin
Eylem Ugurel

Fabian Frank
Fabian Hiernaux
Fabian Keil
Fabian Ruff
Fabian Yamaguchi
Fabrice Fontaine
Fabrizio Ammollo







|




>







768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
Ethan Glasser Camp
Etienne Simard
Eugene Kotlyarov
Evan Jordan
Evangelos Foutras
Even Rouault
Evert Pot
Evgeny Grin (Karlson2k)
Evgeny Turnaev
eXeC64 on github
Eygene Ryabinkin
Eylem Ugurel
Fabian Fischer
Fabian Frank
Fabian Hiernaux
Fabian Keil
Fabian Ruff
Fabian Yamaguchi
Fabrice Fontaine
Fabrizio Ammollo
909
910
911
912
913
914
915

916
917
918
919
920
921
922
Guillaume Arluison
guitared on github
Gunter Knauf
Gustaf Hui
Gustavo Grieco
Guy Poizat
GwanYeong Kim

Gwenole Beauchesne
Gökhan Şengün
Götz Babin-Ebell
h1zzz on github
H3RSKO on github
Hagai Auro
Haibo Huang







>







919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
Guillaume Arluison
guitared on github
Gunter Knauf
Gustaf Hui
Gustavo Grieco
Guy Poizat
GwanYeong Kim
Gwen Shapira
Gwenole Beauchesne
Gökhan Şengün
Götz Babin-Ebell
h1zzz on github
H3RSKO on github
Hagai Auro
Haibo Huang
954
955
956
957
958
959
960

961
962
963
964
965
966
967
Henrik Holst
Henrik Storner
Henry Ludemann
Henry Roeland
Herve Amblard
HexTheDragon
Hidemoto Nakada

Himanshu Gupta
Ho-chi Chen
Hoi-Ho Chan
Hongli Lai
Hongyi Zhao
Howard Blaise
Howard Chu







>







965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
Henrik Holst
Henrik Storner
Henry Ludemann
Henry Roeland
Herve Amblard
HexTheDragon
Hidemoto Nakada
highmtworks on github
Himanshu Gupta
Ho-chi Chen
Hoi-Ho Chan
Hongli Lai
Hongyi Zhao
Howard Blaise
Howard Chu
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
Ironbars13 on github
Irving Wolfe
Isaac Boukris
Isaiah Norton
Ishan SinghLevett
Ithubg on github
Ivan Avdeev

IvanoG on github
Ivo Bellin Salarin
iz8mbw on github
J. Bromley
Jack Boos Yu
Jack Zhang
Jackarain on github
Jacky Lam
Jacob Barthelmeh
Jacob Hoffman-Andrews
Jacob Meuser
Jacob Moshenko

Jactry Zeng
Jad Chamcham
Jaime Fullaondo
jakirkham on github
Jakub Bochenski
Jakub Wilk
Jakub Zakrzewski







>












>







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
Ironbars13 on github
Irving Wolfe
Isaac Boukris
Isaiah Norton
Ishan SinghLevett
Ithubg on github
Ivan Avdeev
Ivan Tsybulin
IvanoG on github
Ivo Bellin Salarin
iz8mbw on github
J. Bromley
Jack Boos Yu
Jack Zhang
Jackarain on github
Jacky Lam
Jacob Barthelmeh
Jacob Hoffman-Andrews
Jacob Meuser
Jacob Moshenko
Jacob Tolar
Jactry Zeng
Jad Chamcham
Jaime Fullaondo
jakirkham on github
Jakub Bochenski
Jakub Wilk
Jakub Zakrzewski
1139
1140
1141
1142
1143
1144
1145

1146
1147
1148
1149
1150
1151
1152
Jesper Jensen
Jesse Chisholm
Jesse Noller
Jesse Tan
jethrogb on github
jhoyla on github
Jie He

Jim Beveridge
Jim Drash
Jim Freeman
Jim Fuller
Jim Hollinger
Jim Meyering
Jimmy Gaussen







>







1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
Jesper Jensen
Jesse Chisholm
Jesse Noller
Jesse Tan
jethrogb on github
jhoyla on github
Jie He
Jilayne Lovejoy
Jim Beveridge
Jim Drash
Jim Freeman
Jim Fuller
Jim Hollinger
Jim Meyering
Jimmy Gaussen
1247
1248
1249
1250
1251
1252
1253

1254
1255
1256
1257
1258
1259
1260
Josef Wolf
Joseph Chen
Josh Bialkowski
Josh Kapell
Josh Soref
joshhe on github
Joshua Kwan

Joshua Swink
Josie Huddleston
Josip Medved
Josue Andrade Gomes
José Joaquín Atria
Jozef Kralik
Juan Barreto







>







1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
Josef Wolf
Joseph Chen
Josh Bialkowski
Josh Kapell
Josh Soref
joshhe on github
Joshua Kwan
Joshua Root
Joshua Swink
Josie Huddleston
Josip Medved
Josue Andrade Gomes
José Joaquín Atria
Jozef Kralik
Juan Barreto
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
Juro Bystricky
Justin Clift
Justin Ehlert
Justin Fletcher
Justin Karneges
Justin Maggard
jveazey on github

jzinn on github
János Fekete
Jérémy Rocher
Jörg Mueller-Tolk
Jörn Hartroth
Jürgen Gmach
K. R. Walker
ka7 on github
Kael1117 on github
Kai Engert
Kai Noda

Kai Sommerfeld
Kai-Uwe Rommel
Kalle Vahlman
Kamil Dudka
Kane York
Kang Lin
Kang-Jin Lee
Kantanat Wannapaka
Kari Pahula
Karl Chen
Karl Moerder
Karlson2k on github
Karol Pietrzak
Kartik Mahajan
Kaspar Brand
Katie Wang
Katsuhiko YOSHIDA
Kazuho Oku
Kees Cook







>











>











<







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
Juro Bystricky
Justin Clift
Justin Ehlert
Justin Fletcher
Justin Karneges
Justin Maggard
jveazey on github
jvvprasad78 on github
jzinn on github
János Fekete
Jérémy Rocher
Jörg Mueller-Tolk
Jörn Hartroth
Jürgen Gmach
K. R. Walker
ka7 on github
Kael1117 on github
Kai Engert
Kai Noda
Kai Pastor
Kai Sommerfeld
Kai-Uwe Rommel
Kalle Vahlman
Kamil Dudka
Kane York
Kang Lin
Kang-Jin Lee
Kantanat Wannapaka
Kari Pahula
Karl Chen
Karl Moerder

Karol Pietrzak
Kartik Mahajan
Kaspar Brand
Katie Wang
Katsuhiko YOSHIDA
Kazuho Oku
Kees Cook
1436
1437
1438
1439
1440
1441
1442

1443
1444
1445
1446
1447
1448
1449
Ling Thio
Linos Giannopoulos
Linus Lewandowski
Linus Nielsen Feltzing
Linus Nordberg
Lior Kaplan
Lisa Xu

Liviu Chircu
Liza Alenchery
lllaffer on github
Lloyd Fournier
Lluís Batlle i Rossell
locpyl-tidnyd on github
Loganaden Velvindron







>







1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
Ling Thio
Linos Giannopoulos
Linus Lewandowski
Linus Nielsen Feltzing
Linus Nordberg
Lior Kaplan
Lisa Xu
Litter White
Liviu Chircu
Liza Alenchery
lllaffer on github
Lloyd Fournier
Lluís Batlle i Rossell
locpyl-tidnyd on github
Loganaden Velvindron
1470
1471
1472
1473
1474
1475
1476

1477
1478
1479
1480
1481
1482
1483
Luke Dashjr
Luke Granger-Brown
luminixinc on github
Luo Jinghua
Luong Dinh Dung
Luz Paz
Luật Nguyễn

Lyman Epp
Lyndon Hill
M.R.T on github
Maciej Karpiuk
Maciej Puzio
Maciej W. Rozycki
madblobfish on github







>







1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
Luke Dashjr
Luke Granger-Brown
luminixinc on github
Luo Jinghua
Luong Dinh Dung
Luz Paz
Luật Nguyễn
lwthiker on github
Lyman Epp
Lyndon Hill
M.R.T on github
Maciej Karpiuk
Maciej Puzio
Maciej W. Rozycki
madblobfish on github
1509
1510
1511
1512
1513
1514
1515

1516
1517
1518
1519
1520
1521
1522
Marcelo Echeverria
Marcelo Juchem
Marcin Adamski
Marcin Gryszkalis
Marcin Konicki
Marco Deckel
Marco G. Salvagno

Marco Maggi
Marcos Diazr
Marcus Hoffmann
Marcus Klein
Marcus Sundberg
Marcus T
Marcus Webster







>







1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
Marcelo Echeverria
Marcelo Juchem
Marcin Adamski
Marcin Gryszkalis
Marcin Konicki
Marco Deckel
Marco G. Salvagno
Marco Kamner
Marco Maggi
Marcos Diazr
Marcus Hoffmann
Marcus Klein
Marcus Sundberg
Marcus T
Marcus Webster
1572
1573
1574
1575
1576
1577
1578

1579
1580
1581
1582
1583
1584
1585
Marty Kuhrt
Maruko
Masaya Suzuki
masbug on github
Massimiliano Fantuzzi
Massimiliano Ziccardi
Massimo Callegari

Mateusz Loskot
Mathias Axelsson
Mathias Gumz
Mathieu Legare
Matias N. Goldberg
Mats Lidell
Mats Lindestam







>







1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
Marty Kuhrt
Maruko
Masaya Suzuki
masbug on github
Massimiliano Fantuzzi
Massimiliano Ziccardi
Massimo Callegari
MasterInQuestion on github
Mateusz Loskot
Mathias Axelsson
Mathias Gumz
Mathieu Legare
Matias N. Goldberg
Mats Lidell
Mats Lindestam
1595
1596
1597
1598
1599
1600
1601

1602
1603
1604
1605
1606
1607
1608
Matteo Bignotti
Matteo Bignottignotti
Matteo Rocco
Matthew Blain
Matthew Clarke
Matthew Hall
Matthew Kerwin

Matthew Whitehead
Matthias Bolte
Matthias Gatto
Matthias Naegler
Mattias Fornander
Matus Uzak
Maurice Barnum







>







1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
Matteo Bignotti
Matteo Bignottignotti
Matteo Rocco
Matthew Blain
Matthew Clarke
Matthew Hall
Matthew Kerwin
Matthew Thompson
Matthew Whitehead
Matthias Bolte
Matthias Gatto
Matthias Naegler
Mattias Fornander
Matus Uzak
Maurice Barnum
1663
1664
1665
1666
1667
1668
1669

1670
1671
1672
1673
1674
1675
1676
Michael Olbrich
Michael Osipov
Michael Schmid
Michael Smith
Michael Stapelberg
Michael Steuer
Michael Stillwell

Michael Vittiglio
Michael Wallner
Michal Bonino
Michal Marek
Michal Rus
Michal Trybus
Michal Čaplygin







>







1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
Michael Olbrich
Michael Osipov
Michael Schmid
Michael Smith
Michael Stapelberg
Michael Steuer
Michael Stillwell
Michael Trebilcock
Michael Vittiglio
Michael Wallner
Michal Bonino
Michal Marek
Michal Rus
Michal Trybus
Michal Čaplygin
1732
1733
1734
1735
1736
1737
1738

1739
1740
1741
1742
1743
1744
1745
Muhammad Herdiansyah
Muhammed Yavuz Nuzumlalı
Murugan Balraj
Muz Dima
Myk Taylor
Nach M. S.
Nagai H

naost3rn on github
Nate Prewitt
Nathan Coulter
Nathan O'Sullivan
Nathanael Nerode
Nathaniel J. Smith
Nathaniel R. Lewis







>







1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
Muhammad Herdiansyah
Muhammed Yavuz Nuzumlalı
Murugan Balraj
Muz Dima
Myk Taylor
Nach M. S.
Nagai H
Nao Yonashiro
naost3rn on github
Nate Prewitt
Nathan Coulter
Nathan O'Sullivan
Nathanael Nerode
Nathaniel J. Smith
Nathaniel R. Lewis
1819
1820
1821
1822
1823
1824
1825

1826
1827
1828
1829
1830
1831

1832
1833
1834
1835
1836
1837
1838
Oleguer Llopart
Olen Andoni
olesteban on github
Oli Kingshott
Oliver Gondža
Oliver Graute
Oliver Kuckertz

Oliver Schindler
Oliver Urbann
Olivier Berger
Olivier Brunel
Omar Ramadan
omau on github

Orange Tsai
Oren Souroujon
Oren Tirosh
Orgad Shaneh
Ori Avtalion
orycho on github
osabc on github







>






>







1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
Oleguer Llopart
Olen Andoni
olesteban on github
Oli Kingshott
Oliver Gondža
Oliver Graute
Oliver Kuckertz
Oliver Roberts
Oliver Schindler
Oliver Urbann
Olivier Berger
Olivier Brunel
Omar Ramadan
omau on github
opensignature on github
Orange Tsai
Oren Souroujon
Oren Tirosh
Orgad Shaneh
Ori Avtalion
orycho on github
osabc on github
1971
1972
1973
1974
1975
1976
1977

1978
1979
1980
1981
1982
1983
1984
Pontus Lundkvist
Pooyan McSporran
Poul T Lomholt
Pramod Sharma
Prash Dush
Praveen Pvs
Prithvi MK

Priyanka Shah
Przemysław Tomaszewski
pszemus on github
puckipedia on github
Puneet Pawaia
qiandu2006 on github
Quagmire







>







1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
Pontus Lundkvist
Pooyan McSporran
Poul T Lomholt
Pramod Sharma
Prash Dush
Praveen Pvs
Prithvi MK
privetryan on github
Priyanka Shah
Przemysław Tomaszewski
pszemus on github
puckipedia on github
Puneet Pawaia
qiandu2006 on github
Quagmire
2137
2138
2139
2140
2141
2142
2143

2144
2145
2146
2147
2148
2149
2150
Roman Koifman
Roman Mamedov
Romulo A. Ceccon
Ron Eldor
Ron Parker
Ron Zapp
Ronnie Mose

Rosimildo da Silva
Ross Burton
Roy Bellingan
Roy Li
Roy Shan
Rui LIU
Rui Pinheiro







>







2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
Roman Koifman
Roman Mamedov
Romulo A. Ceccon
Ron Eldor
Ron Parker
Ron Zapp
Ronnie Mose
Rosen Penev
Rosimildo da Silva
Ross Burton
Roy Bellingan
Roy Li
Roy Shan
Rui LIU
Rui Pinheiro
2161
2162
2163
2164
2165
2166
2167

2168
2169
2170
2171
2172
2173
2174
Ryan Nelson
Ryan Schmidt
Ryan Scott
Ryan Sleevi
Ryan Winograd
ryancaicse on github
Ryuichi KAWAMATA

Rémy Léone
S. Moonesamy
Sai Ram Kunala
Salah-Eddin Shaban
Saleem Abdulrasool
Salvador Dávila
Salvatore Sorrentino







>







2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
Ryan Nelson
Ryan Schmidt
Ryan Scott
Ryan Sleevi
Ryan Winograd
ryancaicse on github
Ryuichi KAWAMATA
rzrymiak on github
Rémy Léone
S. Moonesamy
Sai Ram Kunala
Salah-Eddin Shaban
Saleem Abdulrasool
Salvador Dávila
Salvatore Sorrentino
2338
2339
2340
2341
2342
2343
2344

2345
2346
2347
2348
2349
2350
2351
Steven Parkes
Steven Penny
Stewart Gebbie
Stian Soiland-Reyes
Stoned Elipot
stootill on github
Stuart Henderson

SumatraPeter on github
Sune Ahlgren
Sunny Bean
Sunny Purushe
Sven Anders
Sven Blumenstein
Sven Neuhaus







>







2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
Steven Parkes
Steven Penny
Stewart Gebbie
Stian Soiland-Reyes
Stoned Elipot
stootill on github
Stuart Henderson
Sukanya Hanumanthu
SumatraPeter on github
Sune Ahlgren
Sunny Bean
Sunny Purushe
Sven Anders
Sven Blumenstein
Sven Neuhaus
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
Taneli Vähäkangas
Tanguy Fautre
Taras Kushnir
tarek112 on github
Tatsuhiro Tsujikawa
tawmoto on github
tbugfinder on github

Teemu Yli-Elsila
Temprimus
Terri Oda
Terry Wu
thanhchungbtc on github
The Infinnovation team
TheAssassin on github

Theodore Dubois
therealhirudo on github
tholin on github
Thomas Bouzerar
Thomas Braun
Thomas Danielsson
Thomas Gamper
Thomas Glanzmann
Thomas Guillem
Thomas J. Moore
Thomas Klausner
Thomas L. Shinnick
Thomas Lopatic
Thomas M. DuBuisson
Thomas Petazzoni
Thomas Ruecker
Thomas Schwinge
Thomas Tonino
Thomas van Hesteren
Thomas Vegas

Thorsten Schöning
Tiit Pikma
Till Maas
Tim Ansell
Tim Baker
Tim Bartley
Tim Chen







>







>




















>







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
Taneli Vähäkangas
Tanguy Fautre
Taras Kushnir
tarek112 on github
Tatsuhiro Tsujikawa
tawmoto on github
tbugfinder on github
Ted Lyngmo
Teemu Yli-Elsila
Temprimus
Terri Oda
Terry Wu
thanhchungbtc on github
The Infinnovation team
TheAssassin on github
TheKnarf on github
Theodore Dubois
therealhirudo on github
tholin on github
Thomas Bouzerar
Thomas Braun
Thomas Danielsson
Thomas Gamper
Thomas Glanzmann
Thomas Guillem
Thomas J. Moore
Thomas Klausner
Thomas L. Shinnick
Thomas Lopatic
Thomas M. DuBuisson
Thomas Petazzoni
Thomas Ruecker
Thomas Schwinge
Thomas Tonino
Thomas van Hesteren
Thomas Vegas
Thomas Weißschuh
Thorsten Schöning
Tiit Pikma
Till Maas
Tim Ansell
Tim Baker
Tim Bartley
Tim Chen
2430
2431
2432
2433
2434
2435
2436

2437
2438
2439
2440
2441
2442
2443
Tobias Blomberg
Tobias Gabriel
Tobias Hieta
Tobias Hintze
Tobias Lindgren
Tobias Markus
Tobias Nießen

Tobias Nyholm
Tobias Rundström
Tobias Stoeckmann
Toby Peterson
Todd A Ouska
Todd Kaufmann
Todd Kulesza







>







2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
Tobias Blomberg
Tobias Gabriel
Tobias Hieta
Tobias Hintze
Tobias Lindgren
Tobias Markus
Tobias Nießen
Tobias Nygren
Tobias Nyholm
Tobias Rundström
Tobias Stoeckmann
Toby Peterson
Todd A Ouska
Todd Kaufmann
Todd Kulesza
2544
2545
2546
2547
2548
2549
2550

2551
2552
2553
2554
2555
2556
2557
Vlad Ureche
Vladimir Grishchenko
Vladimir Kotal
Vladimir Lazarenko
Vladimir Panteleev
Vladimir Varlamov
Vlastimil Ovčáčík

Vojtech Janota
Vojtech Minarik
Vojtěch Král
Volker Schmid
Vsevolod Novikov
vshmuk on hackerone
vvb2060 on github







>







2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
Vlad Ureche
Vladimir Grishchenko
Vladimir Kotal
Vladimir Lazarenko
Vladimir Panteleev
Vladimir Varlamov
Vlastimil Ovčáčík
vlubart on github
Vojtech Janota
Vojtech Minarik
Vojtěch Král
Volker Schmid
Vsevolod Novikov
vshmuk on hackerone
vvb2060 on github
2582
2583
2584
2585
2586
2587
2588

2589
2590
2591
2592
2593
2594
2595
William Desportes
wmsch on github
wncboy on github
Wojciech Zwiefka
Wolf Vollprecht
Wouter Van Rooy
Wu Yongzheng

Wyatt O'Day
Wyatt OʼDay
x2018 on github
Xavier Bouchoux
XhmikosR on github
XhstormR on github
Xiang Xiao







>







2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
William Desportes
wmsch on github
wncboy on github
Wojciech Zwiefka
Wolf Vollprecht
Wouter Van Rooy
Wu Yongzheng
Wu Zheng
Wyatt O'Day
Wyatt OʼDay
x2018 on github
Xavier Bouchoux
XhmikosR on github
XhstormR on github
Xiang Xiao
2608
2609
2610
2611
2612
2613
2614

2615
2616
2617
2618
2619
2620
2621
Yechiel Kalmenson
Yehezkel Horowitz
Yehoshua Hershberg
ygthien on github
Yi Huang
Yiming Jing
Yingwei Liu

Ymir1711 on github
Yonggang Luo
Yongkang Huang
Younes El-karama
youngchopin on github
Yousuke Kimoto
Yu Xin







>







2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
Yechiel Kalmenson
Yehezkel Horowitz
Yehoshua Hershberg
ygthien on github
Yi Huang
Yiming Jing
Yingwei Liu
yiyuaner on github
Ymir1711 on github
Yonggang Luo
Yongkang Huang
Younes El-karama
youngchopin on github
Yousuke Kimoto
Yu Xin
2642
2643
2644
2645
2646
2647
2648

2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
ZimCodes on github
zloi-user on github
Zmey Petroff
Zvi Har'El
zzq1015 on github
Ádler Jonas Gross
Érico Nogueira

İsmail Dönmez
Łukasz Domeradzki
Štefan Kremeň
Борис Верховский
Коваленко Анатолий Викторович
Никита Дорохин
ウさん
不确定
加藤郁之
梦终无痕







>










2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
ZimCodes on github
zloi-user on github
Zmey Petroff
Zvi Har'El
zzq1015 on github
Ádler Jonas Gross
Érico Nogueira
Érico Nogueira Rolim
İsmail Dönmez
Łukasz Domeradzki
Štefan Kremeň
Борис Верховский
Коваленко Анатолий Викторович
Никита Дорохин
ウさん
不确定
加藤郁之
梦终无痕
Changes to jni/curl/docs/cmdline-opts/Makefile.in.
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/cmdline-opts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







134
135
136
137
138
139
140
141

142
143
144
145
146
147
148
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/cmdline-opts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
335
336
337
338
339
340
341

342
343
344
345
346
347
348
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/docs/cmdline-opts/capath.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: capath
Arg: <dir>
Help: CA directory to verify peer against
Protocols: TLS
Category: tls
See-also: cacert insecure
Example: --capath /local/directory $URL
Added: 7.9.8
---
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 --capath can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
--cacert 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.













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: capath
Arg: <dir>
Help: CA directory to verify peer against
Protocols: TLS
Category: tls
See-also: cacert insecure
Example: --capath /local/directory $URL
Added: 7.9.8
---
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 --capath can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
--cacert 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.
Changes to jni/curl/docs/cmdline-opts/cert.d.
10
11
12
13
14
15
16
17
18
19





20
21
22
23
24

25

26
27
28
29
30
31
32
33
34
35
36
Example: --cert certfile --key keyfile $URL
Added: 5.0
---
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 is not 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 --cert and --key 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 --engine option will be set
as "pkcs11" if none was provided and the --cert-type option will be set as
"ENG" if none was provided.







|
|

>
>
>
>
>





>
|
>
|
<
<
<







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33



34
35
36
37
38
39
40
Example: --cert certfile --key keyfile $URL
Added: 5.0
---
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 is not 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 --cert and --key to
specify them independently.

In the <certificate> portion of the argument, you must escape the character ":"
as "\\:" so that it is not recognized as the password delimiter. Similarly, you
must escape the character "\\" as "\\\\" so that it is not recognized as an
escape character.

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 provide a path relative to the current directory, you must prefix the
path with "./" in order to avoid confusion with an NSS database nickname.




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 --engine option will be set
as "pkcs11" if none was provided and the --cert-type option will be set as
"ENG" if none was provided.
Changes to jni/curl/docs/cmdline-opts/data.d.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--data-raw is almost the same but does not have a special interpretation of
the @ character. To post data purely binary, you should instead use the
--data-binary option. To URL-encode the value of a form field you may use
--data-urlencode.

If any of these options is used more than once on the same command line, the
data pieces specified will be merged 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 --data @foobar. When
--data is told to read from a file like that, carriage returns and newlines
will be stripped out. If you do not want the @ character to have a special
interpretation use --data-raw instead.







|
|



|



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--data-raw is almost the same but does not have a special interpretation of
the @ character. To post data purely binary, you should instead use the
--data-binary option. To URL-encode the value of a form field you may use
--data-urlencode.

If any of these options is used more than once on the same command line, the
data pieces specified will be merged 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 --data @foobar. When
--data is told to read from a file like that, carriage returns and newlines
will be stripped out. If you do not want the @ character to have a special
interpretation use --data-raw instead.
Changes to jni/curl/docs/cmdline-opts/doh-url.d.
11
12
13
14
15
16
17



18
19
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.







>
>
>


11
12
13
14
15
16
17
18
19
20
21
22
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.

This option is unset if an empty string "" is used as the URL. (Added in
7.85.0)

If this option is used several times, the last one will be used.
Changes to jni/curl/docs/cmdline-opts/fail-with-body.d.
1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
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

Example: --fail-with-body $URL
---
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 output and save that content but
also to return error 22.








>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
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
Mutexed: fail
Example: --fail-with-body $URL
---
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 output and save that content but
also to return error 22.
Changes to jni/curl/docs/cmdline-opts/fail.d.
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: fail
Short: f
Protocols: HTTP
Help: Fail fast with no output on HTTP errors
See-also: fail-with-body
Category: important http
Example: --fail $URL

Added: 4.0
---
Fail fast with no output at all on server errors. This is useful to enable
scripts and users 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
13
14
15
16
17
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: fail
Short: f
Protocols: HTTP
Help: Fail fast with no output on HTTP errors
See-also: fail-with-body
Category: important http
Example: --fail $URL
Mutexed: fail-with-body
Added: 4.0
---
Fail fast with no output at all on server errors. This is useful to enable
scripts and users 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-escape.d.
1
2
3
4
5
6
7
8
9
10
11
12
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: form-escape
Help: Escape multipart form field/file names using backslash
Protocols: HTTP
See-also: form
Added: 7.81.0
Category: http post
Example: --form-escape --form 'field\\name=curl' 'file=@load"this' $URL
---
Tells curl to pass on names of multipart form fields and files using
backslash-escaping instead of percent-encoding.







|
|



1
2
3
4
5
6
7
8
9
10
11
12
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: form-escape
Help: Escape multipart form field/file names using backslash
Protocols: HTTP
See-also: form
Added: 7.81.0
Category: http upload
Example: --form-escape -F 'field\\name=curl' -F 'file=@load"this' $URL
---
Tells curl to pass on names of multipart form fields and files using
backslash-escaping instead of percent-encoding.
Changes to jni/curl/docs/cmdline-opts/form-string.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: form-string
Help: Specify multipart MIME data
Protocols: HTTP SMTP IMAP
Arg: <name=string>
See-also: form
Category: http upload
Example: --form-string "data" $URL
Added: 7.13.2
---
Similar to --form 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 --form if
there's any possibility that the string value may accidentally trigger the
\&'@' or \&'<' features of --form.












|


|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: form-string
Help: Specify multipart MIME data
Protocols: HTTP SMTP IMAP
Arg: <name=string>
See-also: form
Category: http upload
Example: --form-string "data" $URL
Added: 7.13.2
---
Similar to --form 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 --form if
there's any possibility that the string value may accidentally trigger the
'@' or '<' features of --form.
Changes to jni/curl/docs/cmdline-opts/form.d.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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/







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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/
Changes to jni/curl/docs/cmdline-opts/ftp-method.d.
19
20
21
22
23
24
25
26
27
28
hierarchies this means 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







|


19
20
21
22
23
24
25
26
27
28
hierarchies this means 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
Changes to jni/curl/docs/cmdline-opts/ftp-port.d.
29
30
31
32
33
34
35
36
37
38
39
40
connection
.RE

If this option is used several times, the last one will be used. Disable the
use of PORT with --ftp-pasv. Disable the attempt to use the EPRT command
instead of PORT by using --disable-eprt. EPRT is really PORT++.

You can also 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.
(Added in 7.19.5)







|




29
30
31
32
33
34
35
36
37
38
39
40
connection
.RE

If this option is used several times, the last one will be used. Disable the
use of PORT with --ftp-pasv. Disable the attempt to use the EPRT command
instead of PORT by using --disable-eprt. EPRT is really PORT++.

You can also 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.
(Added in 7.19.5)
Changes to jni/curl/docs/cmdline-opts/gen.pl.
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
        }
        elsif($exam && ($d !~ /^ /)) {
            # end of example
            $exam = 0;
            print ".fi\n"; # fill-in
        }
        # skip lines starting with space (examples)
        if($d =~ /^[^ ]/) {
            for my $k (keys %optlong) {
                my $l = manpageify($k);
                $d =~ s/--$k([^a-z0-9_-])(\W)/$l$1$2/;
            }
        }
        # quote "bare" minuses in the output
        $d =~ s/( |\\fI|^)--/$1\\-\\-/g;
        $d =~ s/([ -]|\\fI|^)-/$1\\-/g;
        # handle single quotes first on the line
        $d =~ s/(\s*)\'/$1\\(aq/;


        print $d;
    }
    if($exam) {
        print ".fi\n"; # fill-in
    }
}








|


|






|
>
>







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
        }
        elsif($exam && ($d !~ /^ /)) {
            # end of example
            $exam = 0;
            print ".fi\n"; # fill-in
        }
        # skip lines starting with space (examples)
        if($d =~ /^[^ ]/ && $d =~ /--/) {
            for my $k (keys %optlong) {
                my $l = manpageify($k);
                $d =~ s/--\Q$k\E([^a-z0-9_-])([^a-zA-Z0-9_])/$l$1$2/;
            }
        }
        # quote "bare" minuses in the output
        $d =~ s/( |\\fI|^)--/$1\\-\\-/g;
        $d =~ s/([ -]|\\fI|^)-/$1\\-/g;
        # handle single quotes first on the line
        $d =~ s/^(\s*)\'/$1\\(aq/;
        # handle double quotes first on the line
        $d =~ s/^(\s*)\"/$1\\(dq/;
        print $d;
    }
    if($exam) {
        print ".fi\n"; # fill-in
    }
}

Changes to jni/curl/docs/cmdline-opts/header.d.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 are
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







|

|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 are
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
Changes to jni/curl/docs/cmdline-opts/insecure.d.
18
19
20
21
22
23
24
25
26
27
the right name which matches the host name used in the URL and that the
certificate has been signed by a CA certificate present in the cert store.
See this online resource for further details:
 https://curl.se/docs/sslcerts.html

For SFTP and SCP, this option makes curl skip the *known_hosts* verification.
*known_hosts* is a file normally stored in the user's home directory in the
\&.ssh subdirectory, which contains host names and their public keys.

**WARNING**: using this option makes the transfer insecure.







|


18
19
20
21
22
23
24
25
26
27
the right name which matches the host name used in the URL and that the
certificate has been signed by a CA certificate present in the cert store.
See this online resource for further details:
 https://curl.se/docs/sslcerts.html

For SFTP and SCP, this option makes curl skip the *known_hosts* verification.
*known_hosts* is a file normally stored in the user's home directory in the
".ssh" subdirectory, which contains host names and their public keys.

**WARNING**: using this option makes the transfer insecure.
Changes to jni/curl/docs/cmdline-opts/json.d.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 --header "Accept: application/json"

There is **no verification** that the passed in data is actual JSON or that
the syntax is correct.

If you start the data with the letter @, the rest should be a file name to
read the data from, or a single dash (-) if you want curl to read the data
from stdin. Posting data from a file named \&'foobar' would thus be done with
--json @foobar and to instead read the data from stdin, use --json @-.

If this option is used more than once on the same command line, the additional
data pieces will be concatenated to the previous before sending.

The headers this option sets can be overridden with --header as usual.







|






21
22
23
24
25
26
27
28
29
30
31
32
33
34
 --header "Accept: application/json"

There is **no verification** that the passed in data is actual JSON or that
the syntax is correct.

If you start the data with the letter @, the rest should be a file name to
read the data from, or a single dash (-) if you want curl to read the data
from stdin. Posting data from a file named 'foobar' would thus be done with
--json @foobar and to instead read the data from stdin, use --json @-.

If this option is used more than once on the same command line, the additional
data pieces will be concatenated to the previous before sending.

The headers this option sets can be overridden with --header as usual.
Changes to jni/curl/docs/cmdline-opts/key.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: key
Arg: <key>
Protocols: TLS SSH
Help: Private key file name
Category: tls ssh
Example: --cert certificate --key here $URL
Added: 7.9.3
See-also: key-type cert
---
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 --engine option will be set
as "pkcs11" if none was provided and the --key-type option will be set as
"ENG" if none was provided.













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: key
Arg: <key>
Protocols: TLS SSH
Help: Private key file name
Category: tls ssh
Example: --cert certificate --key here $URL
Added: 7.9.3
See-also: key-type cert
---
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 --engine option will be set
as "pkcs11" if none was provided and the --key-type option will be set as
"ENG" if none was provided.
Changes to jni/curl/docs/cmdline-opts/netrc.d.
13
14
15
16
17
18
19
20
21
22
23
24
25
Unix. If used with HTTP, curl will enable user authentication. See
*netrc(5)* and *ftp(1)* for details on the file format. Curl will not
complain if that file does not have the right permissions (it should be
neither world- nor group-readable). The environment variable "HOME" is used
to find the home directory.

A quick and 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'
could look similar to:

 machine host.domain.com
 login myself
 password secret"







|




|
13
14
15
16
17
18
19
20
21
22
23
24
25
Unix. If used with HTTP, curl will enable user authentication. See
*netrc(5)* and *ftp(1)* for details on the file format. Curl will not
complain if that file does not have the right permissions (it should be
neither world- nor group-readable). The environment variable "HOME" is used
to find the home directory.

A quick and 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'
could look similar to:

 machine host.domain.com
 login myself
 password secret
Changes to jni/curl/docs/cmdline-opts/noproxy.d.
13
14
15
16
17
18
19
20
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 ('no_proxy' and 'NO_PROXY'). If there's an environment variable
disabling a proxy, you can set the noproxy list to \&"" to override it.







|
13
14
15
16
17
18
19
20
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 ('no_proxy' and 'NO_PROXY'). If there's an environment variable
disabling a proxy, you can set the noproxy list to "" to override it.
Changes to jni/curl/docs/cmdline-opts/page-footer.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 should not 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 --proxy 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







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 should not 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 --proxy 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
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
Too many redirects. When following redirects, curl hit the maximum amount.
.IP 48
Unknown option specified to libcurl. This indicates that you passed a weird
option to curl that was passed on to libcurl and rejected. Read up in the
manual!
.IP 49
Malformed telnet option.
.IP 51
The peer's SSL certificate or SSH MD5 fingerprint was not OK.
.IP 52
The server did not reply anything, which here is considered an error.
.IP 53
SSL crypto engine not found.
.IP 54
Cannot set SSL crypto engine as default.
.IP 55
Failed sending network data.
.IP 56
Failure in receiving network data.
.IP 58
Problem with the local certificate.
.IP 59
Could not use specified SSL cipher.
.IP 60
Peer certificate cannot be authenticated with known CA certificates.
.IP 61
Unrecognized transfer encoding.
.IP 62
Invalid LDAP URL.
.IP 63
Maximum file size exceeded.
.IP 64
Requested FTP SSL level failed.
.IP 65
Sending the data requires a rewind that failed.
.IP 66







<
<


















<
<







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
Too many redirects. When following redirects, curl hit the maximum amount.
.IP 48
Unknown option specified to libcurl. This indicates that you passed a weird
option to curl that was passed on to libcurl and rejected. Read up in the
manual!
.IP 49
Malformed telnet option.


.IP 52
The server did not reply anything, which here is considered an error.
.IP 53
SSL crypto engine not found.
.IP 54
Cannot set SSL crypto engine as default.
.IP 55
Failed sending network data.
.IP 56
Failure in receiving network data.
.IP 58
Problem with the local certificate.
.IP 59
Could not use specified SSL cipher.
.IP 60
Peer certificate cannot be authenticated with known CA certificates.
.IP 61
Unrecognized transfer encoding.


.IP 63
Maximum file size exceeded.
.IP 64
Requested FTP SSL level failed.
.IP 65
Sending the data requires a rewind that failed.
.IP 66
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
Illegal TFTP operation.
.IP 72
Unknown TFTP transfer ID.
.IP 73
File already exists (TFTP).
.IP 74
No such user (TFTP).
.IP 75
Character conversion failed.
.IP 76
Character conversion functions required.
.IP 77
Problem reading the SSL CA cert (path? access rights?).
.IP 78
The resource referenced in the URL does not exist.
.IP 79
An unspecified error occurred during the SSH session.
.IP 80







<
<
<
<







255
256
257
258
259
260
261




262
263
264
265
266
267
268
Illegal TFTP operation.
.IP 72
Unknown TFTP transfer ID.
.IP 73
File already exists (TFTP).
.IP 74
No such user (TFTP).




.IP 77
Problem reading the SSL CA cert (path? access rights?).
.IP 78
The resource referenced in the URL does not exist.
.IP 79
An unspecified error occurred during the SSH session.
.IP 80
Changes to jni/curl/docs/cmdline-opts/proto.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: proto
Arg: <protocols>
Help: Enable/disable PROTOCOLS
See-also: proto-redir proto-default
Added: 7.20.2
Category: connection curl
Example: --proto =http,https,sftp $URL
---
Tells curl to limit what protocols it may use for transfers. 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 -












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: proto
Arg: <protocols>
Help: Enable/disable PROTOCOLS
See-also: proto-redir proto-default
Added: 7.20.2
Category: connection curl
Example: --proto =http,https,sftp $URL
---
Tells curl to limit what protocols it may use for transfers. 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 -
Changes to jni/curl/docs/cmdline-opts/proxy.d.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Prior versions may ignore the protocol and use http:// instead.

If the port number is not specified in the proxy string, it is assumed to be
1080.

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 --proxytunnel option.

User and password that might be provided in the proxy string are URL decoded







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Prior versions may ignore the protocol and use http:// instead.

If the port number is not specified in the proxy string, it is assumed to be
1080.

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 --proxytunnel option.

User and password that might be provided in the proxy string are URL decoded
Changes to jni/curl/docs/cmdline-opts/range.d.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
.RE
.IP
(*) = NOTE that this will cause the server to reply with a multipart
response, which will be returned as-is by curl! Parsing or otherwise
transforming this response is the responsibility of the caller.

Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
\&'start-stop' range syntax. If a non-digit character is given in the range,
the server's response will be unspecified, depending on the server's
configuration.

You should also be aware that many HTTP/1.1 servers do not have this feature
enabled, so that when you attempt to get a range, you will instead get the
whole document.








|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
.RE
.IP
(*) = NOTE that this will cause the server to reply with a multipart
response, which will be returned as-is by curl! Parsing or otherwise
transforming this response is the responsibility of the caller.

Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
'start-stop' range syntax. If a non-digit character is given in the range,
the server's response will be unspecified, depending on the server's
configuration.

You should also be aware that many HTTP/1.1 servers do not have this feature
enabled, so that when you attempt to get a range, you will instead get the
whole document.

Changes to jni/curl/docs/cmdline-opts/referer.d.
11
12
13
14
15
16
17
18
19
20
21
Example: --referer "https://fake.example;auto" -L $URL
Example: --referer ";auto" -L $URL
Added: 4.0
---
Sends the "Referrer Page" information to the HTTP server. This can also be set
with the --header flag of course. When used with --location you can append
";auto" to the --referer 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 do not set an initial --referer.

If this option is used several times, the last one will be used.







|



11
12
13
14
15
16
17
18
19
20
21
Example: --referer "https://fake.example;auto" -L $URL
Example: --referer ";auto" -L $URL
Added: 4.0
---
Sends the "Referrer Page" information to the HTTP server. This can also be set
with the --header flag of course. When used with --location you can append
";auto" to the --referer 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 do not set an initial --referer.

If this option is used several times, the last one will be used.
Changes to jni/curl/docs/cmdline-opts/resolve.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: resolve
Arg: <[+]host:port:addr[,addr]...>
Help: Resolve the host+port to this address
Added: 7.21.3
Category: connection
Example: --resolve example.com:443:127.0.0.1 $URL
See-also: connect-to alt-svc
---
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






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
Long: resolve
Arg: <[+]host:port:addr[,addr]...>
Help: Resolve the host+port to this address
Added: 7.21.3
Category: connection dns
Example: --resolve example.com:443:127.0.0.1 $URL
See-also: connect-to alt-svc
---
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
Changes to jni/curl/docs/curl-config.1.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "May 17, 2022" "Curl 7.84.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







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "May 17, 2022" "Curl 7.85.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.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "June 26 2022" "curl 7.84.0" "curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
\fBcurl\fP is a tool for transferring data from or to a server. It supports these
protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS,







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "August 30 2022" "curl 7.85.0" "curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
\fBcurl\fP is a tool for transferring data from or to a server. It supports these
protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS,
47
48
49
50
51
52
53
54
55
56
57
58
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
The URL syntax is protocol-dependent. You 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:

.nf
  "http://site.{one,two,three}.com"
.fi

or you can get sequences of alphanumeric series by using [] as in:

.nf
  "ftp://ftp.example.com/file[1-100].txt"
.fi

.nf
  "ftp://ftp.example.com/file[001-100].txt"    (with leading zeros)
.fi

.nf
  "ftp://ftp.example.com/file[a-z].txt"
.fi

Nested sequences are not supported, but you can use several ones next to each
other:

.nf
  "http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
.fi

You can specify any amount of URLs on the command line. They will be fetched
in a sequential manner in the specified order. You can specify command line
options and URLs mixed and in any order on the command line.

You can specify a step counter for the ranges to get every Nth number or
letter:

.nf
  "http://example.com/file[1-100:10].txt"
.fi

.nf
  "http://example.com/file[a-z:2].txt"
.fi

When using [] or {} sequences when invoked from a command line prompt, you
probably have to put the full URL within double quotes to avoid the shell from
interfering with it. This also goes for other characters treated special, like
for example \(aq&', '?' and '*'.

Provide the IPv6 zone index in the URL with an escaped percentage sign and the
interface name. Like in

.nf
  "http://[fe80::3%25eth0]/"
.fi

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.








|





|



|



|






|










|



|





|





|







47
48
49
50
51
52
53
54
55
56
57
58
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
The URL syntax is protocol-dependent. You 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:

.nf
  \(dqhttp://site.{one,two,three}.com"
.fi

or you can get sequences of alphanumeric series by using [] as in:

.nf
  \(dqftp://ftp.example.com/file[1-100].txt"
.fi

.nf
  \(dqftp://ftp.example.com/file[001-100].txt"    (with leading zeros)
.fi

.nf
  \(dqftp://ftp.example.com/file[a-z].txt"
.fi

Nested sequences are not supported, but you can use several ones next to each
other:

.nf
  \(dqhttp://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
.fi

You can specify any amount of URLs on the command line. They will be fetched
in a sequential manner in the specified order. You can specify command line
options and URLs mixed and in any order on the command line.

You can specify a step counter for the ranges to get every Nth number or
letter:

.nf
  \(dqhttp://example.com/file[1-100:10].txt"
.fi

.nf
  \(dqhttp://example.com/file[a-z:2].txt"
.fi

When using [] or {} sequences when invoked from a command line prompt, you
probably have to put the full URL within double quotes to avoid the shell from
interfering with it. This also goes for other characters treated special, like
for example '&', '?' and '*'.

Provide the IPv6 zone index in the URL with an escaped percentage sign and the
interface name. Like in

.nf
  \(dqhttp://[fe80::3%25eth0]/"
.fi

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.

211
212
213
214
215
216
217
218
219
220
221
222
223
224
225

In general, all boolean options are enabled with \-\-\fBoption\fP and yet again
disabled with \-\-\fBno-\fPoption. That is, you use the same option name but
prefix it with "no-". However, in this list we mostly only list and show the
\-\-option version of them.
.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 \(aq@', however
the <path> argument should not have this leading character.

Example:
.nf
 curl --abstract-unix-socket socketpath https://example.com
.fi








|







211
212
213
214
215
216
217
218
219
220
221
222
223
224
225

In general, all boolean options are enabled with \-\-\fBoption\fP and yet again
disabled with \-\-\fBno-\fPoption. That is, you use the same option name but
prefix it with "no-". However, in this list we mostly only list and show the
\-\-option version of them.
.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.

Example:
.nf
 curl --abstract-unix-socket socketpath https://example.com
.fi

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
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 \(aqCURL_CA_BUNDLE' if it is
set, and uses the given path as a path to a CA cert bundle. This option
overrides that variable.

The windows version of curl will automatically look for a CA certs file named
\(aqcurl-ca-bundle.crt', either in the same directory as curl.exe, or in the
Current Working Directory, or in any folder along your PATH.

If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
(libnsspem.so) needs to be available for this option to work properly.

(iOS and macOS only) If curl is built against Secure Transport, then this
option is supported for backward compatibility with other SSL engines, but it
should not be set. If the option is not set, then curl will use the
certificates in the system and user Keychain to verify the peer, which is the
preferred method of verifying the peer\(aqs certificate chain.

(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\(aq store of root certificates (the default for Schannel).

If this option is used several times, the last one will be used.

Example:
.nf
 curl --cacert CA-file.txt https://example.com
.fi

See also \fI--capath\fP and \fI-k, --insecure\fP.
.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 \-\-capath can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
\-\-cacert 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.







|














|




|












|







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
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
overrides that variable.

The windows version of curl will automatically look for a CA certs file named
\(aqcurl-ca-bundle.crt', either in the same directory as curl.exe, or in the
Current Working Directory, or in any folder along your PATH.

If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
(libnsspem.so) needs to be available for this option to work properly.

(iOS and macOS only) If curl is built against Secure Transport, then this
option is supported for backward compatibility with other SSL engines, but it
should not be set. If the option is not set, then curl will use the
certificates in the system and user Keychain to verify the peer, which is the
preferred method of verifying the peer's certificate chain.

(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.

Example:
.nf
 curl --cacert CA-file.txt https://example.com
.fi

See also \fI--capath\fP and \fI-k, --insecure\fP.
.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.
\(dqpath1: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 \-\-capath can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
\-\-cacert 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.
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

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 is not 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 \-\-cert and \-\-key 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 \-\-engine option will be set
as "pkcs11" if none was provided and the \-\-cert-type 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.

(Schannel only) Client certificates must be specified by a path
expression to a certificate store. (Loading PFX is not supported; you can
import it to a store first). You can use
"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
in the system certificates store, for example,
"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
usually a SHA-1 hex string which you can see in certificate details. Following
store locations are supported: CurrentUser, LocalMachine, CurrentService,
Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
LocalMachineEnterprise.

If this option is used several times, the last one will be used.








|
|

>
>
>
>
>





>
|
>
|
<
<
<






|










|

|







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

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 is not 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 \-\-cert and \-\-key to
specify them independently.

In the <certificate> portion of the argument, you must escape the character ":"
as "\\:" so that it is not recognized as the password delimiter. Similarly, you
must escape the character "\\" as "\\\\" so that it is not recognized as an
escape character.

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 provide a path relative to the current directory, you must prefix the
path with "./" in order to avoid confusion with an NSS database nickname.




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 \-\-engine option will be set
as "pkcs11" if none was provided and the \-\-cert-type option will be set as
\(dqENG" 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.

(Schannel only) Client certificates must be specified by a path
expression to a certificate store. (Loading PFX is not supported; you can
import it to a store first). You can use
\(dq<store location>\\<store name>\\<thumbprint>" to refer to a certificate
in the system certificates store, for example,
\(dqCurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
usually a SHA-1 hex string which you can see in certificate details. Following
store locations are supported: CurrentUser, LocalMachine, CurrentService,
Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
LocalMachineEnterprise.

If this option is used several times, the last one will be used.

495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
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 \(aq#' 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 \-\-config as \(aq-' 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 \-\-url option, and not by simply writing the URL on its own
line. So, it could look similar to this:

url = "https://curl.se/docs/"








|




|







499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
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 \-\-config 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 \-\-url option, and not by simply writing the URL on its own
line. So, it could look similar to this:

url = "https://curl.se/docs/"

557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
Example:
.nf
 curl --config file.txt https://example.com
.fi

See also \fI-q, --disable\fP.
.IP "\-\-connect-timeout <fractional seconds>"
Maximum time in seconds that you allow curl\(aqs 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.

Examples:







|







561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
Example:
.nf
 curl --config file.txt https://example.com
.fi

See also \fI-q, --disable\fP.
.IP "\-\-connect-timeout <fractional 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.

Examples:
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
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\(aqs 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.

Example:
.nf
 curl --connect-to example.com:443:example.net:8443 https://example.com
.fi







|



|







584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
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
\(dq127.0.0.1" or the full host name such as "example.org".

This option can be used many times to add many connect rules.

Example:
.nf
 curl --connect-to example.com:443:example.net:8443 https://example.com
.fi
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
(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". This makes curl use the
cookie header with this content explicitly in all outgoing request(s). If
multiple requests are done due to authentication, followed redirects or
similar, they will all get this cookie passed on.

If no \(aq=' 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 are using this in combination with the \-\-location 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







|







651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
(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". This makes curl use the
cookie header with this content explicitly in all outgoing request(s). If
multiple requests are done due to authentication, followed redirects or
similar, they will all get this cookie passed on.

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 are using this in combination with the \-\-location 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
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
.nf
 curl --create-dirs --output local/dir/file https://example.com
.fi

See also \fI--ftp-create-dirs\fP and \fI--output-dir\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 \(aqmode' to set on the file
at creation time, instead of the default 0644.

This option takes an octal number as argument.

If this option is used several times, the last one will be used.

Example:







|







701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
.nf
 curl --create-dirs --output local/dir/file https://example.com
.fi

See also \fI--ftp-create-dirs\fP and \fI--output-dir\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.

If this option is used several times, the last one will be used.

Example:
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
\-\-data-raw is almost the same but does not have a special interpretation of
the @ character. To post data purely binary, you should instead use the
\-\-data-binary 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 with a separating &-symbol. Thus, using
\&\(aq-d name=daniel \-d skill=lousy' would generate a post chunk that looks like
\&\(aqname=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 \&\(aqfoobar' would thus be done with \fI\-d, \-\-data\fP @foobar. When
\-\-data is told to read from a file like that, carriage returns and newlines
will be stripped out. If you do not want the @ character to have a special
interpretation use \-\-data-raw instead.

Examples:
.nf
 curl -d "name=curl" https://example.com







|
|



|







847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
\-\-data-raw is almost the same but does not have a special interpretation of
the @ character. To post data purely binary, you should instead use the
\-\-data-binary 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 with a separating &-symbol. Thus, using
\(aq-d name=daniel \-d skill=lousy' would generate a post chunk that looks like
\(aqname=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
\-\-data is told to read from a file like that, carriage returns and newlines
will be stripped out. If you do not want the @ character to have a special
interpretation use \-\-data-raw instead.

Examples:
.nf
 curl -d "name=curl" https://example.com
1036
1037
1038
1039
1040
1041
1042



1043
1044
1045
1046
1047
1048
1049
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 \fI\-\-doh-cert-status\fP.




If this option is used several times, the last one will be used.

Example:
.nf
 curl --doh-url https://doh.example https://example.com
.fi







>
>
>







1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
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 \fI\-\-doh-cert-status\fP.

This option is unset if an empty string "" is used as the URL. (Added in
7.85.0)

If this option is used several times, the last one will be used.

Example:
.nf
 curl --doh-url https://doh.example https://example.com
.fi
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

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\(aqs 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\(aqs HTTP status code. You can combine the two options, however note \-\-fail
is not global and is therefore contained by \fI\-:, \-\-next\fP.

Example:
.nf
 curl --fail-early https://example.com https://two.example
.fi








|










|







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

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 \-\-fail
is not global and is therefore contained by \fI\-:, \-\-next\fP.

Example:
.nf
 curl --fail-early https://example.com https://two.example
.fi

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
circumstances but without saving the content.

Example:
.nf
 curl --fail-with-body https://example.com
.fi

See also \fI-f, --fail\fP. Added in 7.76.0.
.IP "\-f, \-\-fail"
(HTTP) Fail fast with no output at all on server errors. This is useful to enable
scripts and users 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).

Example:
.nf
 curl --fail https://example.com
.fi

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\(aqs 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.

Example:
.nf
 curl --false-start https://example.com
.fi

See also \fI--tcp-fastopen\fP. Added in 7.42.0.
.IP "\-\-form-escape"
(HTTP) Tells curl to pass on names of multipart form fields and files using
backslash-escaping instead of percent-encoding.

Example:
.nf
 curl --form-escape --form 'field\\name=curl' 'file=@load"this' https://example.com
.fi

See also \fI-F, --form\fP. Added in 7.81.0.
.IP "\-\-form-string <name=string>"
(HTTP SMTP IMAP) Similar to \-\-form except that the value string for the named parameter is used
literally. Leading \&\(aq@' and \&'<' characters, and the \&';type=' string in
the value have no special meaning. Use this in preference to \-\-form if
there\(aqs any possibility that the string value may accidentally trigger the
\&\(aq@' or \&'<' features of \fI\-F, \-\-form\fP.

Example:
.nf
 curl --form-string "data" https://example.com
.fi

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 means to compose a multipart mail
message to transmit.

This enables uploading of binary files etc. To force the \(aqcontent' 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\(aqs 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 \&\(aqprofile' is the name of the
form-field to which the file portrait.jpg will be the input:

.nf
 curl \-F profile=@portrait.jpg https://example.com/upload.cgi
.fi

Example: send your name and shoe size in two text fields to the server:

.nf
 curl \-F name=John \-F shoesize=11 https://example.com/
.fi

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:

.nf
 curl \-F "story=<hugefile.txt" https://example.com/
.fi

You can also tell curl what Content-Type to use by using \(aqtype=', in a manner
similar to:

.nf
 curl \-F "web=@index.html;type=text/html" example.com
.fi

or

.nf
 curl \-F "name=daniel;type=text/foo" example.com
.fi

You can also explicitly change the name field of a file upload part by setting
filename=, like this:

.nf
 curl \-F "file=@localfile;filename=nameinpost" example.com
.fi

If filename/path contains \(aq,' or ';', it must be quoted by double-quotes like:

.nf
 curl \-F "file=@\\"local,file\\";filename=\\"name;in;post\\"" example.com
.fi

or

.nf
 curl \-F \(aqfile=@"local,file";filename="name;in;post"' example.com
.fi

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:

.nf
 curl \-F \(aqcolors="red; green; blue";type=text/x-myapp' example.com
.fi

You can add custom headers to the field by setting headers=, like

.nf
  curl \-F "submit=OK;headers=\\"X-submit-type: OK\\"" example.com
.fi

or

.nf
  curl \-F "submit=OK;headers=@headerfile" example.com
.fi

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 \(aq#' 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:

.nf
  # This file contain two headers.
  X-header-1: this is a header
.fi

.nf
  # The following header is folded.
  X-header-2: this is
   another header
.fi

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 \(aq(', this signals to start a new multipart: it can be
followed by a content type specification.
.br
\- a multipart can be terminated with a \(aq=)' argument.

Example: the following command sends an SMTP mime email consisting in an
inline part in two alternative formats: plain text and HTML. It attaches a
text file:

.nf
 curl \-F \(aq=(;type=multipart/alternative' \\
      \-F \(aq=plain text message' \\
      \-F \(aq= <body>HTML message</body>;type=text/html' \\
      \-F \(aq=)' \-F '=@textfile.txt' ...  smtp://example.com
.fi

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:

.nf
 curl \-F \(aq=text message;encoder=quoted-printable' \\
      \-F \(aq=@localfile;encoder=base64' ... smtp://example.com
.fi

See further examples and details in the MANUAL.

This option can be used multiple times.

Example:







|
















|



|

















|





|

|
|















|









|





|



















|



















|








|









|
















|



















|


|






|
|
|
|













|
|







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
circumstances but without saving the content.

Example:
.nf
 curl --fail-with-body https://example.com
.fi

See also \fI-f, --fail\fP. This option is mutually exclusive to \fI-f, --fail\fP. Added in 7.76.0.
.IP "\-f, \-\-fail"
(HTTP) Fail fast with no output at all on server errors. This is useful to enable
scripts and users 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).

Example:
.nf
 curl --fail https://example.com
.fi

See also \fI--fail-with-body\fP. This option is mutually exclusive to \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.

Example:
.nf
 curl --false-start https://example.com
.fi

See also \fI--tcp-fastopen\fP. Added in 7.42.0.
.IP "\-\-form-escape"
(HTTP) Tells curl to pass on names of multipart form fields and files using
backslash-escaping instead of percent-encoding.

Example:
.nf
 curl --form-escape -F 'field\\name=curl' -F 'file=@load"this' https://example.com
.fi

See also \fI-F, --form\fP. Added in 7.81.0.
.IP "\-\-form-string <name=string>"
(HTTP SMTP IMAP) Similar to \-\-form 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 \-\-form if
there's any possibility that the string value may accidentally trigger the
\(aq@' or '<' features of \fI\-F, \-\-form\fP.

Example:
.nf
 curl --form-string "data" https://example.com
.fi

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 means 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:

.nf
 curl \-F profile=@portrait.jpg https://example.com/upload.cgi
.fi

Example: send your name and shoe size in two text fields to the server:

.nf
 curl \-F name=John \-F shoesize=11 https://example.com/
.fi

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:

.nf
 curl \-F "story=<hugefile.txt" https://example.com/
.fi

You can also tell curl what Content-Type to use by using 'type=', in a manner
similar to:

.nf
 curl \-F "web=@index.html;type=text/html" example.com
.fi

or

.nf
 curl \-F "name=daniel;type=text/foo" example.com
.fi

You can also explicitly change the name field of a file upload part by setting
filename=, like this:

.nf
 curl \-F "file=@localfile;filename=nameinpost" example.com
.fi

If filename/path contains ',' or ';', it must be quoted by double-quotes like:

.nf
 curl \-F "file=@\\"local,file\\";filename=\\"name;in;post\\"" example.com
.fi

or

.nf
 curl \-F 'file=@"local,file";filename="name;in;post"' example.com
.fi

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:

.nf
 curl \-F 'colors="red; green; blue";type=text/x-myapp' example.com
.fi

You can add custom headers to the field by setting headers=, like

.nf
  curl \-F "submit=OK;headers=\\"X-submit-type: OK\\"" example.com
.fi

or

.nf
  curl \-F "submit=OK;headers=@headerfile" example.com
.fi

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:

.nf
  # This file contain two headers.
  X-header-1: this is a header
.fi

.nf
  # The following header is folded.
  X-header-2: this is
   another header
.fi

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 email consisting in an
inline part in two alternative formats: plain text and HTML. It attaches a
text file:

.nf
 curl \-F '=(;type=multipart/alternative' \\
      \-F '=plain text message' \\
      \-F '= <body>HTML message</body>;type=text/html' \\
      \-F '=)' \-F '=@textfile.txt' ...  smtp://example.com
.fi

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:

.nf
 curl \-F '=text message;encoder=quoted-printable' \\
      \-F '=@localfile;encoder=base64' ... smtp://example.com
.fi

See further examples and details in the MANUAL.

This option can be used multiple times.

Example:
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
.nf
 curl --ftp-account "mr.robot" ftp://example.com/
.fi

See also \fI-u, --user\fP.
.IP "\-\-ftp-alternative-to-user <command>"
(FTP) If authenticating with the USER and PASS commands fails, send this command.
When connecting to Tumbleweed\(aqs Secure Transport server over FTPS using a
client certificate, using "SITE AUTH" will tell the server to retrieve the
username from the certificate.

Example:
.nf
 curl --ftp-alternative-to-user "U53r" ftp://example.com
.fi







|







1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
.nf
 curl --ftp-account "mr.robot" ftp://example.com/
.fi

See also \fI-u, --user\fP.
.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.

Example:
.nf
 curl --ftp-alternative-to-user "U53r" ftp://example.com
.fi
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
hierarchies this means 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 \(aqnocwd' but without the full penalty of 'multicwd'.
.RE

Examples:
.nf
 curl --ftp-method multicwd ftp://example.com/dir1/dir2/file
 curl --ftp-method nocwd ftp://example.com/dir1/dir2/file
 curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file







|
|







1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
hierarchies this means 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
\(dqnormally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE

Examples:
.nf
 curl --ftp-method multicwd ftp://example.com/dir1/dir2/file
 curl --ftp-method nocwd ftp://example.com/dir1/dir2/file
 curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file
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
 curl --ftp-pasv ftp://example.com/
.fi

See also \fI--disable-epsv\fP.
.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\(aqs 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\(aqs 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++.

You can also 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.


Examples:
.nf







|




|













|







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
 curl --ftp-pasv ftp://example.com/
.fi

See also \fI--disable-epsv\fP.
.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++.

You can also 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.


Examples:
.nf
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
.nf
 curl --ftp-pret ftp://example.com/
.fi

See also \fI-P, --ftp-port\fP and \fI--ftp-pasv\fP.
.IP "\-\-ftp-skip-pasv-ip"
(FTP) Tell curl to not use the IP address the server suggests in its response
to curl\(aqs 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.








|







1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
.nf
 curl --ftp-pret ftp://example.com/
.fi

See also \fI-P, --ftp-port\fP and \fI--ftp-pasv\fP.
.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.

1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
.fi

See also \fI--ssl\fP.
.IP "\-G, \-\-get"
When used, this option will make all data specified with \fI\-d, \-\-data\fP, \-\-data-binary
or \-\-data-urlencode 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 \(aq?' 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 does not make sense, but you should then instead enforce
the alternative method you prefer.







|







1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
.fi

See also \fI--ssl\fP.
.IP "\-G, \-\-get"
When used, this option will make all data specified with \fI\-d, \-\-data\fP, \-\-data-binary
or \-\-data-urlencode 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 does not make sense, but you should then instead enforce
the alternative method you prefer.
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
Happy Eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
addresses for dual-stack hosts, giving IPv6 a head-start of the specified
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.

Example:
.nf
 curl --happy-eyeballs-timeout-ms 500 https://example.com
.fi

See also \fI-m, --max-time\fP and \fI--connect-timeout\fP. 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\(aqs true IP address and port.

This option is primarily useful when sending test requests to a service that
expects this header.

Example:
.nf
 curl --haproxy-protocol https://example.com







|














|







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
Happy Eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
addresses for dual-stack hosts, giving IPv6 a head-start of the specified
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
\(dqIt 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.

Example:
.nf
 curl --happy-eyeballs-timeout-ms 500 https://example.com
.fi

See also \fI-m, --max-time\fP and \fI--connect-timeout\fP. 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.

Example:
.nf
 curl --haproxy-protocol https://example.com
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
(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 are
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







|

|







1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
(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 are
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
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
.nf
 curl --help all
.fi

See also \fI-v, --verbose\fP.
.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\(aqs public key, curl will refuse
the connection with the host unless the md5sums match.

Example:
.nf
 curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
.fi

See also \fI--hostpubsha256\fP.
.IP "\-\-hostpubsha256 <sha256>"
(SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash of the remote
host\(aqs public key. Curl will refuse the connection with the host
unless the hashes match.

Example:
.nf
 curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
.fi








|










|







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
.nf
 curl --help all
.fi

See also \fI-v, --verbose\fP.
.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.

Example:
.nf
 curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
.fi

See also \fI--hostpubsha256\fP.
.IP "\-\-hostpubsha256 <sha256>"
(SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash of the remote
host's public key. Curl will refuse the connection with the host
unless the hashes match.

Example:
.nf
 curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
.fi

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
See also \fI-v, --verbose\fP.
.IP "\-k, \-\-insecure"
(TLS SFTP SCP) By default, every secure connection curl makes is verified to be secure before
the transfer takes place. This option makes curl skip the verification step
and proceed without checking.

When this option is not used for protocols using TLS, curl verifies the
server\(aqs TLS certificate before it continues: that the certificate contains
the right name which matches the host name used in the URL and that the
certificate has been signed by a CA certificate present in the cert store.
See this online resource for further details:
.nf
 https://curl.se/docs/sslcerts.html
.fi

For SFTP and SCP, this option makes curl skip the \fIknown_hosts\fP verification.
\fIknown_hosts\fP is a file normally stored in the user\(aqs home directory in the
\&.ssh subdirectory, which contains host names and their public keys.

\fBWARNING\fP: using this option makes the transfer insecure.

Example:
.nf
 curl --insecure https://example.com
.fi







|








|
|







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
See also \fI-v, --verbose\fP.
.IP "\-k, \-\-insecure"
(TLS SFTP SCP) By default, every secure connection curl makes is verified to be secure before
the transfer takes place. This option makes curl skip the verification step
and proceed without checking.

When this option is not used for protocols using TLS, curl verifies the
server's TLS certificate before it continues: that the certificate contains
the right name which matches the host name used in the URL and that the
certificate has been signed by a CA certificate present in the cert store.
See this online resource for further details:
.nf
 https://curl.se/docs/sslcerts.html
.fi

For SFTP and SCP, this option makes curl skip the \fIknown_hosts\fP verification.
\fIknown_hosts\fP is a file normally stored in the user's home directory in the
\(dq.ssh" subdirectory, which contains host names and their public keys.

\fBWARNING\fP: using this option makes the transfer insecure.

Example:
.nf
 curl --insecure https://example.com
.fi
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
.fi

There is \fI\fPno verification\fI\fP that the passed in data is actual JSON or that
the syntax is correct.

If you start the data with the letter @, the rest should be a file name to
read the data from, or a single dash (-) if you want curl to read the data
from stdin. Posting data from a file named \&\(aqfoobar' would thus be done with
\fI\-\-json\fP @foobar and to instead read the data from stdin, use \-\-json @-.

If this option is used more than once on the same command line, the additional
data pieces will be concatenated to the previous before sending.

The headers this option sets can be overridden with \-\-header as usual.








|







1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
.fi

There is \fI\fPno verification\fI\fP that the passed in data is actual JSON or that
the syntax is correct.

If you start the data with the letter @, the rest should be a file name to
read the data from, or a single dash (-) if you want curl to read the data
from stdin. Posting data from a file named 'foobar' would thus be done with
\fI\-\-json\fP @foobar and to instead read the data from stdin, use \-\-json @-.

If this option is used more than once on the same command line, the additional
data pieces will be concatenated to the previous before sending.

The headers this option sets can be overridden with \-\-header as usual.

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
 curl --key-type DER --key here https://example.com
.fi

See also \fI--key\fP.
.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:
\&\(aq~/.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 \-\-engine option will be set
as "pkcs11" if none was provided and the \-\-key-type option will be set as
"ENG" if none was provided.

If curl is built against Secure Transport or Schannel then this option is
ignored for TLS protocols (HTTPS, etc). Those backends expect the private key
to be already present in the keychain or PKCS#12 file containing the
certificate.

If this option is used several times, the last one will be used.

Example:
.nf
 curl --cert certificate --key here https://example.com
.fi

See also \fI--key-type\fP and \fI-E, --cert\fP.
.IP "\-\-krb <level>"
(FTP) Enable Kerberos authentication and use. The level must be entered and should
be one of \(aqclear', 'safe', 'confidential', or 'private'. Should you use a
level that is not one of these, \(aqprivate' will instead be used.

If this option is used several times, the last one will be used.

Example:
.nf
 curl --krb clear ftp://example.com/
.fi







|






|
















|
|







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
 curl --key-type DER --key here https://example.com
.fi

See also \fI--key\fP.
.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:
\(aq~/.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 \-\-engine option will be set
as "pkcs11" if none was provided and the \-\-key-type option will be set as
\(dqENG" if none was provided.

If curl is built against Secure Transport or Schannel then this option is
ignored for TLS protocols (HTTPS, etc). Those backends expect the private key
to be already present in the keychain or PKCS#12 file containing the
certificate.

If this option is used several times, the last one will be used.

Example:
.nf
 curl --cert certificate --key here https://example.com
.fi

See also \fI--key-type\fP and \fI-E, --cert\fP.
.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.

Example:
.nf
 curl --krb clear ftp://example.com/
.fi
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
.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 would 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 \(aqk' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
megabytes, while \(aqg' or 'G' makes it gigabytes. The suffixes (k, M, G, T, P)
are 1024 based. For example 1k is 1024. Examples: 200K, 3m and 1G.

The rate limiting logic works on averaging the transfer speed to no more than
the set threshold over a period of multiple seconds.

If you also use the \-\-speed-limit option, that option will take precedence and
might cripple the rate-limiting slightly, to help keeping the speed-limit







|
|







2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
.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 would 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. The suffixes (k, M, G, T, P)
are 1024 based. For example 1k is 1024. Examples: 200K, 3m and 1G.

The rate limiting logic works on averaging the transfer speed to no more than
the set threshold over a period of multiple seconds.

If you also use the \-\-speed-limit option, that option will take precedence and
might cripple the rate-limiting slightly, to help keeping the speed-limit
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099

(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 a UIDL
command instead, so the user may use the email\(aqs unique identifier rather than
its message-id to make the request.

Example:
.nf
 curl --list-only ftp://example.com/dir/
.fi








|







2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106

(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 a UIDL
command instead, so the user may use the email's unique identifier rather than
its message-id to make the request.

Example:
.nf
 curl --list-only ftp://example.com/dir/
.fi

2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248

See also \fI-v, --verbose\fP, \fI--libcurl\fP and \fI--trace\fP.
.IP "\-\-max-filesize <bytes>"
(FTP HTTP MQTT) 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 \(aqk' or 'K' will count the
number as kilobytes, \(aqm' 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.
Example:
.nf







|
|







2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255

See also \fI-v, --verbose\fP, \fI--libcurl\fP and \fI--trace\fP.
.IP "\-\-max-filesize <bytes>"
(FTP HTTP MQTT) 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.
Example:
.nf
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
.IP "\-\-negotiate"
(HTTP) Enables Negotiate (SPNEGO) authentication.

This option requires a library built with GSS-API or SSPI support. Use
\-\-version to see if your curl supports GSS-API/SSPI or SPNEGO.

When using this option, you must also provide a fake \-\-user option to activate
the authentication code properly. Sending a \(aq-u :' is enough as the user name
and password from the \-\-user option are not actually used.

If this option is used several times, only the first one is used.

Example:
.nf
 curl --negotiate -u : https://example.com







|







2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
.IP "\-\-negotiate"
(HTTP) Enables Negotiate (SPNEGO) authentication.

This option requires a library built with GSS-API or SSPI support. Use
\-\-version to see if your curl supports GSS-API/SSPI or SPNEGO.

When using this option, you must also provide a fake \-\-user option to activate
the authentication code properly. Sending a '-u :' is enough as the user name
and password from the \-\-user option are not actually used.

If this option is used several times, only the first one is used.

Example:
.nf
 curl --negotiate -u : https://example.com
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
Example:
.nf
 curl --netrc-optional https://example.com
.fi

See also \fI--netrc-file\fP. This option is mutually exclusive to \fI-n, --netrc\fP.
.IP "\-n, \-\-netrc"
Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user\(aqs 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 and \fIftp(1)\fP for details on the file format. Curl will not
complain if that file does not have the right permissions (it should be
neither world- nor group-readable). The environment variable "HOME" is used
to find the home directory.

A quick and simple example of how to setup a \fI.netrc\fP to allow curl to FTP to
the machine host.domain.com with user name \&\(aqmyself' and password \&'secret'
could look similar to:

.nf
 machine host.domain.com
 login myself
 password secret"
.fi

Example:
.nf
 curl --netrc https://example.com
.fi








|








|





|







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
Example:
.nf
 curl --netrc-optional https://example.com
.fi

See also \fI--netrc-file\fP. This option is mutually exclusive to \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 and \fIftp(1)\fP for details on the file format. Curl will not
complain if that file does not have the right permissions (it should be
neither world- nor group-readable). The environment variable "HOME" is used
to find the home directory.

A quick and 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'
could look similar to:

.nf
 machine host.domain.com
 login myself
 password secret
.fi

Example:
.nf
 curl --netrc https://example.com
.fi

2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
Example:
.nf
 curl --no-progress-meter -o store https://example.com
.fi

See also \fI-v, --verbose\fP and \fI-s, --silent\fP. Added in 7.67.0.
.IP "\-\-no-sessionid"
(TLS) Disable curl\(aqs 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.







|







2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
Example:
.nf
 curl --no-progress-meter -o store https://example.com
.fi

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.
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
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 (\(aqno_proxy' and 'NO_PROXY'). If there's an environment variable
disabling a proxy, you can set the noproxy list to \&"" to override it.

Example:
.nf
 curl --noproxy "www.example" https://example.com
.fi

See also \fI-x, --proxy\fP.







|
|







2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
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 ('no_proxy' and 'NO_PROXY'). If there's an environment variable
disabling a proxy, you can set the noproxy list to "" to override it.

Example:
.nf
 curl --noproxy "www.example" https://example.com
.fi

See also \fI-x, --proxy\fP.
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
.nf
 curl --output-dir "tmp" -O https://example.com
.fi

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 \(aq#' followed by a
number in the <file> specifier. That variable will be replaced with the current
string for the URL being fetched. Like in:

.nf
 curl "http://{one,two}.example.com" \-o "file_#1.txt"
.fi








|







2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
.nf
 curl --output-dir "tmp" -O https://example.com
.fi

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:

.nf
 curl "http://{one,two}.example.com" \-o "file_#1.txt"
.fi

2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
written as

.nf
  curl example.com example.net \-o aa \-o bb
.fi

See also the \-\-create-dirs option to create the local directories
dynamically. Specifying the output as \(aq-' (a single dash) will force the
output to be done to stdout.

To suppress response bodies, you can redirect output to /dev/null:

.nf
  curl example.com \-o /dev/null
.fi







|







2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
written as

.nf
  curl example.com example.net \-o aa \-o bb
.fi

See also the \-\-create-dirs option to create the local directories
dynamically. Specifying the output as '-' (a single dash) will force the
output to be done to stdout.

To suppress response bodies, you can redirect output to /dev/null:

.nf
  curl example.com \-o /dev/null
.fi
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
.fi

See also \fI-x, --proxy\fP and \fI--socks5\fP. 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 \(aq#' 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.

This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.







|







2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
.fi

See also \fI-x, --proxy\fP and \fI--socks5\fP. 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.

This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
 curl --proto-redir =http,https https://example.com
.fi

See also \fI--proto\fP.
.IP "\-\-proto <protocols>"
Tells curl to limit what protocols it may use for transfers. Protocols are
evaluated left to right, are comma separated, and are each a protocol name or
\&\(aqall', 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 \-







|







2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
 curl --proto-redir =http,https https://example.com
.fi

See also \fI--proto\fP.
.IP "\-\-proto <protocols>"
Tells curl to limit what protocols it may use for transfers. Protocols are
evaluated left to right, are comma separated, and are each a protocol name or
\(aqall', 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 \-
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
Unrecognized and unsupported proxy protocols cause an error since 7.52.0.
Prior versions may ignore the protocol and use http:// instead.

If the port number is not specified in the proxy string, it is assumed to be
1080.

This option overrides existing environment variables that set the proxy to
use. If there\(aqs 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 \-\-proxytunnel option.

User and password that might be provided in the proxy string are URL decoded







|
|







3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
Unrecognized and unsupported proxy protocols cause an error since 7.52.0.
Prior versions may ignore the protocol and use http:// instead.

If the port number is not specified in the proxy string, it is assumed to be
1080.

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
\(dq" 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 \-\-proxytunnel option.

User and password that might be provided in the proxy string are URL decoded
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
.fi

See also \fI--pass\fP.
.IP "\-Q, \-\-quote <command>"
(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 \(aq-'.

(FTP only) To make commands be sent after curl has changed the working
directory, just before the file transfer command(s), prefix the command with a
\(aq+'. This is not performed when a directory listing is performed.

You may specify any number of commands.








|







3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
.fi

See also \fI--pass\fP.
.IP "\-Q, \-\-quote <command>"
(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 '-'.

(FTP only) To make commands be sent after curl has changed the working
directory, just before the file transfer command(s), prefix the command with a
\(aq+'. This is not performed when a directory listing is performed.

You may specify any number of commands.

3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
specifies two separate 100-byte ranges(*) (HTTP)
.RE
.IP
(*) = NOTE that this will cause the server to reply with a multipart
response, which will be returned as-is by curl! Parsing or otherwise
transforming this response is the responsibility of the caller.

Only digit characters (0-9) are valid in the \(aqstart' and 'stop' fields of the
\&\(aqstart-stop' range syntax. If a non-digit character is given in the range,
the server\(aqs response will be unspecified, depending on the server's
configuration.

You should also be aware that many HTTP/1.1 servers do not have this feature
enabled, so that when you attempt to get a range, you will instead get the
whole document.

FTP and SFTP range downloads only support the simple \(aqstart-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.

Example:
.nf







|
|
|






|







3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
specifies two separate 100-byte ranges(*) (HTTP)
.RE
.IP
(*) = NOTE that this will cause the server to reply with a multipart
response, which will be returned as-is by curl! Parsing or otherwise
transforming this response is the responsibility of the caller.

Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
\(aqstart-stop' range syntax. If a non-digit character is given in the range,
the server's response will be unspecified, depending on the server's
configuration.

You should also be aware that many HTTP/1.1 servers do not have this feature
enabled, so that when you attempt to get a range, you will instead get the
whole 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.

Example:
.nf
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
option, curl will start the next transfer as fast as possible.

If given several URLs and a transfer completes faster than the allowed rate,
curl will wait until the next transfer is started to maintain the requested
rate. This option has no effect when \-\-parallel is used.

The request rate is provided as "N/U" where N is an integer number and U is a
time unit. Supported units are \(aqs' (second), 'm' (minute), 'h' (hour) and 'd'
/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided,
is number of transfers per hour.

If curl is told to allow 10 requests per minute, it will not start the next
request until 6 seconds have elapsed since the previous transfer was started.

This function uses millisecond resolution. If the allowed frequency is set







|







3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
option, curl will start the next transfer as fast as possible.

If given several URLs and a transfer completes faster than the allowed rate,
curl will wait until the next transfer is started to maintain the requested
rate. This option has no effect when \-\-parallel is used.

The request rate is provided as "N/U" where N is an integer number and U is a
time unit. Supported units are 's' (second), 'm' (minute), 'h' (hour) and 'd'
/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided,
is number of transfers per hour.

If curl is told to allow 10 requests per minute, it will not start the next
request until 6 seconds have elapsed since the previous transfer was started.

This function uses millisecond resolution. If the allowed frequency is set
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
 curl --raw https://example.com
.fi

See also \fI--tr-encoding\fP.
.IP "\-e, \-\-referer <URL>"
(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set
with the \-\-header flag of course. When used with \-\-location you can append
";auto" to the \-\-referer 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 do not set an initial \fI\-e, \-\-referer\fP.

If this option is used several times, the last one will be used.

Examples:
.nf
 curl --referer "https://fake.example" https://example.com







|
|







3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
 curl --raw https://example.com
.fi

See also \fI--tr-encoding\fP.
.IP "\-e, \-\-referer <URL>"
(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set
with the \-\-header flag of course. When used with \-\-location you can append
\(dq;auto" to the \-\-referer 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 do not set an initial \fI\-e, \-\-referer\fP.

If this option is used several times, the last one will be used.

Examples:
.nf
 curl --referer "https://fake.example" https://example.com
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
\fI\-\-output-dir\fP.

If the server specifies a file name and a file with that name already exists
in the destination directory, it will not be overwritten and an error will
occur. If the server does not specify a file name then this option has no
effect.

There\(aqs 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 be
loaded automatically by Windows or some third party software.

Example:







|







3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
\fI\-\-output-dir\fP.

If the server specifies a file name and a file with that name already exists
in the destination directory, it will not be overwritten and an error will
occur. If the server does not 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 be
loaded automatically by Windows or some third party software.

Example:
3611
3612
3613
3614
3615
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
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 \(aq*' as host you can tell curl to resolve any host and specific
port pair to the specified address. Wildcard is resolved last so any \-\-resolve
with a specific host and port will be used first.

The provided address set by this option will be used even if \-\-ipv4 or \-\-ipv6
is set to make curl use another IP version.

By prefixing the host with a \(aq+' 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 \(aq+' prefix was was added in 7.75.0.

This option can be used many times to add many host names to resolve.

Example:
.nf
 curl --resolve example.com:443:127.0.0.1 https://example.com
.fi

See also \fI--connect-to\fP and \fI--alt-svc\fP.
.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\(aqd be
much better off handling your unique problems in shell script. Please read the
example below.

\fBWARNING\fP: 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







|






|











|














|







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
3666
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 \-\-resolve
with a specific host and port will be used first.

The provided address set by this option will be used even if \-\-ipv4 or \-\-ipv6
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.

Example:
.nf
 curl --resolve example.com:443:127.0.0.1 https://example.com
.fi

See also \fI--connect-to\fP and \fI--alt-svc\fP.
.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.

\fBWARNING\fP: 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
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715

See also \fI--retry\fP.
.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 has not reached this given
limit. Notice that if the timer has not 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\(aqs 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.

Example:
.nf
 curl --retry-max-time 30 --retry 10 https://example.com







|







3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722

See also \fI--retry\fP.
.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 has not reached this given
limit. Notice that if the timer has not 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.

Example:
.nf
 curl --retry-max-time 30 --retry 10 https://example.com
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
See also \fI--retry-max-time\fP.
.IP "\-\-sasl-authzid <identity>"
Use this authorization identity (authzid), during SASL PLAIN authentication,
in addition to the authentication identity (authcid) as specified by \fI\-u, \-\-user\fP.

If the option is not 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\(aqs inbox, that the user has been granted access
to, or a shared mailbox for example.

Example:
.nf
 curl --sasl-authzid zid imap://example.com/
.fi








|







3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
See also \fI--retry-max-time\fP.
.IP "\-\-sasl-authzid <identity>"
Use this authorization identity (authzid), during SASL PLAIN authentication,
in addition to the authentication identity (authcid) as specified by \fI\-u, \-\-user\fP.

If the option is not 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.

Example:
.nf
 curl --sasl-authzid zid imap://example.com/
.fi

4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
.nf
 curl --sslv3 https://example.com
.fi

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 is mutually exclusive to \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 \(aq-', it is instead written to stdout.

This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.

If this option is used several times, the last one will be used.

Example:







|







4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
.nf
 curl --sslv3 https://example.com
.fi

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 is mutually exclusive to \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.

This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.

If this option is used several times, the last one will be used.

Example:
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
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 \-\-upload-file 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 \-\-upload-file argument, meaning that you can upload
multiple files to a single URL by using the same URL globbing style supported
in the URL.







|







4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
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
\(dq-" to use stdin in non-blocking mode to allow reading server output while
stdin is being uploaded.

You can specify one \-\-upload-file 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 \-\-upload-file argument, meaning that you can upload
multiple files to a single URL by using the same URL globbing style supported
in the URL.
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
.nf
 curl -u user:secret https://example.com
.fi

See also \fI-n, --netrc\fP and \fI-K, --config\fP.
.IP "\-v, \-\-verbose"
Makes curl verbose during the operation. Useful for debugging and seeing
what\(aqs going on "under the hood". A line starting with '>' means "header data"
sent by curl, \(aq<' means "header data" received by curl that is hidden in
normal cases, and a line starting with \(aq*' means additional info provided by
curl.

If you only want HTTP headers in the output, \-\-include might be the option
you are looking for.

If you think this option still does not give you enough details, consider using
\-\-trace or \-\-trace-ascii instead.







|
|
|







4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
.nf
 curl -u user:secret https://example.com
.fi

See also \fI-n, --netrc\fP and \fI-K, --config\fP.
.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, \-\-include might be the option
you are looking for.

If you think this option still does not give you enough details, consider using
\-\-trace or \-\-trace-ascii instead.
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
.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\(aqs most useful in combination with the \-\-remote-header-name
option.
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
server.
.TP
.B header_json







|







4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
.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.
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
server.
.TP
.B header_json
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
Number of redirects that were followed in the request.
.TP
.B onerror
The rest of the output is only shown if the transfer returned a non-zero error
(Added in 7.75.0)
.TP
.B proxy_ssl_verify_result
The result of the HTTPS proxy\(aqs 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-redirs is met), this variable will show the actual URL a redirect
\fIwould\fP have gone to.
.TP







|







4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
Number of redirects that were followed in the request.
.TP
.B onerror
The rest of the output is only shown if the transfer returned a non-zero error
(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 \-\-location to follow redirects (or when
\-\-max-redirs is met), this variable will show the actual URL a redirect
\fIwould\fP have gone to.
.TP
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
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 should not go through any proxy. If set to an asterisk
\&\(aq*' 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 \-\-proxy 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







|







4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
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 should not go through any proxy. If set to an asterisk
\(aq*' 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 \-\-proxy 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
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
secrets from its connections in that file when invoked to enable you to
analyze the TLS traffic in real time using network analyzing tools such as
Wireshark. This works with the following TLS backends: OpenSSL, libressl,
BoringSSL, GnuTLS, NSS and wolfSSL.
.IP "USERPROFILE <dir>"
On Windows, this variable is used when trying to find the home directory. If
the other, primary, variable are all unset. If set, curl will use the path
"$USERPROFILE\\Application Data".
.IP "XDG_CONFIG_HOME <dir>"
If \fBCURL_HOME\fP is not set, this variable is checked when looking for a
default .curlrc file.
.SH "PROXY PROTOCOL PREFIXES"
The proxy string may be specified with a protocol:// prefix to specify
alternative proxy protocols.








|







4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
secrets from its connections in that file when invoked to enable you to
analyze the TLS traffic in real time using network analyzing tools such as
Wireshark. This works with the following TLS backends: OpenSSL, libressl,
BoringSSL, GnuTLS, NSS and wolfSSL.
.IP "USERPROFILE <dir>"
On Windows, this variable is used when trying to find the home directory. If
the other, primary, variable are all unset. If set, curl will use the path
\(dq$USERPROFILE\\Application Data".
.IP "XDG_CONFIG_HOME <dir>"
If \fBCURL_HOME\fP is not set, this variable is checked when looking for a
default .curlrc file.
.SH "PROXY PROTOCOL PREFIXES"
The proxy string may be specified with a protocol:// prefix to specify
alternative proxy protocols.

5097
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
Too many redirects. When following redirects, curl hit the maximum amount.
.IP 48
Unknown option specified to libcurl. This indicates that you passed a weird
option to curl that was passed on to libcurl and rejected. Read up in the
manual!
.IP 49
Malformed telnet option.
.IP 51
The peer\(aqs SSL certificate or SSH MD5 fingerprint was not OK.
.IP 52
The server did not reply anything, which here is considered an error.
.IP 53
SSL crypto engine not found.
.IP 54
Cannot set SSL crypto engine as default.
.IP 55
Failed sending network data.
.IP 56
Failure in receiving network data.
.IP 58
Problem with the local certificate.
.IP 59
Could not use specified SSL cipher.
.IP 60
Peer certificate cannot be authenticated with known CA certificates.
.IP 61
Unrecognized transfer encoding.
.IP 62
Invalid LDAP URL.
.IP 63
Maximum file size exceeded.
.IP 64
Requested FTP SSL level failed.
.IP 65
Sending the data requires a rewind that failed.
.IP 66







<
<


















<
<







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
5135
Too many redirects. When following redirects, curl hit the maximum amount.
.IP 48
Unknown option specified to libcurl. This indicates that you passed a weird
option to curl that was passed on to libcurl and rejected. Read up in the
manual!
.IP 49
Malformed telnet option.


.IP 52
The server did not reply anything, which here is considered an error.
.IP 53
SSL crypto engine not found.
.IP 54
Cannot set SSL crypto engine as default.
.IP 55
Failed sending network data.
.IP 56
Failure in receiving network data.
.IP 58
Problem with the local certificate.
.IP 59
Could not use specified SSL cipher.
.IP 60
Peer certificate cannot be authenticated with known CA certificates.
.IP 61
Unrecognized transfer encoding.


.IP 63
Maximum file size exceeded.
.IP 64
Requested FTP SSL level failed.
.IP 65
Sending the data requires a rewind that failed.
.IP 66
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
Illegal TFTP operation.
.IP 72
Unknown TFTP transfer ID.
.IP 73
File already exists (TFTP).
.IP 74
No such user (TFTP).
.IP 75
Character conversion failed.
.IP 76
Character conversion functions required.
.IP 77
Problem reading the SSL CA cert (path? access rights?).
.IP 78
The resource referenced in the URL does not exist.
.IP 79
An unspecified error occurred during the SSH session.
.IP 80







<
<
<
<







5146
5147
5148
5149
5150
5151
5152




5153
5154
5155
5156
5157
5158
5159
Illegal TFTP operation.
.IP 72
Unknown TFTP transfer ID.
.IP 73
File already exists (TFTP).
.IP 74
No such user (TFTP).




.IP 77
Problem reading the SSL CA cert (path? access rights?).
.IP 78
The resource referenced in the URL does not exist.
.IP 79
An unspecified error occurred during the SSH session.
.IP 80
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
.IP 96
QUIC connection error. This error may be caused by an SSL library error. QUIC
is the protocol used for HTTP/3 transfers.
.IP XX
More error codes will appear here in future releases. The existing ones
are meant to never change.
.SH BUGS
If you experience any problems with curl, submit an issue in the project\(aqs bug
tracker on GitHub: https://github.com/curl/curl/issues
.SH AUTHORS / CONTRIBUTORS
Daniel Stenberg is the main author, but the whole list of contributors is
found in the separate THANKS file.
.SH WWW
https://curl.se
.SH "SEE ALSO"
.BR ftp (1),
.BR wget (1)







|









5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
.IP 96
QUIC connection error. This error may be caused by an SSL library error. QUIC
is the protocol used for HTTP/3 transfers.
.IP XX
More error codes will appear here in future releases. The existing ones
are meant to never change.
.SH BUGS
If you experience any problems with curl, submit an issue in the project's bug
tracker on GitHub: https://github.com/curl/curl/issues
.SH AUTHORS / CONTRIBUTORS
Daniel Stenberg is the main author, but the whole list of contributors is
found in the separate THANKS file.
.SH WWW
https://curl.se
.SH "SEE ALSO"
.BR ftp (1),
.BR wget (1)
Changes to jni/curl/docs/examples/Makefile.in.
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
	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-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







170
171
172
173
174
175
176
177

178
179
180
181
182
183
184
	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/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
1155
1156
1157
1158
1159
1160
1161

1162
1163
1164
1165
1166
1167
1168
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266

# 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 \







<







1252
1253
1254
1255
1256
1257
1258

1259
1260
1261
1262
1263
1264
1265

# 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 \

  ephiperfifo.c \
  evhiperfifo.c \
  ghiper.c \
  hiperfifo.c \
  href_extractor.c \
  htmltidy.c \
  htmltitle.cpp \
Changes to jni/curl/docs/examples/Makefile.inc.
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134

# 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 \







<







120
121
122
123
124
125
126

127
128
129
130
131
132
133

# 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 \

  ephiperfifo.c \
  evhiperfifo.c \
  ghiper.c \
  hiperfifo.c \
  href_extractor.c \
  htmltidy.c \
  htmltitle.cpp \
Changes to jni/curl/docs/examples/Makefile.m32.
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

ifeq ($(CURL_CC),)
CURL_CC := $(CROSSPREFIX)gcc
endif
ifeq ($(CURL_AR),)
CURL_AR := $(CROSSPREFIX)ar
endif




CC = $(CURL_CC)
CFLAGS = -O3 $(CURL_CFLAG_EXTRAS) -W -Wall
LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE)
RC = $(CROSSPREFIX)windres
RCFLAGS = --include-dir=$(PROOT)/include -O coff

# Set environment var ARCH to your architecture to override autodetection.
ifndef ARCH
ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
ARCH = w64
else
ARCH = w32
endif
endif


ifeq ($(ARCH),w64)
CFLAGS  += -m64
LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS  += -m32
LDFLAGS += -m32
RCFLAGS += -F pe-i386

endif

# Platform-dependent helper tool macros
ifeq ($(findstring /sh,$(SHELL)),/sh)
DEL     = rm -f $1
RMDIR   = rm -fr $1
MKDIR   = mkdir -p $1







>
>
>




|
|










>








>







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

ifeq ($(CURL_CC),)
CURL_CC := $(CROSSPREFIX)gcc
endif
ifeq ($(CURL_AR),)
CURL_AR := $(CROSSPREFIX)ar
endif
ifeq ($(CURL_RC),)
CURL_RC := $(CROSSPREFIX)windres
endif

CC = $(CURL_CC)
CFLAGS = -O3 $(CURL_CFLAG_EXTRAS) -W -Wall
LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE)
RC = $(CURL_RC)
RCFLAGS = --include-dir=$(PROOT)/include -O coff $(CURL_RCFLAG_EXTRAS)

# Set environment var ARCH to your architecture to override autodetection.
ifndef ARCH
ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
ARCH = w64
else
ARCH = w32
endif
endif

ifneq ($(ARCH),custom)
ifeq ($(ARCH),w64)
CFLAGS  += -m64
LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS  += -m32
LDFLAGS += -m32
RCFLAGS += -F pe-i386
endif
endif

# Platform-dependent helper tool macros
ifeq ($(findstring /sh,$(SHELL)),/sh)
DEL     = rm -f $1
RMDIR   = rm -fr $1
MKDIR   = mkdir -p $1
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
  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
endif
ifdef SSH2
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
  ifdef SCHANNEL
    ifndef DYN
      curl_LDADD += -lbcrypt -lcrypt32
















    endif
  endif
endif
ifdef SSL
  ifdef NGHTTP3
    CFLAGS += -DUSE_NGHTTP3
    curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
    ifdef NGTCP2
      CFLAGS += -DUSE_NGTCP2
      curl_LDADD += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
    endif
  endif

  ifndef OPENSSL_INCLUDE
    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
    endif
    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
    endif







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
<
<
<
<
<
<
<
<







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
  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
endif
ifdef SSH2
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
  ifdef SCHANNEL
    ifndef DYN
      curl_LDADD += -lcrypt32
    endif
  endif
endif
ifdef NGHTTP3
  CFLAGS += -DUSE_NGHTTP3
  curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
  ifdef NGTCP2
    CFLAGS += -DUSE_NGTCP2
    curl_LDADD += -L"$(NGTCP2_PATH)/lib"
    ifdef NGTCP2_LIBS
      curl_LDADD += $(NGTCP2_LIBS)
    else
      curl_LDADD += -lngtcp2
      ifdef SSL
        curl_LDADD += -lngtcp2_crypto_openssl
      endif
    endif
  endif
endif
ifdef SSL









  ifndef OPENSSL_INCLUDE
    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
    endif
    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
    endif
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
  curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
endif
ifndef USE_LDAP_NOVELL
ifndef USE_LDAP_OPENLDAP
  curl_LDADD += -lwldap32
endif
endif
curl_LDADD += -lws2_32

# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
include Makefile.inc

check_PROGRAMS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS)))
check_PROGRAMS += ftpuploadresume.exe synctime.exe








|







382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
  curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
endif
ifndef USE_LDAP_NOVELL
ifndef USE_LDAP_OPENLDAP
  curl_LDADD += -lwldap32
endif
endif
curl_LDADD += -lws2_32 -lbcrypt

# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
include Makefile.inc

check_PROGRAMS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS)))
check_PROGRAMS += ftpuploadresume.exe synctime.exe

Deleted jni/curl/docs/examples/curlx.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
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
/*
  curlx.c  Authors: Peter Sylvester, Jean-Paul Merlin

  This is a little program to demonstrate the usage of

  - an SSL initialization callback setting a user key and trustbases
  coming from a pkcs12 file
  - using an ssl application callback to find a URI in the
  certificate presented during ssl session establishment.

*/
/* <DESC>
 * demonstrates use of SSL context callback, requires OpenSSL
 * </DESC>
 */

/*
 * Copyright (c) 2003 - 2022 The OpenEvidence Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, the following disclaimer,
 *    and the original OpenSSL and SSLeay Licences below.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions, the following disclaimer
 *    and the original OpenSSL and SSLeay Licences below in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgments:
 *    "This product includes software developed by the Openevidence Project
 *    for use in the OpenEvidence Toolkit. (http://www.openevidence.org/)"
 *    This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (https://www.openssl.org/)"
 *    This product includes cryptographic software written by Eric Young
 *    (eay@cryptsoft.com).  This product includes software written by Tim
 *    Hudson (tjh@cryptsoft.com)."
 *
 * 4. The names "OpenEvidence Toolkit" and "OpenEvidence Project" must not be
 *    used to endorse or promote products derived from this software without
 *    prior written permission. For written permission, please contact
 *    openevidence-core@openevidence.org.
 *
 * 5. Products derived from this software may not be called "OpenEvidence"
 *    nor may "OpenEvidence" appear in their names without prior written
 *    permission of the OpenEvidence Project.
 *
 * 6. Redistributions of any form whatsoever must retain the following
 *    acknowledgments:
 *    "This product includes software developed by the OpenEvidence Project
 *    for use in the OpenEvidence Toolkit (http://www.openevidence.org/)
 *    This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (https://www.openssl.org/)"
 *    This product includes cryptographic software written by Eric Young
 *    (eay@cryptsoft.com).  This product includes software written by Tim
 *    Hudson (tjh@cryptsoft.com)."
 *
 * THIS SOFTWARE IS PROVIDED BY THE OpenEvidence PROJECT ``AS IS'' AND ANY
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenEvidence PROJECT OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 *
 * This product includes software developed by the OpenSSL Project
 * for use in the OpenSSL Toolkit (https://www.openssl.org/)
 * This product includes cryptographic software written by Eric Young
 * (eay@cryptsoft.com).  This product includes software written by Tim
 * Hudson (tjh@cryptsoft.com).
 *
 * SPDX-License-Identifier: LicenseRef-OpenEvidence
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <openssl/x509v3.h>
#include <openssl/x509_vfy.h>
#include <openssl/crypto.h>
#include <openssl/lhash.h>
#include <openssl/objects.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/x509.h>
#include <openssl/pkcs12.h>
#include <openssl/bio.h>
#include <openssl/ssl.h>

static const char *curlx_usage[]={
  "usage: curlx args\n",
  " -p12 arg         - tia  file ",
  " -envpass arg     - environment variable which content the tia private"
  " key password",
  " -out arg         - output file (response)- default stdout",
  " -in arg          - input file (request)- default stdin",
  " -connect arg     - URL of the server for the connection ex:"
  " www.openevidence.org",
  " -mimetype arg    - MIME type for data in ex : application/timestamp-query"
  " or application/dvcs -default application/timestamp-query",
  " -acceptmime arg  - MIME type acceptable for the response ex : "
  "application/timestamp-response or application/dvcs -default none",
  " -accesstype arg  - an Object identifier in an AIA/SIA method, e.g."
  " AD_DVCS or ad_timestamping",
  NULL
};

/*

./curlx -p12 psy.p12 -envpass XX -in request -verbose -accesstype AD_DVCS
-mimetype application/dvcs -acceptmime application/dvcs -out response

*/

/*
 * We use this ZERO_NULL to avoid picky compiler warnings,
 * when assigning a NULL pointer to a function pointer var.
 */

#define ZERO_NULL 0

/* This is a context that we pass to all callbacks */

typedef struct sslctxparm_st {
  unsigned char *p12file;
  const char *pst;
  PKCS12 *p12;
  EVP_PKEY *pkey;
  X509 *usercert;
  STACK_OF(X509) * ca;
  CURL *curl;
  BIO *errorbio;
  int accesstype;
  int verbose;

} sslctxparm;

/* some helper function. */

static char *ia5string(ASN1_IA5STRING *ia5)
{
  char *tmp;
  if(!ia5 || !ia5->length)
    return NULL;
  tmp = OPENSSL_malloc(ia5->length + 1);
  memcpy(tmp, ia5->data, ia5->length);
  tmp[ia5->length] = 0;
  return tmp;
}

/* A convenience routine to get an access URI. */
static unsigned char *my_get_ext(X509 *cert, const int type,
                                 int extensiontype)
{
  int i;
  STACK_OF(ACCESS_DESCRIPTION) * accessinfo;
  accessinfo =  X509_get_ext_d2i(cert, extensiontype, NULL, NULL);

  if(!sk_ACCESS_DESCRIPTION_num(accessinfo))
    return NULL;
  for(i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
    ACCESS_DESCRIPTION * ad = sk_ACCESS_DESCRIPTION_value(accessinfo, i);
    if(OBJ_obj2nid(ad->method) == type) {
      if(ad->location->type == GEN_URI) {
        return ia5string(ad->location->d.ia5);
      }
      return NULL;
    }
  }
  return NULL;
}

/* This is an application verification call back, it does not
   perform any addition verification but tries to find a URL
   in the presented certificate. If found, this will become
   the URL to be used in the POST.
*/

static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
{
  sslctxparm * p = (sslctxparm *) arg;
  int ok;
#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
  X509 *cert = X509_STORE_CTX_get0_cert(ctx);
#else
  X509 *cert = ctx->cert;
#endif

  if(p->verbose > 2)
    BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");

  ok = X509_verify_cert(ctx);
  if(ok && cert) {
    unsigned char *accessinfo;
    if(p->verbose > 1)
      X509_print_ex(p->errorbio, cert, 0, 0);

    accessinfo = my_get_ext(cert, p->accesstype, NID_sinfo_access);
    if(accessinfo) {
      if(p->verbose)
        BIO_printf(p->errorbio, "Setting URL from SIA to: %s\n", accessinfo);

      curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
    }
    else if(accessinfo = my_get_ext(cert, p->accesstype,
                                    NID_info_access)) {
      if(p->verbose)
        BIO_printf(p->errorbio, "Setting URL from AIA to: %s\n", accessinfo);

      curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
    }
  }
  if(p->verbose > 2)
    BIO_printf(p->errorbio, "leaving ssl_app_verify_callback with %d\n", ok);

  return ok;
}


/* The SSL initialization callback. The callback sets:
   - a private key and certificate
   - a trusted ca certificate
   - a preferred cipherlist
   - an application verification callback (the function above)
*/

static CURLcode sslctxfun(CURL *curl, void *sslctx, void *parm)
{
  sslctxparm *p = (sslctxparm *) parm;
  SSL_CTX *ctx = (SSL_CTX *) sslctx;

  if(!SSL_CTX_use_certificate(ctx, p->usercert)) {
    BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n");
    goto err;
  }
  if(!SSL_CTX_use_PrivateKey(ctx, p->pkey)) {
    BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n");
    goto err;
  }

  if(!SSL_CTX_check_private_key(ctx)) {
    BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n");
    goto err;
  }

  SSL_CTX_set_quiet_shutdown(ctx, 1);
  SSL_CTX_set_cipher_list(ctx, "RC4-MD5");
  SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);

  X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx),
                      sk_X509_value(p->ca, sk_X509_num(p->ca)-1));

  SSL_CTX_set_verify_depth(ctx, 2);
  SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, ZERO_NULL);
  SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm);

  return CURLE_OK;
  err:
  ERR_print_errors(p->errorbio);
  return CURLE_SSL_CERTPROBLEM;

}

int main(int argc, char **argv)
{
  BIO* in = NULL;
  BIO* out = NULL;

  char *outfile = NULL;
  char *infile = NULL;

  int tabLength = 100;
  char *binaryptr;
  char *mimetype = NULL;
  char *mimetypeaccept = NULL;
  char *contenttype;
  const char **pp;
  unsigned char *hostporturl = NULL;
  BIO *p12bio;
  char **args = argv + 1;
  unsigned char *serverurl;
  sslctxparm p;
  char *response;

  CURLcode res;
  struct curl_slist *headers = NULL;
  int badarg = 0;

  binaryptr = malloc(tabLength);

  memset(&p, '\0', sizeof(p));
  p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);

  curl_global_init(CURL_GLOBAL_DEFAULT);

  /* we need some more for the P12 decoding */

  OpenSSL_add_all_ciphers();
  OpenSSL_add_all_digests();
  ERR_load_crypto_strings();

  while(*args && *args[0] == '-') {
    if(!strcmp (*args, "-in")) {
      if(args[1]) {
        infile = *(++args);
      }
      else
        badarg = 1;
    }
    else if(!strcmp (*args, "-out")) {
      if(args[1]) {
        outfile = *(++args);
      }
      else
        badarg = 1;
    }
    else if(!strcmp (*args, "-p12")) {
      if(args[1]) {
        p.p12file = *(++args);
      }
      else
        badarg = 1;
    }
    else if(strcmp(*args, "-envpass") == 0) {
      if(args[1]) {
        p.pst = getenv(*(++args));
      }
      else
        badarg = 1;
    }
    else if(strcmp(*args, "-connect") == 0) {
      if(args[1]) {
        hostporturl = *(++args);
      }
      else
        badarg = 1;
    }
    else if(strcmp(*args, "-mimetype") == 0) {
      if(args[1]) {
        mimetype = *(++args);
      }
      else
        badarg = 1;
    }
    else if(strcmp(*args, "-acceptmime") == 0) {
      if(args[1]) {
        mimetypeaccept = *(++args);
      }
      else
        badarg = 1;
    }
    else if(strcmp(*args, "-accesstype") == 0) {
      if(args[1]) {
        p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0));
        if(p.accesstype == 0)
          badarg = 1;
      }
      else
        badarg = 1;
    }
    else if(strcmp(*args, "-verbose") == 0) {
      p.verbose++;
    }
    else
      badarg = 1;
    args++;
  }

  if(!mimetype || !mimetypeaccept || !p.p12file)
    badarg = 1;

  if(badarg) {
    for(pp = curlx_usage; (*pp != NULL); pp++)
      BIO_printf(p.errorbio, "%s\n", *pp);
    BIO_printf(p.errorbio, "\n");
    goto err;
  }

  /* set input */

  in = BIO_new(BIO_s_file());
  if(!in) {
    BIO_printf(p.errorbio, "Error setting input bio\n");
    goto err;
  }
  else if(!infile)
    BIO_set_fp(in, stdin, BIO_NOCLOSE|BIO_FP_TEXT);
  else if(BIO_read_filename(in, infile) <= 0) {
    BIO_printf(p.errorbio, "Error opening input file %s\n", infile);
    BIO_free(in);
    goto err;
  }

  /* set output  */

  out = BIO_new(BIO_s_file());
  if(!out) {
    BIO_printf(p.errorbio, "Error setting output bio.\n");
    goto err;
  }
  else if(!outfile)
    BIO_set_fp(out, stdout, BIO_NOCLOSE|BIO_FP_TEXT);
  else if(BIO_write_filename(out, outfile) <= 0) {
    BIO_printf(p.errorbio, "Error opening output file %s\n", outfile);
    BIO_free(out);
    goto err;
  }


  p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);

  p.curl = curl_easy_init();
  if(!p.curl) {
    BIO_printf(p.errorbio, "Cannot init curl lib\n");
    goto err;
  }

  p12bio = BIO_new_file(p.p12file, "rb");
  if(!p12bio) {
    BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file);
    goto err;
  }
  p.p12 = d2i_PKCS12_bio(p12bio, NULL);
  if(!p.p12) {
    BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file);
    goto err;
  }

  p.ca = NULL;
  if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
    BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
    goto err;
  }

  if(sk_X509_num(p.ca) <= 0) {
    BIO_printf(p.errorbio, "No trustworthy CA given.%s\n", p.p12file);
    goto err;
  }

  if(p.verbose > 1)
    X509_print_ex(p.errorbio, p.usercert, 0, 0);

  /* determine URL to go */

  if(hostporturl) {
    size_t len = strlen(hostporturl) + 9;
    serverurl = malloc(len);
    snprintf(serverurl, len, "https://%s", hostporturl);
  }
  else if(p.accesstype) { /* see whether we can find an AIA or SIA for a
                             given access type */
    serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access);
    if(!serverurl) {
      int j = 0;
      BIO_printf(p.errorbio, "no service URL in user cert "
                 "searching in others certificates\n");
      for(j = 0; j<sk_X509_num(p.ca); j++) {
        serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
                               NID_info_access);
        if(serverurl)
          break;
        serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
                               NID_sinfo_access);
        if(serverurl)
          break;
      }
    }
  }

  if(!serverurl) {
    BIO_printf(p.errorbio, "no service URL in certificates,"
               " check '-accesstype (AD_DVCS | ad_timestamping)'"
               " or use '-connect'\n");
    goto err;
  }

  if(p.verbose)
    BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);

  curl_easy_setopt(p.curl, CURLOPT_URL, serverurl);

  /* Now specify the POST binary data */

  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);

  /* pass our list of custom made headers */

  contenttype = malloc(15 + strlen(mimetype));
  snprintf(contenttype, 15 + strlen(mimetype), "Content-type: %s", mimetype);
  headers = curl_slist_append(headers, contenttype);
  curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);

  if(p.verbose)
    BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);

  {
    FILE *outfp;
    BIO_get_fp(out, &outfp);
    curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
  }

  res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun);

  if(res != CURLE_OK)
    BIO_printf(p.errorbio, "%d %s=%d %d\n", __LINE__,
               "CURLOPT_SSL_CTX_FUNCTION", CURLOPT_SSL_CTX_FUNCTION, res);

  curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);

  {
    char *ptr;
    int lu; int i = 0;
    while((lu = BIO_read(in, &binaryptr[i], tabLength-i)) >0) {
      i += lu;
      if(i == tabLength) {
        tabLength += 100;
        ptr = realloc(binaryptr, tabLength); /* should be more careful */
        if(!ptr) {
          /* out of memory */
          BIO_printf(p.errorbio, "out of memory (realloc returned NULL)\n");
          goto fail;
        }
        binaryptr = ptr;
        ptr = NULL;
      }
    }
    tabLength = i;
  }
  /* Now specify the POST binary data */

  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);


  /* Perform the request, res will get the return code */

  BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
             res = curl_easy_perform(p.curl));
  {
    curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
    if(mimetypeaccept && p.verbose) {
      if(!strcmp(mimetypeaccept, response))
        BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
                   response);
      else
        BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
                   "mime type, it is %s instead of %s\n",
                   response, mimetypeaccept);
    }
  }

  /*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/

/* free the header list*/
fail:
  curl_slist_free_all(headers);

  /* always cleanup */
  curl_easy_cleanup(p.curl);

  BIO_free(in);
  BIO_free(out);
  return (EXIT_SUCCESS);

  err: BIO_printf(p.errorbio, "error");
  exit(1);
}
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<










































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Changes to jni/curl/docs/examples/ftpuploadresume.c.
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  }

  curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);

  curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);

  if(timeout)
    curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);

  curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
  curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);

  curl_easy_setopt(curlhandle, CURLOPT_WRITEFUNCTION, discardfunc);

  curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);







|







82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  }

  curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);

  curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);

  if(timeout)
    curl_easy_setopt(curlhandle, CURLOPT_SERVER_RESPONSE_TIMEOUT, timeout);

  curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
  curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);

  curl_easy_setopt(curlhandle, CURLOPT_WRITEFUNCTION, discardfunc);

  curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
Changes to jni/curl/docs/libcurl/Makefile.in.
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







136
137
138
139
140
141
142
143

144
145
146
147
148
149
150
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
605
606
607
608
609
610
611

612
613
614
615
616
617
618
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/docs/libcurl/curl_easy_cleanup.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_duphandle.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_escape.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43




44
45
46
47
48
49
50
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

char *curl_easy_escape(CURL *curl, const char *string, int length);
.fi
.SH DESCRIPTION
This function converts the given input \fIstring\fP to a URL encoded string
and returns that as a new allocated string. All input characters that are not
a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped"
version (%NN where NN is a two-digit hexadecimal number).

If \fIlength\fP is set to 0 (zero), \fIcurl_easy_escape(3)\fP uses strlen() on
the input \fIstring\fP to find out the size. This function does not accept
input strings longer than \fBCURL_MAX_INPUT_LENGTH\fP (8 MB).





You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH ENCODING
libcurl is typically not aware of, nor does it care about, character
encodings. \fIcurl_easy_escape(3)\fP encodes the data byte-by-byte into the
URL encoded version without knowledge or care for what particular character
encoding the application or the receiving server may assume that the data







|


















>
>
>
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "July 08, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

char *curl_easy_escape(CURL *curl, const char *string, int length);
.fi
.SH DESCRIPTION
This function converts the given input \fIstring\fP to a URL encoded string
and returns that as a new allocated string. All input characters that are not
a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped"
version (%NN where NN is a two-digit hexadecimal number).

If \fIlength\fP is set to 0 (zero), \fIcurl_easy_escape(3)\fP uses strlen() on
the input \fIstring\fP to find out the size. This function does not accept
input strings longer than \fBCURL_MAX_INPUT_LENGTH\fP (8 MB).

Since 7.82.0, the \fBcurl\fP parameter is ignored. Prior to that there was
per-handle character conversion support for some very old operating systems
such as TPF, but it was otherwise ignored.

You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH ENCODING
libcurl is typically not aware of, nor does it care about, character
encodings. \fIcurl_easy_escape(3)\fP encodes the data byte-by-byte into the
URL encoded version without knowledge or care for what particular character
encoding the application or the receiving server may assume that the data
Changes to jni/curl/docs/libcurl/curl_easy_getinfo.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_header.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_header 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_header - get an HTTP header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_header 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_header - get an HTTP header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_init.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_nextheader.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_nextheader 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_nextheader - get the next HTTP header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_nextheader 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_nextheader - get the next HTTP header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_option_by_id.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_id 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_option_by_id - find an easy setopt option by id
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_id 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_name 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_option_by_name - find an easy setopt option by name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_option_by_name 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_option_next 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_option_next - iterate over easy setopt options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_option_next 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "June 15, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_pause - pause and unpause a connection
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "June 15, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_recv.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.nf
#include <curl/easy.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.nf
#include <curl/easy.h>

Changes to jni/curl/docs/libcurl/curl_easy_reset.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_send.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.nf
#include <curl/easy.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.nf
#include <curl/easy.h>

Changes to jni/curl/docs/libcurl/curl_easy_setopt.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "July 04, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

164
165
166
167
168
169
170


171
172



173
174
175
176
177
178
179
180
Keep sending on HTTP >= 300 errors. \fICURLOPT_KEEP_SENDING_ON_ERROR(3)\fP
.SH NETWORK OPTIONS
.IP CURLOPT_URL
URL to work on. See \fICURLOPT_URL(3)\fP
.IP CURLOPT_PATH_AS_IS
Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS(3)\fP
.IP CURLOPT_PROTOCOLS


Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
.IP CURLOPT_REDIR_PROTOCOLS



Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP
.IP CURLOPT_DEFAULT_PROTOCOL
Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP
.IP CURLOPT_PROXY
Proxy to use. See \fICURLOPT_PROXY(3)\fP
.IP CURLOPT_PRE_PROXY
Socks proxy to use. See \fICURLOPT_PRE_PROXY(3)\fP
.IP CURLOPT_PROXYPORT







>
>
|

>
>
>
|







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
Keep sending on HTTP >= 300 errors. \fICURLOPT_KEEP_SENDING_ON_ERROR(3)\fP
.SH NETWORK OPTIONS
.IP CURLOPT_URL
URL to work on. See \fICURLOPT_URL(3)\fP
.IP CURLOPT_PATH_AS_IS
Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS(3)\fP
.IP CURLOPT_PROTOCOLS
\fBDeprecated option\fP Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
.IP CURLOPT_PROTOCOLS_STR
Allowed protocols. See \fICURLOPT_PROTOCOLS_STR(3)\fP
.IP CURLOPT_REDIR_PROTOCOLS
\fBDeprecated option\fP Protocols to allow redirects to. See
\fICURLOPT_REDIR_PROTOCOLS(3)\fP
.IP CURLOPT_REDIR_PROTOCOLS_STR
Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP
.IP CURLOPT_DEFAULT_PROTOCOL
Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP
.IP CURLOPT_PROXY
Proxy to use. See \fICURLOPT_PROXY(3)\fP
.IP CURLOPT_PRE_PROXY
Socks proxy to use. See \fICURLOPT_PRE_PROXY(3)\fP
.IP CURLOPT_PROXYPORT
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
Use EPTR. See \fICURLOPT_FTP_USE_EPRT(3)\fP
.IP CURLOPT_FTP_USE_EPSV
Use EPSV. See \fICURLOPT_FTP_USE_EPSV(3)\fP
.IP CURLOPT_FTP_USE_PRET
Use PRET. See \fICURLOPT_FTP_USE_PRET(3)\fP
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
Create missing directories on the remote server. See \fICURLOPT_FTP_CREATE_MISSING_DIRS(3)\fP
.IP CURLOPT_FTP_RESPONSE_TIMEOUT
Timeout for FTP responses. See \fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP
.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
Alternative to USER. See \fICURLOPT_FTP_ALTERNATIVE_TO_USER(3)\fP
.IP CURLOPT_FTP_SKIP_PASV_IP
Ignore the IP address in the PASV response. See \fICURLOPT_FTP_SKIP_PASV_IP(3)\fP
.IP CURLOPT_FTPSSLAUTH
Control how to do TLS. See \fICURLOPT_FTPSSLAUTH(3)\fP
.IP CURLOPT_FTP_SSL_CCC







|
|







406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
Use EPTR. See \fICURLOPT_FTP_USE_EPRT(3)\fP
.IP CURLOPT_FTP_USE_EPSV
Use EPSV. See \fICURLOPT_FTP_USE_EPSV(3)\fP
.IP CURLOPT_FTP_USE_PRET
Use PRET. See \fICURLOPT_FTP_USE_PRET(3)\fP
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
Create missing directories on the remote server. See \fICURLOPT_FTP_CREATE_MISSING_DIRS(3)\fP
.IP CURLOPT_SERVER_RESPONSE_TIMEOUT
Timeout for server responses. See \fICURLOPT_SERVER_RESPONSE_TIMEOUT(3)\fP
.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
Alternative to USER. See \fICURLOPT_FTP_ALTERNATIVE_TO_USER(3)\fP
.IP CURLOPT_FTP_SKIP_PASV_IP
Ignore the IP address in the PASV response. See \fICURLOPT_FTP_SKIP_PASV_IP(3)\fP
.IP CURLOPT_FTPSSLAUTH
Control how to do TLS. See \fICURLOPT_FTPSSLAUTH(3)\fP
.IP CURLOPT_FTP_SSL_CCC
Changes to jni/curl/docs/libcurl/curl_easy_strerror.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_easy_unescape.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "July 08, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

44
45
46
47
48
49
50




51
52
53
54
55
56
57

If \fBoutlength\fP is non-NULL, the function will write the length of the
returned string in the integer it points to. This allows an escaped string
containing %00 to still get used properly after unescaping. Since this is a
pointer to an \fIint\fP type, it can only return a value up to INT_MAX so no
longer string can be unescaped if the string length is returned in this
parameter.





You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  int decodelen;







>
>
>
>







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

If \fBoutlength\fP is non-NULL, the function will write the length of the
returned string in the integer it points to. This allows an escaped string
containing %00 to still get used properly after unescaping. Since this is a
pointer to an \fIint\fP type, it can only return a value up to INT_MAX so no
longer string can be unescaped if the string length is returned in this
parameter.

Since 7.82.0, the \fBcurl\fP parameter is ignored. Prior to that there was
per-handle character conversion support for some very old operating systems
such as TPF, but it was otherwise ignored.

You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  int decodelen;
Changes to jni/curl/docs/libcurl/curl_easy_upkeep.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_upkeep 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_easy_upkeep - Perform any connection upkeep checks.
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_upkeep 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_easy_upkeep - Perform any connection upkeep checks.
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_escape.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_escape 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_escape 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_formadd.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_formfree.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_formget.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_formget 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_formget 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_free 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_free 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_getdate.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_getenv.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_global_cleanup.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "June 15, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "June 15, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_global_init.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "June 15, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialization
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "June 15, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialization
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_global_init_mem.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialization with memory callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialization with memory callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_global_sslset.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "June 15, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "June 15, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_addpart.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_data.3.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37



38
39

40
41
42
43
44
45
46
47
48
49
50
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_mime_data(curl_mimepart *part, const char *data,
                        size_t datasize);
.fi
.SH DESCRIPTION
\fIcurl_mime_data(3)\fP sets a mime part's body content from memory data.




\fIdata\fP points to the data bytes: those are copied to the part and their
storage may safely be reused after call.

\fIdatasize\fP is the number of data bytes: it can be set to
\fICURL_ZERO_TERMINATED\fP to indicate \fIdata\fP is a null-terminated
character string.
\fIpart\fP is the part's to assign contents to.

Setting a part's contents multiple times is valid: only the value set by the
last call is retained. It is possible to unassign part's contents by setting
\fIdata\fP to NULL.

Setting large data is memory consuming: one might consider using
\fIcurl_mime_data_cb(3)\fP in such a case.







|













>
>
>
|
|
>
|


<







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

47
48
49
50
51
52
53
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "June 28, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_mime_data(curl_mimepart *part, const char *data,
                        size_t datasize);
.fi
.SH DESCRIPTION
\fIcurl_mime_data(3)\fP sets a mime part's body content from memory data.

\fIpart\fP is the mime part to assign contents to, created with
\fIcurl_mime_addpart(3)\fP.

\fIdata\fP points to the data that gets copied by this function. The storage
may safely be reused after the call.

\fIdatasize\fP is the number of bytes \fIdata\fP points to. It can be set to
\fICURL_ZERO_TERMINATED\fP to indicate \fIdata\fP is a null-terminated
character string.


Setting a part's contents multiple times is valid: only the value set by the
last call is retained. It is possible to unassign part's contents by setting
\fIdata\fP to NULL.

Setting large data is memory consuming: one might consider using
\fIcurl_mime_data_cb(3)\fP in such a case.
Changes to jni/curl/docs/libcurl/curl_mime_data_cb.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_encoder.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_filedata.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_filename.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_free.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_headers.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_init.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_name.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_subparts.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mime_type.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_mprintf.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_printf 3 "May 17, 2022" "libcurl 7.84.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
.nf







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_printf 3 "May 17, 2022" "libcurl 7.85.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
.nf
Changes to jni/curl/docs/libcurl/curl_multi_add_handle.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_assign.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_cleanup.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_fdset.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_init.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_perform.3.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
.fi
.SH DESCRIPTION
This function performs transfers on all the added handles that need attention
in an non-blocking fashion. The easy handles have previously been added to the
multi handle with \fIcurl_multi_add_handle(3)\fP.

When an application has found out there's data available for the multi_handle
or a timeout has elapsed, the application should call this function to
read/write whatever there is to read or write right now etc.
\fIcurl_multi_perform(3)\fP returns as soon as the reads/writes are done. This
function does not require that there actually is any data available for







|


|








|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "August 15, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from easy handles
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
.fi
.SH DESCRIPTION
This function performs transfers on all the added handles that need attention
in a non-blocking fashion. The easy handles have previously been added to the
multi handle with \fIcurl_multi_add_handle(3)\fP.

When an application has found out there's data available for the multi_handle
or a timeout has elapsed, the application should call this function to
read/write whatever there is to read or write right now etc.
\fIcurl_multi_perform(3)\fP returns as soon as the reads/writes are done. This
function does not require that there actually is any data available for
Changes to jni/curl/docs/libcurl/curl_multi_poll.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_setopt.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_socket.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "May 17, 2022" "libcurl 7.84.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,







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "May 17, 2022" "libcurl 7.84.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 ");"







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "July 14, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
to CURL_SOCKET_TIMEOUT, or call \fIcurl_multi_perform(3)\fP if you are using
the simpler and older multi interface approach.

The timeout value returned in the long \fBtimeout\fP points to, is in number
of milliseconds at this moment. If 0, it means you should proceed immediately
without waiting for anything. If it returns -1, there's no timeout at all set.

An application that uses the multi_socket API SHOULD NOT use this function, but
SHOULD instead use \fIcurl_multi_setopt(3)\fP and its
\fPCURLMOPT_TIMERFUNCTION\fP option for proper and desired behavior.

Note: if libcurl returns a -1 timeout here, it just means that libcurl
currently has no stored timeout value. You must not wait too long (more than a
few seconds perhaps) before you call curl_multi_perform() again.
.SH EXAMPLE
.nf
struct timeval timeout;







|
|
|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
to CURL_SOCKET_TIMEOUT, or call \fIcurl_multi_perform(3)\fP if you are using
the simpler and older multi interface approach.

The timeout value returned in the long \fBtimeout\fP points to, is in number
of milliseconds at this moment. If 0, it means you should proceed immediately
without waiting for anything. If it returns -1, there's no timeout at all set.

An application that uses the multi_socket API SHOULD NOT use this function,
but SHOULD instead use the \fICURLMOPT_TIMERFUNCTION(3)\fP option for proper
and desired behavior.

Note: if libcurl returns a -1 timeout here, it just means that libcurl
currently has no stored timeout value. You must not wait too long (more than a
few seconds perhaps) before you call curl_multi_perform() again.
.SH EXAMPLE
.nf
struct timeval timeout;
66
67
68
69
70
71
72
73
74
75


76
77
78
79
80
81
82
timeout.tv_sec = timeo / 1000;
timeout.tv_usec = (timeo % 1000) * 1000;

/* wait for activities no longer than the set timeout */
select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
.fi
.SH TYPICAL USAGE
Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. You
figure out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP or
by a previous call to \fIcurl_multi_socket(3)\fP.


.SH AVAILABILITY
This function was added in libcurl 7.15.4.
.SH RETURN VALUE
The standard CURLMcode for multi interface error codes.
.SH "SEE ALSO"
.BR curl_multi_fdset "(3), " curl_multi_info_read "(3), "
.BR curl_multi_socket "(3), " curl_multi_setopt "(3) "







|
|
|
>
>







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
timeout.tv_sec = timeo / 1000;
timeout.tv_usec = (timeo % 1000) * 1000;

/* wait for activities no longer than the set timeout */
select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
.fi
.SH TYPICAL USAGE
Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. Figure
out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP.

When there is activity or timeout, call \fIcurl_multi_perform(3)\fP and then
loop - until all transfers are complete.
.SH AVAILABILITY
This function was added in libcurl 7.15.4.
.SH RETURN VALUE
The standard CURLMcode for multi interface error codes.
.SH "SEE ALSO"
.BR curl_multi_fdset "(3), " curl_multi_info_read "(3), "
.BR curl_multi_socket "(3), " curl_multi_setopt "(3) "
Changes to jni/curl/docs/libcurl/curl_multi_wait.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_wakeup 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_multi_wakeup 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_share_cleanup.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_share_init.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_share_setopt.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_share_strerror.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "May 17, 2022" "libcurl 7.84.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 ");"







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_slist_free_all.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_strequal.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_unescape.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_url.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_url_cleanup.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_url_dup.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_url_get.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_url_set.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "June 12, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "June 12, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_url_strerror.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_strerror 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_url_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_url_strerror(CURLUcode " errornum ");"







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_url_strerror 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_url_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_url_strerror(CURLUcode " errornum ");"
Changes to jni/curl/docs/libcurl/curl_version.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_version 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH curl_version 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_version_info.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "June 13, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
curl_version_info - returns runtime libcurl version info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "June 13, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
curl_version_info - returns runtime libcurl version info
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/libcurl-easy.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl 3 "May 17, 2022" "libcurl 7.84.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.







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "May 17, 2022" "libcurl 7.84.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,







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "May 17, 2022" "libcurl 7.85.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,
Changes to jni/curl/docs/libcurl/libcurl-errors.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "May 17, 2022" "libcurl 7.84.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"







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "June 29, 2022" "libcurl 7.85.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"
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
.IP "CURLE_PARTIAL_FILE (18)"
A file transfer was shorter or larger than expected. This happens when the
server first reports an expected transfer size, and then delivers data that
does not match the previously given size.
.IP "CURLE_FTP_COULDNT_RETR_FILE (19)"
This was either a weird reply to a 'RETR' command or a zero byte transfer
complete.


.IP "CURLE_QUOTE_ERROR (21)"
When sending custom "QUOTE" commands to the remote server, one of the commands
returned an error code that was 400 or higher (for FTP) or otherwise
indicated unsuccessful completion of the command.
.IP "CURLE_HTTP_RETURNED_ERROR (22)"
This is returned if \fICURLOPT_FAILONERROR(3)\fP is set TRUE and the HTTP
server returns an error code that is >= 400.
.IP "CURLE_WRITE_ERROR (23)"
An error occurred when writing received data to a local file, or an error was
returned to libcurl from a write callback.


.IP "CURLE_UPLOAD_FAILED (25)"
Failed starting the upload. For FTP, the server typically denied the STOR
command. The error buffer usually contains the server's explanation for this.
.IP "CURLE_READ_ERROR (26)"
There was a problem reading a local file or an error returned by the read
callback.
.IP "CURLE_OUT_OF_MEMORY (27)"
A memory allocation request failed. This is serious badness and
things are severely screwed up if this ever occurs.
.IP "CURLE_OPERATION_TIMEDOUT (28)"
Operation timeout. The specified time-out period was reached according to the
conditions.


.IP "CURLE_FTP_PORT_FAILED (30)"
The FTP PORT command returned error. This mostly happens when you have not
specified a good enough address for libcurl to use. See
\fICURLOPT_FTPPORT(3)\fP.
.IP "CURLE_FTP_COULDNT_USE_REST (31)"
The FTP REST command returned error. This should never happen if the server is
sane.


.IP "CURLE_RANGE_ERROR (33)"
The server does not support or accept range requests.
.IP "CURLE_HTTP_POST_ERROR (34)"
This is an odd error that mainly occurs due to internal confusion.
.IP "CURLE_SSL_CONNECT_ERROR (35)"
A problem occurred somewhere in the SSL/TLS handshake. You really want the
error buffer and read the message there as it pinpoints the problem slightly
more. Could be certificates (file formats, paths, permissions), passwords, and
others.
.IP "CURLE_BAD_DOWNLOAD_RESUME (36)"
The download could not be resumed because the specified offset was out of the
file boundary.
.IP "CURLE_FILE_COULDNT_READ_FILE (37)"
A file given with FILE:// could not be opened. Most likely because the file
path does not identify an existing file. Did you check file permissions?
.IP "CURLE_LDAP_CANNOT_BIND (38)"
LDAP cannot bind. LDAP bind operation failed.
.IP "CURLE_LDAP_SEARCH_FAILED (39)"
LDAP search failed.


.IP "CURLE_FUNCTION_NOT_FOUND (41)"
Function not found. A required zlib function was not found.
.IP "CURLE_ABORTED_BY_CALLBACK (42)"
Aborted by callback. A callback returned "abort" to libcurl.
.IP "CURLE_BAD_FUNCTION_ARGUMENT (43)"
A function was called with a bad parameter.


.IP "CURLE_INTERFACE_FAILED (45)"
Interface error. A specified outgoing interface could not be used. Set which
interface to use for outgoing connections' source IP address with
\fICURLOPT_INTERFACE(3)\fP.


.IP "CURLE_TOO_MANY_REDIRECTS (47)"
Too many redirects. When following redirects, libcurl hit the maximum amount.
Set your limit with \fICURLOPT_MAXREDIRS(3)\fP.
.IP "CURLE_UNKNOWN_OPTION (48)"
An option passed to libcurl is not recognized/known. Refer to the appropriate
documentation. This is most likely a problem in the program that uses
libcurl. The error buffer might contain more specific information about which
exact option it concerns.
.IP "CURLE_SETOPT_OPTION_SYNTAX (49)"
An option passed in to a setopt was wrongly formatted. See error message for
details about what option.


.IP "CURLE_GOT_NOTHING (52)"
Nothing was returned from the server, and under the circumstances, getting
nothing is considered an error.
.IP "CURLE_SSL_ENGINE_NOTFOUND (53)"
The specified crypto engine was not found.
.IP "CURLE_SSL_ENGINE_SETFAILED (54)"
Failed setting the selected SSL crypto engine as default.
.IP "CURLE_SEND_ERROR (55)"
Failed sending network data.
.IP "CURLE_RECV_ERROR (56)"
Failure with receiving network data.


.IP "CURLE_SSL_CERTPROBLEM (58)"
problem with the local client certificate.
.IP "CURLE_SSL_CIPHER (59)"
Couldn't use specified cipher.
.IP "CURLE_PEER_FAILED_VERIFICATION (60)"
The remote server's SSL certificate or SSH md5 fingerprint was deemed not OK.
This error code has been unified with CURLE_SSL_CACERT since 7.62.0. Its
previous value was 51.
.IP "CURLE_BAD_CONTENT_ENCODING (61)"
Unrecognized transfer encoding.
.IP "CURLE_LDAP_INVALID_URL (62)"
This error code is deprecated since 7.82.0 and cannot be returned anymore.
.IP "CURLE_FILESIZE_EXCEEDED (63)"
Maximum file size exceeded.
.IP "CURLE_USE_SSL_FAILED (64)"
Requested FTP SSL level failed.
.IP "CURLE_SEND_FAIL_REWIND (65)"
When doing a send operation curl had to rewind the data to retransmit, but the
rewinding operation failed.







>
>










>
>












>
>







>
>



















>
>






>
>




>
>











>
>











>
>










|
|







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
.IP "CURLE_PARTIAL_FILE (18)"
A file transfer was shorter or larger than expected. This happens when the
server first reports an expected transfer size, and then delivers data that
does not match the previously given size.
.IP "CURLE_FTP_COULDNT_RETR_FILE (19)"
This was either a weird reply to a 'RETR' command or a zero byte transfer
complete.
.IP "Obsolete error (20)"
Not used in modern versions.
.IP "CURLE_QUOTE_ERROR (21)"
When sending custom "QUOTE" commands to the remote server, one of the commands
returned an error code that was 400 or higher (for FTP) or otherwise
indicated unsuccessful completion of the command.
.IP "CURLE_HTTP_RETURNED_ERROR (22)"
This is returned if \fICURLOPT_FAILONERROR(3)\fP is set TRUE and the HTTP
server returns an error code that is >= 400.
.IP "CURLE_WRITE_ERROR (23)"
An error occurred when writing received data to a local file, or an error was
returned to libcurl from a write callback.
.IP "Obsolete error (24)"
Not used in modern versions.
.IP "CURLE_UPLOAD_FAILED (25)"
Failed starting the upload. For FTP, the server typically denied the STOR
command. The error buffer usually contains the server's explanation for this.
.IP "CURLE_READ_ERROR (26)"
There was a problem reading a local file or an error returned by the read
callback.
.IP "CURLE_OUT_OF_MEMORY (27)"
A memory allocation request failed. This is serious badness and
things are severely screwed up if this ever occurs.
.IP "CURLE_OPERATION_TIMEDOUT (28)"
Operation timeout. The specified time-out period was reached according to the
conditions.
.IP "Obsolete error (29)"
Not used in modern versions.
.IP "CURLE_FTP_PORT_FAILED (30)"
The FTP PORT command returned error. This mostly happens when you have not
specified a good enough address for libcurl to use. See
\fICURLOPT_FTPPORT(3)\fP.
.IP "CURLE_FTP_COULDNT_USE_REST (31)"
The FTP REST command returned error. This should never happen if the server is
sane.
.IP "Obsolete error (32)"
Not used in modern versions.
.IP "CURLE_RANGE_ERROR (33)"
The server does not support or accept range requests.
.IP "CURLE_HTTP_POST_ERROR (34)"
This is an odd error that mainly occurs due to internal confusion.
.IP "CURLE_SSL_CONNECT_ERROR (35)"
A problem occurred somewhere in the SSL/TLS handshake. You really want the
error buffer and read the message there as it pinpoints the problem slightly
more. Could be certificates (file formats, paths, permissions), passwords, and
others.
.IP "CURLE_BAD_DOWNLOAD_RESUME (36)"
The download could not be resumed because the specified offset was out of the
file boundary.
.IP "CURLE_FILE_COULDNT_READ_FILE (37)"
A file given with FILE:// could not be opened. Most likely because the file
path does not identify an existing file. Did you check file permissions?
.IP "CURLE_LDAP_CANNOT_BIND (38)"
LDAP cannot bind. LDAP bind operation failed.
.IP "CURLE_LDAP_SEARCH_FAILED (39)"
LDAP search failed.
.IP "Obsolete error (40)"
Not used in modern versions.
.IP "CURLE_FUNCTION_NOT_FOUND (41)"
Function not found. A required zlib function was not found.
.IP "CURLE_ABORTED_BY_CALLBACK (42)"
Aborted by callback. A callback returned "abort" to libcurl.
.IP "CURLE_BAD_FUNCTION_ARGUMENT (43)"
A function was called with a bad parameter.
.IP "Obsolete error (44)"
Not used in modern versions.
.IP "CURLE_INTERFACE_FAILED (45)"
Interface error. A specified outgoing interface could not be used. Set which
interface to use for outgoing connections' source IP address with
\fICURLOPT_INTERFACE(3)\fP.
.IP "Obsolete error (46)"
Not used in modern versions.
.IP "CURLE_TOO_MANY_REDIRECTS (47)"
Too many redirects. When following redirects, libcurl hit the maximum amount.
Set your limit with \fICURLOPT_MAXREDIRS(3)\fP.
.IP "CURLE_UNKNOWN_OPTION (48)"
An option passed to libcurl is not recognized/known. Refer to the appropriate
documentation. This is most likely a problem in the program that uses
libcurl. The error buffer might contain more specific information about which
exact option it concerns.
.IP "CURLE_SETOPT_OPTION_SYNTAX (49)"
An option passed in to a setopt was wrongly formatted. See error message for
details about what option.
.IP "Obsolete errors (50-51)"
Not used in modern versions.
.IP "CURLE_GOT_NOTHING (52)"
Nothing was returned from the server, and under the circumstances, getting
nothing is considered an error.
.IP "CURLE_SSL_ENGINE_NOTFOUND (53)"
The specified crypto engine was not found.
.IP "CURLE_SSL_ENGINE_SETFAILED (54)"
Failed setting the selected SSL crypto engine as default.
.IP "CURLE_SEND_ERROR (55)"
Failed sending network data.
.IP "CURLE_RECV_ERROR (56)"
Failure with receiving network data.
.IP "Obsolete error (57)"
Not used in modern versions.
.IP "CURLE_SSL_CERTPROBLEM (58)"
problem with the local client certificate.
.IP "CURLE_SSL_CIPHER (59)"
Couldn't use specified cipher.
.IP "CURLE_PEER_FAILED_VERIFICATION (60)"
The remote server's SSL certificate or SSH md5 fingerprint was deemed not OK.
This error code has been unified with CURLE_SSL_CACERT since 7.62.0. Its
previous value was 51.
.IP "CURLE_BAD_CONTENT_ENCODING (61)"
Unrecognized transfer encoding.
.IP "Obsolete error (62)"
Not used in modern versions.
.IP "CURLE_FILESIZE_EXCEEDED (63)"
Maximum file size exceeded.
.IP "CURLE_USE_SSL_FAILED (64)"
Requested FTP SSL level failed.
.IP "CURLE_SEND_FAIL_REWIND (65)"
When doing a send operation curl had to rewind the data to retransmit, but the
rewinding operation failed.
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
Illegal TFTP operation.
.IP "CURLE_TFTP_UNKNOWNID (72)"
Unknown TFTP transfer ID.
.IP "CURLE_REMOTE_FILE_EXISTS (73)"
File already exists and will not be overwritten.
.IP "CURLE_TFTP_NOSUCHUSER (74)"
This error should never be returned by a properly functioning TFTP server.
.IP "CURLE_CONV_FAILED (75)"
Character conversion failed.
.IP "CURLE_CONV_REQD (76)"
Caller must register conversion callbacks.
.IP "CURLE_SSL_CACERT_BADFILE (77)"
Problem with reading the SSL CA cert (path? access rights?)
.IP "CURLE_REMOTE_FILE_NOT_FOUND (78)"
The resource referenced in the URL does not exist.
.IP "CURLE_SSH (79)"
An unspecified error occurred during the SSH session.
.IP "CURLE_SSL_SHUTDOWN_FAILED (80)"







|
|
<
<







228
229
230
231
232
233
234
235
236


237
238
239
240
241
242
243
Illegal TFTP operation.
.IP "CURLE_TFTP_UNKNOWNID (72)"
Unknown TFTP transfer ID.
.IP "CURLE_REMOTE_FILE_EXISTS (73)"
File already exists and will not be overwritten.
.IP "CURLE_TFTP_NOSUCHUSER (74)"
This error should never be returned by a properly functioning TFTP server.
.IP "Obsolete error (75-76)"
Not used in modern versions.


.IP "CURLE_SSL_CACERT_BADFILE (77)"
Problem with reading the SSL CA cert (path? access rights?)
.IP "CURLE_REMOTE_FILE_NOT_FOUND (78)"
The resource referenced in the URL does not exist.
.IP "CURLE_SSH (79)"
An unspecified error occurred during the SSH session.
.IP "CURLE_SSL_SHUTDOWN_FAILED (80)"
262
263
264
265
266
267
268



269
270
271
272
273
274
275
An authentication function returned an error.
.IP "CURLE_HTTP3 (95)"
A problem was detected in the HTTP/3 layer. This is somewhat generic and can
be one out of several problems, see the error buffer for details.
.IP "CURLE_QUIC_CONNECT_ERROR (96)"
QUIC connection error. This error may be caused by an SSL library error. QUIC
is the protocol used for HTTP/3 transfers.



.IP "CURLE_SSL_CLIENTCERT (98)"
SSL Client Certificate required.
.IP "CURLE_UNRECOVERABLE_POLL (99)"
An internal call to poll() or select() returned error that is not recoverable.
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.







>
>
>







278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
An authentication function returned an error.
.IP "CURLE_HTTP3 (95)"
A problem was detected in the HTTP/3 layer. This is somewhat generic and can
be one out of several problems, see the error buffer for details.
.IP "CURLE_QUIC_CONNECT_ERROR (96)"
QUIC connection error. This error may be caused by an SSL library error. QUIC
is the protocol used for HTTP/3 transfers.
.IP "CURLE_PROXY (97)"
Proxy handshake error. \fICURLINFO_PROXY_ERROR(3)\fP provides extra details on
the specific problem.
.IP "CURLE_SSL_CLIENTCERT (98)"
SSL Client Certificate required.
.IP "CURLE_UNRECOVERABLE_POLL (99)"
An internal call to poll() or select() returned error that is not recoverable.
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.
Changes to jni/curl/docs/libcurl/libcurl-multi.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "May 17, 2022" "libcurl 7.84.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







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "May 17, 2022" "libcurl 7.84.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







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "June 27, 2022" "libcurl 7.85.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
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
descriptors duplicated in the child process, including the ones libcurl
created.

libcurl itself uses `fork()` and `execl()` if told to use the
`CURLAUTH_NTLM_WB` authentication method which then will invoke the helper
command in a child process with file descriptors duplicated. Make sure that
only the trusted and reliable helper program is invoked!
.SH_"Secrets in memory"
When applications pass user names, passwords or other sensitive data to
libcurl to be used for upcoming transfers, those secrets will be kept around
as-is in memory. In many cases they will be stored in heap for as long as the
handle itself for which the options are set.

If an attacker can access the heap, like maybe by reading swap space or via a
core dump file, such data might be accessible.







|







402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
descriptors duplicated in the child process, including the ones libcurl
created.

libcurl itself uses `fork()` and `execl()` if told to use the
`CURLAUTH_NTLM_WB` authentication method which then will invoke the helper
command in a child process with file descriptors duplicated. Make sure that
only the trusted and reliable helper program is invoked!
.SH "Secrets in memory"
When applications pass user names, passwords or other sensitive data to
libcurl to be used for upcoming transfers, those secrets will be kept around
as-is in memory. In many cases they will be stored in heap for as long as the
handle itself for which the options are set.

If an attacker can access the heap, like maybe by reading swap space or via a
core dump file, such data might be accessible.
Changes to jni/curl/docs/libcurl/libcurl-share.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "May 17, 2022" "libcurl 7.84.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.







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "Jun 27, 2022" "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:








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "Aug 31, 2022" "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:

459
460
461
462
463
464
465

466
467
468
469
470
471
472
.IP CURLE_BAD_PASSWORD_ENTERED
Introduced in 7.4.2
Deprecated since 7.17.0
.IP CURLE_CHUNK_FAILED
Introduced in 7.21.0
.IP CURLE_CONV_FAILED
Introduced in 7.15.4

.IP CURLE_CONV_REQD
Introduced in 7.15.4
Deprecated since 7.82.0
.IP CURLE_COULDNT_CONNECT
Introduced in 7.1
.IP CURLE_COULDNT_RESOLVE_HOST
Introduced in 7.1







>







459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
.IP CURLE_BAD_PASSWORD_ENTERED
Introduced in 7.4.2
Deprecated since 7.17.0
.IP CURLE_CHUNK_FAILED
Introduced in 7.21.0
.IP CURLE_CONV_FAILED
Introduced in 7.15.4
Deprecated since 7.82.0
.IP CURLE_CONV_REQD
Introduced in 7.15.4
Deprecated since 7.82.0
.IP CURLE_COULDNT_CONNECT
Introduced in 7.1
.IP CURLE_COULDNT_RESOLVE_HOST
Introduced in 7.1
1323
1324
1325
1326
1327
1328
1329

1330
1331
1332
1333
1334
1335
1336
Introduced in 7.15.5
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
Introduced in 7.10.7
.IP CURLOPT_FTP_FILEMETHOD
Introduced in 7.15.1
.IP CURLOPT_FTP_RESPONSE_TIMEOUT
Introduced in 7.10.8

.IP CURLOPT_FTP_SKIP_PASV_IP
Introduced in 7.15.0
.IP CURLOPT_FTP_SSL
Introduced in 7.11.0
Deprecated since 7.16.4
.IP CURLOPT_FTP_SSL_CCC
Introduced in 7.16.1







>







1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
Introduced in 7.15.5
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
Introduced in 7.10.7
.IP CURLOPT_FTP_FILEMETHOD
Introduced in 7.15.1
.IP CURLOPT_FTP_RESPONSE_TIMEOUT
Introduced in 7.10.8
Deprecated since 7.85.0
.IP CURLOPT_FTP_SKIP_PASV_IP
Introduced in 7.15.0
.IP CURLOPT_FTP_SSL
Introduced in 7.11.0
Deprecated since 7.16.4
.IP CURLOPT_FTP_SSL_CCC
Introduced in 7.16.1
1553
1554
1555
1556
1557
1558
1559


1560
1561
1562
1563
1564
1565
1566
.IP CURLOPT_PROGRESSDATA
Introduced in 7.1
.IP CURLOPT_PROGRESSFUNCTION
Introduced in 7.1
Deprecated since 7.32.0
.IP CURLOPT_PROTOCOLS
Introduced in 7.19.4


.IP CURLOPT_PROXY
Introduced in 7.1
.IP CURLOPT_PROXY_CAINFO
Introduced in 7.52.0
.IP CURLOPT_PROXY_CAINFO_BLOB
Introduced in 7.77.0
.IP CURLOPT_PROXY_CAPATH







>
>







1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
.IP CURLOPT_PROGRESSDATA
Introduced in 7.1
.IP CURLOPT_PROGRESSFUNCTION
Introduced in 7.1
Deprecated since 7.32.0
.IP CURLOPT_PROTOCOLS
Introduced in 7.19.4
.IP CURLOPT_PROTOCOLS_STR
Introduced in 7.85.0
.IP CURLOPT_PROXY
Introduced in 7.1
.IP CURLOPT_PROXY_CAINFO
Introduced in 7.52.0
.IP CURLOPT_PROXY_CAINFO_BLOB
Introduced in 7.77.0
.IP CURLOPT_PROXY_CAPATH
1633
1634
1635
1636
1637
1638
1639


1640
1641
1642
1643
1644
1645
1646
Introduced in 7.1
.IP CURLOPT_READDATA
Introduced in 7.9.7
.IP CURLOPT_READFUNCTION
Introduced in 7.1
.IP CURLOPT_REDIR_PROTOCOLS
Introduced in 7.19.4


.IP CURLOPT_REFERER
Introduced in 7.1
.IP CURLOPT_REQUEST_TARGET
Introduced in 7.55.0
.IP CURLOPT_RESOLVE
Introduced in 7.21.3
.IP CURLOPT_RESOLVER_START_DATA







>
>







1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
Introduced in 7.1
.IP CURLOPT_READDATA
Introduced in 7.9.7
.IP CURLOPT_READFUNCTION
Introduced in 7.1
.IP CURLOPT_REDIR_PROTOCOLS
Introduced in 7.19.4
.IP CURLOPT_REDIR_PROTOCOLS_STR
Introduced in 7.85.0
.IP CURLOPT_REFERER
Introduced in 7.1
.IP CURLOPT_REQUEST_TARGET
Introduced in 7.55.0
.IP CURLOPT_RESOLVE
Introduced in 7.21.3
.IP CURLOPT_RESOLVER_START_DATA
Changes to jni/curl/docs/libcurl/libcurl-thread.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "June 15, 2022" "libcurl 7.84.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.







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "June 15, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "May 17, 2022" "libcurl 7.84.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







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "May 17, 2022" "libcurl 7.85.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.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl 3 "May 17, 2022" "libcurl 7.84.0" "libcurl URL interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code.







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl 3 "May 17, 2022" "libcurl 7.85.0" "libcurl URL interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code.
Changes to jni/curl/docs/libcurl/libcurl.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl 3 "June 15, 2022" "libcurl 7.84.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. See
\fIlibcurl-easy(3)\fP, \fIlibcurl-multi(3)\fP, \fIlibcurl-share(3)\fP,







|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH libcurl 3 "June 15, 2022" "libcurl 7.85.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. See
\fIlibcurl-easy(3)\fP, \fIlibcurl-multi(3)\fP, \fIlibcurl-share(3)\fP,
jni/curl/docs/libcurl/mksymbolsmanpage.pl became executable.
Changes to jni/curl/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CAINFO.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CAINFO 3 "June 13, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CAINFO \- get the default built-in CAINFO string
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CAINFO 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CAINFO \- get the default built-in CAINFO string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CAPATH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CAPATH 3 "June 13, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CAPATH \- get the default built-in CAPATH string
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CAPATH 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CAPATH \- get the default built-in CAPATH string
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CERTINFO.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_METHOD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_METHOD 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35




36
37
38
39
40
41
42
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
.fi
.SH DESCRIPTION




Pass a pointer to a long to receive the version used in the last http
connection.  The returned value will be exactly one of the CURLPROTO_* values:

.nf
CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_FTP, CURLPROTO_FTPS,
CURLPROTO_GOPHER, CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_IMAP,
CURLPROTO_IMAPS, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_POP3,







|










>
>
>
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
.fi
.SH DESCRIPTION
This option is deprecated. We strongly recommend using
\fICURLINFO_SCHEME(3)\fP instead, because this option cannot return all
possible protocols!

Pass a pointer to a long to receive the version used in the last http
connection.  The returned value will be exactly one of the CURLPROTO_* values:

.nf
CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_FTP, CURLPROTO_FTPS,
CURLPROTO_GOPHER, CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_IMAP,
CURLPROTO_IMAPS, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_POP3,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_ERROR 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_ERROR 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_REFERER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REFERER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REFERER \- get the referrer header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REFERER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REFERER \- get the referrer header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SCHEME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "August 02, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  /* Perform the request */
  res = curl_easy_perform(curl);

  if(!res) {
    double speed;
    res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &speed);
    if(!res) {
      printf("Download speed %.0f bytes/sec\\n", ul);
    }
  }
}
.fi
.SH AVAILABILITY
Added in 7.4.1
.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 CURLINFO_SPEED_UPLOAD "(3), "
.BR CURLINFO_SIZE_UPLOAD_T "(3), "







|












49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  /* Perform the request */
  res = curl_easy_perform(curl);

  if(!res) {
    double speed;
    res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &speed);
    if(!res) {
      printf("Download speed %.0f bytes/sec\\n", speed);
    }
  }
}
.fi
.SH AVAILABILITY
Added in 7.4.1
.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 CURLINFO_SPEED_UPLOAD "(3), "
.BR CURLINFO_SIZE_UPLOAD_T "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "August 02, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  /* Perform the request */
  res = curl_easy_perform(curl);

  if(!res) {
    double speed;
    res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed);
    if(!res) {
      printf("Upload speed %.0f bytes/sec\\n", ul);
    }
  }
}
.fi
.SH AVAILABILITY
Added in
.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 CURLINFO_SPEED_DOWNLOAD "(3), "







|











48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  /* Perform the request */
  res = curl_easy_perform(curl);

  if(!res) {
    double speed;
    res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed);
    if(!res) {
      printf("Upload speed %.0f bytes/sec\\n", speed);
    }
  }
}
.fi
.SH AVAILABILITY
Added in
.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 CURLINFO_SPEED_DOWNLOAD "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- size of connection cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- size of connection cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_CONCURRENT_STREAMS \- max concurrent streams for http2
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_CONCURRENT_STREAMS \- max concurrent streams for http2
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- max number of connections to a single host
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- max number of connections to a single host
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- abstract Unix domain socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- abstract Unix domain socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- automatic decompression of HTTP downloads
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- automatic decompression of HTTP downloads
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- scope id for IPv6 addresses
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- scope id for IPv6 addresses
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "June 21, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "June 21, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- append to the remote file
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- append to the remote file
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AWS_SIGV4 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AWS_SIGV4 \- V4 signature
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AWS_SIGV4 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- receive buffer size
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "August 23, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- receive buffer size
.SH SYNOPSIS
.nf
#include <curl/curl.h>

67
68
69
70
71
72
73

.fi
.SH AVAILABILITY
Added in 7.10.  Growing the buffer was added in 7.53.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_MAX_RECV_SPEED_LARGE "(3), " CURLOPT_WRITEFUNCTION "(3), "








>
67
68
69
70
71
72
73
74
.fi
.SH AVAILABILITY
Added in 7.10.  Growing the buffer was added in 7.53.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_MAX_RECV_SPEED_LARGE "(3), " CURLOPT_WRITEFUNCTION "(3), "
.BR CURLOPT_UPLOAD_BUFFERSIZE "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAINFO.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO_BLOB \- Certificate Authority (CA) bundle in PEM format
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO_BLOB \- Certificate Authority (CA) bundle in PEM format
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAPATH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- directory holding CA certificates
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- directory holding CA certificates
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- pointer passed to the FTP chunk callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- pointer passed to the FTP chunk callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "August 07, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
.nf
#include <curl/curl.h>

41
42
43
44
45
46
47






48
49
50
51
52
53
54
useful when used with the \fICURLINFO_ACTIVESOCKET(3)\fP option to
\fIcurl_easy_getinfo(3)\fP as the library can set up the connection and then
the application can obtain the most recently used socket for special data
transfers.

Transfers marked connect only will not reuse any existing connections and
connections marked connect only will not be allowed to get reused.






.SH DEFAULT
0
.SH PROTOCOLS
HTTP, SMTP, POP3 and IMAP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();







>
>
>
>
>
>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
useful when used with the \fICURLINFO_ACTIVESOCKET(3)\fP option to
\fIcurl_easy_getinfo(3)\fP as the library can set up the connection and then
the application can obtain the most recently used socket for special data
transfers.

Transfers marked connect only will not reuse any existing connections and
connections marked connect only will not be allowed to get reused.

If the connect only transfer is done using the multi interface, the particular
easy handle must remain added to the multi handle for as long as the
application wants to use it. Once it has been removed with
\fIcurl_multi_remove_handle(3)\fP, \fIcurl_easy_send(3)\fP and
\fIcurl_easy_recv(3)\fP do not function.
.SH DEFAULT
0
.SH PROTOCOLS
HTTP, SMTP, POP3 and IMAP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- HTTP Cookie header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- HTTP Cookie header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLF.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- CRLF conversion
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- CRLF conversion
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- Certificate Revocation List file
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- Certificate Revocation List file
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CURLU.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- URL in CURLU * format
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- URL in CURLU * format
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom request method
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom request method
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- pointer passed to the debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- pointer passed to the debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
.nf
#include <curl/curl.h>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
.nf
#include <curl/curl.h>
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- life-time for DNS cache entries
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- life-time for DNS cache entries
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- interface to speak DNS over
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- interface to speak DNS over
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- DNS servers to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- DNS servers to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- shuffle IP addresses for hostname
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- shuffle IP addresses for hostname
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- global DNS cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- global DNS cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYHOST \- verify the host name in the DoH SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYHOST \- verify the host name in the DoH SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYPEER \- verify the DoH SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYPEER \- verify the DoH SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYSTATUS \- verify the DoH SSL certificate's status
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_SSL_VERIFYSTATUS \- verify the DoH SSL certificate's status
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- EGD socket path
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- EGD socket path
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- error buffer for error messages
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- error buffer for error messages
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FILETIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- pointer passed to the fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- pointer passed to the fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard match callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard match callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- order in which to attempt TLS vs SSL
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- order in which to attempt TLS vs SSL
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- account info for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- account info for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "July 04, 2022" "libcurl 7.85.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>

60
61
62
63
64
65
66
67
.fi
.SH AVAILABILITY
Added in 7.15.5
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_FTP_SKIP_PASV_IP "(3), " CURLOPT_FTP_RESPONSE_TIMEOUT "(3), "







|
60
61
62
63
64
65
66
67
.fi
.SH AVAILABILITY
Added in 7.15.5
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_FTP_SKIP_PASV_IP "(3), " CURLOPT_SERVER_RESPONSE_TIMEOUT "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Deleted jni/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2022, 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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT,
                          long timeout);
.fi
.SH DESCRIPTION
Pass a long.  Causes libcurl to set a \fItimeout\fP period (in seconds) on the
amount of time that the server is allowed to take in order to send a response
message for a command before the session is considered dead.  While libcurl is
waiting for a response, this value overrides \fICURLOPT_TIMEOUT(3)\fP. It is
recommended that if used in conjunction with \fICURLOPT_TIMEOUT(3)\fP, you set
\fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP to a value smaller than
\fICURLOPT_TIMEOUT(3)\fP.
.SH DEFAULT
None
.SH PROTOCOLS
FTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/slow.txt");
  /* wait no more than 23 seconds */
  curl_easy_setopt(curl, CURLOPT_FTP_RESPONSE_TIMEOUT, 23L);
  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Added in 7.10.8
.SH RETURN VALUE
Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. Returns
CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when
converted to milliseconds is too large.
.SH "SEE ALSO"
.BR CURLOPT_TIMEOUT "(3), " CURLOPT_CONNECTTIMEOUT "(3), "
.BR CURLOPT_LOW_SPEED_LIMIT "(3), "
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<








































































































































Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- use EPRT for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- use EPRT for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- use EPSV for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- use EPSV for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- use PRET for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- use PRET for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- allowed GSS-API delegation
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- allowed GSS-API delegation
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- send HTTP headers to both proxy and host or separately
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- send HTTP headers to both proxy and host or separately
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTS \- HSTS cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTS \- HSTS cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSREADFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTSWRITEFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS_CTRL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HSTS_CTRL \- control HSTS behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HSTS_CTRL 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09_ALLOWED \- allow HTTP/0.9 response
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09_ALLOWED \- allow HTTP/0.9 response
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "June 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set of HTTP headers
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "June 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set of HTTP headers
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- HTTP content decoding control
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- HTTP content decoding control
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- HTTP transfer decoding control
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- HTTP transfer decoding control
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- HTTP protocol version to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- HTTP protocol version to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- 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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- pointer passed to RTSP interleave callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- pointer passed to RTSP interleave callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- pointer passed to I/O callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- pointer passed to I/O callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- IP protocol version to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- IP protocol version to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- passphrase to private key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- passphrase to private key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- FTP kerberos security level
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- FTP kerberos security level
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- local port number to use for socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- local port number to use for socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- login options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- login options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- low speed limit in bytes per second
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- low speed limit in bytes per second
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- low speed limit time period
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- low speed limit time period
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.85.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_MAXLIFETIME_CONN.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXLIFETIME_CONN 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXLIFETIME_CONN 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIME_OPTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIME_OPTIONS \- set MIME option flags
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIME_OPTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIME_OPTIONS \- set MIME option flags
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- enable use of .netrc
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- enable use of .netrc
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- pointer passed to open socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- pointer passed to open socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- callback for opening socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- callback for opening socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- pinned public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- pinned public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PORT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

48
49
50
51
52
53
54
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- remote port number to connect to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
.fi
.SH DESCRIPTION
We discourage using this option since its scope is not obvious and hard to
predict. Set the preferred port number in the URL instead.

This option sets \fInumber\fP to be the remote port number to connect to,
instead of the one specified in the URL or the default port for the used
protocol.

Usually, you just let the URL decide which port to use but this allows the
application to override that.

While this option accepts a 'long', a port number is usually a 16 bit number
and therefore using a port number over 65535 will cause a runtime error.

.SH DEFAULT
By default this is 0 which makes it not used. This also makes port number zero
impossible to set with this API.
.SH PROTOCOLS
Used for all protocols that speak to a port number.
.SH EXAMPLE
.nf







|




















|
|
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "July 04, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- remote port number to connect to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
.fi
.SH DESCRIPTION
We discourage using this option since its scope is not obvious and hard to
predict. Set the preferred port number in the URL instead.

This option sets \fInumber\fP to be the remote port number to connect to,
instead of the one specified in the URL or the default port for the used
protocol.

Usually, you just let the URL decide which port to use but this allows the
application to override that.

While this option accepts a 'long', a port number is an unsigned 16 bit number
and therefore using a port number lower than zero or over 65535 will cause a
\fBCURLE_BAD_FUNCTION_ARGUMENT\fP error.
.SH DEFAULT
By default this is 0 which makes it not used. This also makes port number zero
impossible to set with this API.
.SH PROTOCOLS
Used for all protocols that speak to a port number.
.SH EXAMPLE
.nf
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- make an HTTP POST
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- make an HTTP POST
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- data to POST to server
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- data to POST to server
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PREREQDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREREQDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREREQDATA \- pointer passed to the pre-request callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREREQDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREREQDATA \- pointer passed to the pre-request callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREREQFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREREQFUNCTION \- user callback called when a connection has been
established, but before a request has been made.
.SH SYNOPSIS
.nf
#include <curl/curl.h>







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREREQFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREREQFUNCTION \- user callback called when a connection has been
established, but before a request has been made.
.SH SYNOPSIS
.nf
#include <curl/curl.h>
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- pre-proxy host to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- pre-proxy host to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- pointer passed to the progress callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- pointer passed to the progress callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- progress meter callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- progress meter callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35




36
37
38
39
40
41
42
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- allowed protocols
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
.fi
.SH DESCRIPTION




Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
limits what protocols libcurl may use in the transfer. This allows you to have
a libcurl built to support a wide range of protocols but still limit specific
transfers to only be allowed to use a subset of them. By default libcurl will
accept all protocols it supports (\fICURLPROTO_ALL\fP). See also
\fICURLOPT_REDIR_PROTOCOLS(3)\fP.








|










>
>
>
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- allowed protocols
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
.fi
.SH DESCRIPTION
This option is deprecated. We strongly recommend using
\fICURLOPT_PROTOCOLS_STR(3)\fP instead because this option cannot control all
available protocols!

Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
limits what protocols libcurl may use in the transfer. This allows you to have
a libcurl built to support a wide range of protocols but still limit specific
transfers to only be allowed to use a subset of them. By default libcurl will
accept all protocols it supports (\fICURLPROTO_ALL\fP). See also
\fICURLOPT_REDIR_PROTOCOLS(3)\fP.

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
CURLPROTO_SMBS
CURLPROTO_SMTP
CURLPROTO_SMTPS
CURLPROTO_TELNET
CURLPROTO_TFTP
.fi
.SH DEFAULT
All protocols built-in
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
curl = curl_easy_init();
if(curl) {
  /* pass in the URL from an external source */







|







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
CURLPROTO_SMBS
CURLPROTO_SMTP
CURLPROTO_SMTPS
CURLPROTO_TELNET
CURLPROTO_TFTP
.fi
.SH DEFAULT
All protocols built-in.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
curl = curl_easy_init();
if(curl) {
  /* pass in the URL from an external source */
Added jni/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2022, 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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS_STR 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS_STR \- allowed protocols
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS_STR, char *spec);
.fi
.SH DESCRIPTION
Pass a pointer to a string that holds a comma-separated list of case
insensitive protocol names (URL schemes) to allow in the transfer. This
option allows applications to use libcurl built to support a wide range of
protocols but still limit specific transfers to only be allowed to use a
subset of them. By default, libcurl accepts all protocols it was built with
support for. See also \fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP.

If trying to set a non-existing protocol or if no matching protocol at all is
set, it returns error.

These are the available protocols:

DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP, SMB,
SMBS, SMTP, SMTPS, TELNET, TFTP

You can set "ALL" as a short-cut to enable all protocols. Note that by setting
all, you may enable protocols that were not supported the day you write this
but are introduced in a future libcurl version.

\fIcurl_version_info(3)\fP can be used to get a list of all supported
protocols in the current libcurl. \fICURLINFO_SCHEME(3)\fP is the recommended
way to figure out the protocol used in a previous transfer.
.SH DEFAULT
All protocols built-in
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
curl = curl_easy_init();
if(curl) {
  /* pass in the URL from an external source */
  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);

  /* only allow HTTP, TFTP and SFTP */
  curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, "http,tftp,sftp");

  /* Perform the request */
  curl_easy_perform(curl);
}
.fi
.SH AVAILABILITY
Added in 7.85.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_REDIR_PROTOCOLS_STR "(3), " CURLOPT_URL "(3), "
.BR curl_version_info "(3), " CURLINFO_SCHEME "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- proxy to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- proxy to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- HTTP proxy authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- HTTP proxy authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- set of HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- set of HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO_BLOB \- proxy Certificate Authority (CA) bundle in PEM format
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO_BLOB \- proxy Certificate Authority (CA) bundle in PEM format
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- directory holding HTTPS proxy CA certificates
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- directory holding HTTPS proxy CA certificates
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- HTTPS proxy Certificate Revocation List file
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- HTTPS proxy Certificate Revocation List file
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_ISSUERCERT_BLOB \- proxy issuer SSL certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- passphrase for the proxy private key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- passphrase for the proxy private key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- pinned public key for https proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- pinned public key for https proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- HTTPS proxy client certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- HTTPS proxy client certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- type of the proxy client SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- type of the proxy client SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- private keyfile for HTTPS proxy client cert
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- private keyfile for HTTPS proxy client cert
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- type of the proxy private key file
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- type of the proxy private key file
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- preferred HTTPS proxy TLS version
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- preferred HTTPS proxy TLS version
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- ciphers to use for HTTPS proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- ciphers to use for HTTPS proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- HTTPS proxy SSL behavior options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- HTTPS proxy SSL behavior options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "July 22, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
.nf
#include <curl/curl.h>

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
  curl_easy_setopt(curl, CURLOPT_PROXY_TLS13_CIPHERS,
                   "TLS13-CHACHA20-POLY1305-SHA256");
  ret = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Added in 7.61.0.
Available when built with OpenSSL >= 1.1.1.
.SH RETURN VALUE
Returns CURLE_OK if supported, CURLE_NOT_BUILT_IN otherwise.
.SH "SEE ALSO"
.BR CURLOPT_PROXY_SSL_CIPHER_LIST "(3), " CURLOPT_PROXY_SSLVERSION "(3), "
.BR CURLOPT_SSL_CIPHER_LIST "(3), " CURLOPT_TLS13_CIPHERS "(3), "
.BR CURLOPT_SSLVERSION "(3), "







|













55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
  curl_easy_setopt(curl, CURLOPT_PROXY_TLS13_CIPHERS,
                   "TLS_CHACHA20_POLY1305_SHA256");
  ret = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Added in 7.61.0.
Available when built with OpenSSL >= 1.1.1.
.SH RETURN VALUE
Returns CURLE_OK if supported, CURLE_NOT_BUILT_IN otherwise.
.SH "SEE ALSO"
.BR CURLOPT_PROXY_SSL_CIPHER_LIST "(3), " CURLOPT_PROXY_SSLVERSION "(3), "
.BR CURLOPT_SSL_CIPHER_LIST "(3), " CURLOPT_TLS13_CIPHERS "(3), "
.BR CURLOPT_SSLVERSION "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- HTTPS proxy TLS authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- HTTPS proxy TLS authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PUT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_QUOTE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- file to read random data from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- file to read random data from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- byte range to request
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- byte range to request
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_READDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- pointer passed to the read callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- pointer passed to the read callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35




36
37
38
39
40
41
42
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
.fi
.SH DESCRIPTION




Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
limits what protocols libcurl may use in a transfer that it follows to in a
redirect when \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This allows you to
limit specific transfers to only be allowed to use a subset of protocols in
redirections.

Protocols denied by \fICURLOPT_PROTOCOLS(3)\fP are not overridden by this







|










>
>
>
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
.fi
.SH DESCRIPTION
This option is deprecated. We strongly recommend using
\fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP instead because this option cannot
control all available protocols!

Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
limits what protocols libcurl may use in a transfer that it follows to in a
redirect when \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This allows you to
limit specific transfers to only be allowed to use a subset of protocols in
redirections.

Protocols denied by \fICURLOPT_PROTOCOLS(3)\fP are not overridden by this
Added jni/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2022, 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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS_STR 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS_STR \- protocols allowed to redirect to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS_STR,
                          char *spec);
.fi
.SH DESCRIPTION
Pass a pointer to a string that holds a comma-separated list of case
insensitive protocol names (URL schemes). That list limits what protocols
libcurl may use in a transfer that it follows to in a redirect when
\fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This option allows applications to
limit specific transfers to only be allowed to use a subset of protocols in
redirections.

Protocols denied by \fICURLOPT_PROTOCOLS_STR(3)\fP are not overridden by this
option.

By default libcurl will allow HTTP, HTTPS, FTP and FTPS on redirects (since
7.65.2).  Older versions of libcurl 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.

These are the available protocols:

DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP, SMB,
SMBS, SMTP, SMTPS, TELNET, TFTP

You can set "ALL" as a short-cut to enable all protocols. Note that by setting
all, you may enable protocols that were not supported the day you write this
but are introduced in a future libcurl version.

If trying to set a non-existing protocol or if no matching protocol at all is
set, it returns error.
.SH DEFAULT
HTTP, HTTPS, FTP and FTPS (Added in 7.65.2).

Older versions defaulted to all protocols except FILE, SCP and since 7.40.0
SMB and SMBS.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
curl = curl_easy_init();
if(curl) {
  /* pass in the URL from an external source */
  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);

  /* only allow redirects to HTTP and HTTPS URLs */
  curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS_STR, "http,https");

  /* Perform the request */
  curl_easy_perform(curl);
}
.fi
.SH AVAILABILITY
Added in 7.85.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_PROTOCOLS_STR "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REFERER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- the HTTP referer header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- the HTTP referer header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- alternative target for this request
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- alternative target for this request
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- pointer passed to the resolver start callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- pointer passed to the resolver start callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- callback called before a new name resolve is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- callback called before a new name resolve is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- offset to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- offset to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- offset to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- offset to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- RTSP client CSEQ number
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- RTSP client CSEQ number
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- RTSP request
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- RTSP request
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- RTSP server CSEQ number
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- RTSP server CSEQ number
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- RTSP session ID
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- RTSP session ID
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- RTSP stream URI
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- RTSP stream URI
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_AUTHZID 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_AUTHZID \- authorization identity (identity to act as)
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_AUTHZID 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_AUTHZID \- authorization identity (identity to act as)
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- send initial response in first packet
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- send initial response in first packet
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- pointer passed to the seek callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- pointer passed to the seek callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Added jni/curl/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.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 - 2022, 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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVER_RESPONSE_TIMEOUT 3 "July 04, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVER_RESPONSE_TIMEOUT \- time allowed to wait for server response
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVER_RESPONSE_TIMEOUT,
                          long timeout);
.fi
.SH DESCRIPTION
Pass a long.  Causes libcurl to set a \fItimeout\fP period (in seconds) on the
amount of time that the server is allowed to take in order to send a response
message for a command before the session is considered dead.  While libcurl is
waiting for a response, this value overrides \fICURLOPT_TIMEOUT(3)\fP. It is
recommended that if used in conjunction with \fICURLOPT_TIMEOUT(3)\fP, you set
\fICURLOPT_SERVER_RESPONSE_TIMEOUT(3)\fP to a value smaller than
\fICURLOPT_TIMEOUT(3)\fP.

This option was formerly known as \fBCURLOPT_FTP_RESPONSE_TIMEOUT\fP.
.SH DEFAULT
None
.SH PROTOCOLS
FTP, IMAP, POP3 and SMTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/slow.txt");
  /* wait no more than 23 seconds */
  curl_easy_setopt(curl, CURLOPT_SERVER_RESPONSE_TIMEOUT, 23L);
  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Added in 7.10.8. Used under this name since 7.20.0
.SH RETURN VALUE
Returns CURLE_OK if supported, and CURLE_UNKNOWN_OPTION if not. Returns
CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when
converted to milliseconds is too large.
.SH "SEE ALSO"
.BR CURLOPT_TIMEOUT "(3), " CURLOPT_CONNECTTIMEOUT "(3), "
.BR CURLOPT_LOW_SPEED_LIMIT "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SHARE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- share handle to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- share handle to use
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- pointer to pass to sockopt callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- pointer to pass to sockopt callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- methods for SOCKS5 proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- methods for SOCKS5 proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- socks proxy gssapi negotiation protection
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- socks proxy gssapi negotiation protection
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- auth types for SFTP and SCP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- auth types for SFTP and SCP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enable SSH compression
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enable SSH compression
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "June 13, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOSTKEYDATA \- pointer to pass to the SSH hostkey callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOSTKEYDATA \- pointer to pass to the SSH hostkey callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOSTKEYFUNCTION 3 "June 13, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOSTKEYFUNCTION \- callback to check hostkey
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOSTKEYFUNCTION 3 "June 13, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOSTKEYFUNCTION \- callback to check hostkey
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- MD5 checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- MD5 checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 \- SHA256 hash of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 \- SHA256 hash of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer passed to the SSH key callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer passed to the SSH key callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- private key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- 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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- SSL client certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- SSL client certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- type of client SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- type of client SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT_BLOB 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT_BLOB 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- SSL engine identifier
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- SSL engine identifier
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- private keyfile for TLS and SSL client cert
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- private keyfile for TLS and SSL client cert
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- type of the private key file
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- type of the private key file
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- preferred TLS/SSL version
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- preferred TLS/SSL version
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- ciphers to use for TLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- ciphers to use for TLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- pointer passed to ssl_ctx callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- pointer passed to ssl_ctx callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "May 17, 2022" "libcurl 7.85.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>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_EC_CURVES 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_EC_CURVES \- key exchange curves
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_EC_CURVES 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_EC_CURVES \- key exchange curves
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- Application Layer Protocol Negotiation
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- Application Layer Protocol Negotiation
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- use NPN
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- use NPN
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- TLS false start
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- TLS false start
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- SSL behavior options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- SSL behavior options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- use the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- use the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_STDERR.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- stream this transfer depends on
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- stream this transfer depends on
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- stream this transfer depends on exclusively
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- stream this transfer depends on exclusively
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- numerical stream weight
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- numerical stream weight
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "May 17, 2022" "libcurl 7.84.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>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- TCP Fast Open
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- TCP Fast Open
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- TCP keep-alive probing
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- TCP keep-alive probing
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- TCP keep-alive idle time wait
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- TCP keep-alive idle time wait
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- TCP keep-alive interval
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- TCP keep-alive interval
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- the TCP_NODELAY option
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- the TCP_NODELAY option
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- set of telnet options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- set of telnet options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- send no TFTP options requests
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- send no TFTP options requests
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- maximum time the transfer is allowed to complete
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- maximum time the transfer is allowed to complete
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- maximum time the transfer is allowed to complete
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- maximum time the transfer is allowed to complete
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- time value for conditional
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- time value for conditional
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- time value for conditional
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- time value for conditional
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

68
69
70
71
72
73
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- ciphers suites to use for TLS 1.3
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);
.fi
.SH DESCRIPTION
Pass a char *, pointing to a null-terminated string holding the list of cipher
suites to use for the TLS 1.3 connection. The list must be syntactically
correct, it consists of one or more cipher suite strings separated by colons.

you will find more details about cipher lists 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 CURLOPT_SSL_CIPHER_LIST option.

The application does not have to keep the string around after setting this
option.
.SH DEFAULT
NULL, use internal default
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
  curl_easy_setopt(curl, CURLOPT_TLS13_CIPHERS,
                   "TLS13-CHACHA20-POLY1305-SHA256");
  ret = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Added in 7.61.0.
Available when built with OpenSSL >= 1.1.1.

.SH RETURN VALUE
Returns CURLE_OK if supported, CURLE_NOT_BUILT_IN otherwise.
.SH "SEE ALSO"
.BR CURLOPT_SSL_CIPHER_LIST "(3), " CURLOPT_SSLVERSION "(3), "
.BR CURLOPT_PROXY_SSL_CIPHER_LIST "(3), " CURLOPT_PROXY_TLS13_CIPHERS "(3), "
.BR CURLOPT_PROXY_SSLVERSION "(3), " CURLOPT_USE_SSL "(3), "







|



















|
|













|





|
|
>






18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "July 22, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- ciphers suites to use for TLS 1.3
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);
.fi
.SH DESCRIPTION
Pass a char *, pointing to a null-terminated string holding the list of cipher
suites to use for the TLS 1.3 connection. The list must be syntactically
correct, it consists of one or more cipher suite strings separated by colons.

you will find more details about cipher lists 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 or SChannel. If you are using a different SSL backend you can try
setting TLS 1.3 cipher suites by using the CURLOPT_SSL_CIPHER_LIST option.

The application does not have to keep the string around after setting this
option.
.SH DEFAULT
NULL, use internal default
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
  curl_easy_setopt(curl, CURLOPT_TLS13_CIPHERS,
                   "TLS_CHACHA20_POLY1305_SHA256");
  ret = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Added in 7.61.0 for OpenSSL. Available when built with OpenSSL >= 1.1.1.

Added in 7.85.0 for SChannel.
.SH RETURN VALUE
Returns CURLE_OK if supported, CURLE_NOT_BUILT_IN otherwise.
.SH "SEE ALSO"
.BR CURLOPT_SSL_CIPHER_LIST "(3), " CURLOPT_SSLVERSION "(3), "
.BR CURLOPT_PROXY_SSL_CIPHER_LIST "(3), " CURLOPT_PROXY_TLS13_CIPHERS "(3), "
.BR CURLOPT_PROXY_SSLVERSION "(3), " CURLOPT_USE_SSL "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- TLS authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- TLS authentication methods
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERDATA \- pointer passed to trailing headers callback
.SH SYNOPSIS
.nf
#include <curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERDATA \- pointer passed to trailing headers callback
.SH SYNOPSIS
.nf
#include <curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERFUNCTION \- callback for sending trailing headers
.SH SYNOPSIS
.nf
#include <curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERFUNCTION \- callback for sending trailing headers
.SH SYNOPSIS
.nf
#include <curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- Unix domain socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- Unix domain socket
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- data upload
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- data upload
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- upload buffer size
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- upload buffer size
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_URL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- URL for this transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- URL for this transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- HTTP user-agent header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- HTTP user-agent header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERNAME.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "May 17, 2022" "libcurl 7.85.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.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- verbose mode
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- verbose mode
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- directory wildcard transfers
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- directory wildcard transfers
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- pointer passed to the write callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- pointer passed to the write callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- pointer passed to the progress callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- pointer passed to the progress callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- progress meter callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- progress meter callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "May 17, 2022" "libcurl 7.84.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- OAuth 2.0 access token
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "May 17, 2022" "libcurl 7.85.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- OAuth 2.0 access token
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_LOCKFUNC 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
CURLSHOPT_LOCKFUNC - mutex lock callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_LOCKFUNC 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
CURLSHOPT_LOCKFUNC - mutex lock callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLSHOPT_SHARE.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_SHARE 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
CURLSHOPT_SHARE - add data to share
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_SHARE 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
CURLSHOPT_SHARE - add data to share
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_UNLOCKFUNC 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
CURLSHOPT_UNLOCKFUNC - mutex unlock callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_UNLOCKFUNC 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
CURLSHOPT_UNLOCKFUNC - mutex unlock callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLSHOPT_UNSHARE.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_UNSHARE 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
CURLSHOPT_UNSHARE - remove data to share
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_UNSHARE 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
CURLSHOPT_UNSHARE - remove data to share
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLSHOPT_USERDATA.3.
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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_USERDATA 3 "May 17, 2022" "libcurl 7.84.0" "libcurl Manual"

.SH NAME
CURLSHOPT_USERDATA - pointer passed to the (un)lock mutex callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







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.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.TH CURLSHOPT_USERDATA 3 "May 17, 2022" "libcurl 7.85.0" "libcurl Manual"

.SH NAME
CURLSHOPT_USERDATA - pointer passed to the (un)lock mutex callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/Makefile.in.
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl/opts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







134
135
136
137
138
139
140
141

142
143
144
145
146
147
148
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl/opts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
365
366
367
368
369
370
371

372
373
374
375
376
377
378
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
459
460
461
462
463
464
465
466
467
468

469
470
471
472
473
474
475
  CURLINFO_COOKIELIST.3                         \
  CURLINFO_EFFECTIVE_METHOD.3                   \
  CURLINFO_EFFECTIVE_URL.3                      \
  CURLINFO_FILETIME.3                           \
  CURLINFO_FILETIME_T.3                         \
  CURLINFO_FTP_ENTRY_PATH.3                     \
  CURLINFO_HEADER_SIZE.3                        \
  CURLINFO_HTTPAUTH_AVAIL.3                     \
  CURLINFO_HTTP_CONNECTCODE.3                   \
  CURLINFO_HTTP_VERSION.3                       \

  CURLINFO_LASTSOCKET.3                         \
  CURLINFO_LOCAL_IP.3                           \
  CURLINFO_LOCAL_PORT.3                         \
  CURLINFO_NAMELOOKUP_TIME.3                    \
  CURLINFO_NAMELOOKUP_TIME_T.3                  \
  CURLINFO_NUM_CONNECTS.3                       \
  CURLINFO_OS_ERRNO.3                           \







<


>







459
460
461
462
463
464
465

466
467
468
469
470
471
472
473
474
475
  CURLINFO_COOKIELIST.3                         \
  CURLINFO_EFFECTIVE_METHOD.3                   \
  CURLINFO_EFFECTIVE_URL.3                      \
  CURLINFO_FILETIME.3                           \
  CURLINFO_FILETIME_T.3                         \
  CURLINFO_FTP_ENTRY_PATH.3                     \
  CURLINFO_HEADER_SIZE.3                        \

  CURLINFO_HTTP_CONNECTCODE.3                   \
  CURLINFO_HTTP_VERSION.3                       \
  CURLINFO_HTTPAUTH_AVAIL.3                     \
  CURLINFO_LASTSOCKET.3                         \
  CURLINFO_LOCAL_IP.3                           \
  CURLINFO_LOCAL_PORT.3                         \
  CURLINFO_NAMELOOKUP_TIME.3                    \
  CURLINFO_NAMELOOKUP_TIME_T.3                  \
  CURLINFO_NUM_CONNECTS.3                       \
  CURLINFO_OS_ERRNO.3                           \
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
  CURLINFO_STARTTRANSFER_TIME_T.3               \
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
  CURLMOPT_MAXCONNECTS.3                        \
  CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \

  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \
  CURLMOPT_PUSHFUNCTION.3                       \
  CURLMOPT_SOCKETDATA.3                         \
  CURLMOPT_SOCKETFUNCTION.3                     \
  CURLMOPT_TIMERDATA.3                          \
  CURLMOPT_TIMERFUNCTION.3                      \
  CURLOPT_ABSTRACT_UNIX_SOCKET.3                \
  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
  CURLOPT_ACCEPT_ENCODING.3                     \

  CURLOPT_ADDRESS_SCOPE.3                       \
  CURLOPT_ALTSVC.3                              \
  CURLOPT_ALTSVC_CTRL.3                         \
  CURLOPT_APPEND.3                              \
  CURLOPT_AUTOREFERER.3                         \

  CURLOPT_BUFFERSIZE.3                          \
  CURLOPT_CAINFO.3                              \
  CURLOPT_CAINFO_BLOB.3                         \
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \
  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \


  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \







<




>










<

>





>










<
<


>
>







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
  CURLINFO_STARTTRANSFER_TIME_T.3               \
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \

  CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
  CURLMOPT_MAXCONNECTS.3                        \
  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \
  CURLMOPT_PUSHFUNCTION.3                       \
  CURLMOPT_SOCKETDATA.3                         \
  CURLMOPT_SOCKETFUNCTION.3                     \
  CURLMOPT_TIMERDATA.3                          \
  CURLMOPT_TIMERFUNCTION.3                      \
  CURLOPT_ABSTRACT_UNIX_SOCKET.3                \

  CURLOPT_ACCEPT_ENCODING.3                     \
  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
  CURLOPT_ADDRESS_SCOPE.3                       \
  CURLOPT_ALTSVC.3                              \
  CURLOPT_ALTSVC_CTRL.3                         \
  CURLOPT_APPEND.3                              \
  CURLOPT_AUTOREFERER.3                         \
  CURLOPT_AWS_SIGV4.3                           \
  CURLOPT_BUFFERSIZE.3                          \
  CURLOPT_CAINFO.3                              \
  CURLOPT_CAINFO_BLOB.3                         \
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \


  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \
  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \
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
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \
  CURLOPT_FNMATCH_FUNCTION.3                    \
  CURLOPT_FOLLOWLOCATION.3                      \
  CURLOPT_FORBID_REUSE.3                        \
  CURLOPT_FRESH_CONNECT.3                       \
  CURLOPT_FTPPORT.3                             \
  CURLOPT_FTPSSLAUTH.3                          \
  CURLOPT_FTP_ACCOUNT.3                         \
  CURLOPT_FTP_ALTERNATIVE_TO_USER.3             \
  CURLOPT_FTP_CREATE_MISSING_DIRS.3             \
  CURLOPT_FTP_FILEMETHOD.3                      \
  CURLOPT_FTP_RESPONSE_TIMEOUT.3                \
  CURLOPT_FTP_SKIP_PASV_IP.3                    \
  CURLOPT_FTP_SSL_CCC.3                         \
  CURLOPT_FTP_USE_EPRT.3                        \
  CURLOPT_FTP_USE_EPSV.3                        \
  CURLOPT_FTP_USE_PRET.3                        \


  CURLOPT_GSSAPI_DELEGATION.3                   \
  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
  CURLOPT_HAPROXYPROTOCOL.3                     \
  CURLOPT_HEADER.3                              \
  CURLOPT_HEADERDATA.3                          \
  CURLOPT_HEADERFUNCTION.3                      \
  CURLOPT_HEADEROPT.3                           \
  CURLOPT_HSTS.3                                \

  CURLOPT_HSTSREADDATA.3                        \
  CURLOPT_HSTSREADFUNCTION.3                    \
  CURLOPT_HSTSWRITEDATA.3                       \
  CURLOPT_HSTSWRITEFUNCTION.3                   \
  CURLOPT_HSTS_CTRL.3                           \
  CURLOPT_HTTP09_ALLOWED.3                      \
  CURLOPT_HTTP200ALIASES.3                      \



  CURLOPT_HTTPAUTH.3                            \
  CURLOPT_HTTPGET.3                             \
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_IGNORE_CONTENT_LENGTH.3               \
  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \







<
<




<





>
>








>




<


>
>
>





<
<
<







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
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \
  CURLOPT_FNMATCH_FUNCTION.3                    \
  CURLOPT_FOLLOWLOCATION.3                      \
  CURLOPT_FORBID_REUSE.3                        \
  CURLOPT_FRESH_CONNECT.3                       \


  CURLOPT_FTP_ACCOUNT.3                         \
  CURLOPT_FTP_ALTERNATIVE_TO_USER.3             \
  CURLOPT_FTP_CREATE_MISSING_DIRS.3             \
  CURLOPT_FTP_FILEMETHOD.3                      \

  CURLOPT_FTP_SKIP_PASV_IP.3                    \
  CURLOPT_FTP_SSL_CCC.3                         \
  CURLOPT_FTP_USE_EPRT.3                        \
  CURLOPT_FTP_USE_EPSV.3                        \
  CURLOPT_FTP_USE_PRET.3                        \
  CURLOPT_FTPPORT.3                             \
  CURLOPT_FTPSSLAUTH.3                          \
  CURLOPT_GSSAPI_DELEGATION.3                   \
  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
  CURLOPT_HAPROXYPROTOCOL.3                     \
  CURLOPT_HEADER.3                              \
  CURLOPT_HEADERDATA.3                          \
  CURLOPT_HEADERFUNCTION.3                      \
  CURLOPT_HEADEROPT.3                           \
  CURLOPT_HSTS.3                                \
  CURLOPT_HSTS_CTRL.3                           \
  CURLOPT_HSTSREADDATA.3                        \
  CURLOPT_HSTSREADFUNCTION.3                    \
  CURLOPT_HSTSWRITEDATA.3                       \
  CURLOPT_HSTSWRITEFUNCTION.3                   \

  CURLOPT_HTTP09_ALLOWED.3                      \
  CURLOPT_HTTP200ALIASES.3                      \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_HTTPAUTH.3                            \
  CURLOPT_HTTPGET.3                             \
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \



  CURLOPT_IGNORE_CONTENT_LENGTH.3               \
  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \
642
643
644
645
646
647
648


649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
  CURLOPT_LOGIN_OPTIONS.3                       \
  CURLOPT_LOW_SPEED_LIMIT.3                     \
  CURLOPT_LOW_SPEED_TIME.3                      \
  CURLOPT_MAIL_AUTH.3                           \
  CURLOPT_MAIL_FROM.3                           \
  CURLOPT_MAIL_RCPT.3                           \
  CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \


  CURLOPT_MAXAGE_CONN.3                         \
  CURLOPT_MAXCONNECTS.3                         \
  CURLOPT_MAXFILESIZE.3                         \
  CURLOPT_MAXFILESIZE_LARGE.3                   \
  CURLOPT_MAXLIFETIME_CONN.3                    \
  CURLOPT_MAXREDIRS.3                           \
  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
  CURLOPT_MIMEPOST.3                            \
  CURLOPT_MIME_OPTIONS.3                        \
  CURLOPT_NETRC.3                               \
  CURLOPT_NETRC_FILE.3                          \
  CURLOPT_NEW_DIRECTORY_PERMS.3                 \
  CURLOPT_NEW_FILE_PERMS.3                      \
  CURLOPT_NOBODY.3                              \
  CURLOPT_NOPROGRESS.3                          \
  CURLOPT_NOPROXY.3                             \







>
>






|
<

<







642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657

658

659
660
661
662
663
664
665
  CURLOPT_LOGIN_OPTIONS.3                       \
  CURLOPT_LOW_SPEED_LIMIT.3                     \
  CURLOPT_LOW_SPEED_TIME.3                      \
  CURLOPT_MAIL_AUTH.3                           \
  CURLOPT_MAIL_FROM.3                           \
  CURLOPT_MAIL_RCPT.3                           \
  CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \
  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
  CURLOPT_MAXAGE_CONN.3                         \
  CURLOPT_MAXCONNECTS.3                         \
  CURLOPT_MAXFILESIZE.3                         \
  CURLOPT_MAXFILESIZE_LARGE.3                   \
  CURLOPT_MAXLIFETIME_CONN.3                    \
  CURLOPT_MAXREDIRS.3                           \
  CURLOPT_MIME_OPTIONS.3                        \

  CURLOPT_MIMEPOST.3                            \

  CURLOPT_NETRC.3                               \
  CURLOPT_NETRC_FILE.3                          \
  CURLOPT_NEW_DIRECTORY_PERMS.3                 \
  CURLOPT_NEW_FILE_PERMS.3                      \
  CURLOPT_NOBODY.3                              \
  CURLOPT_NOPROGRESS.3                          \
  CURLOPT_NOPROXY.3                             \
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
  CURLOPT_PORT.3                                \
  CURLOPT_POST.3                                \
  CURLOPT_POSTFIELDS.3                          \
  CURLOPT_POSTFIELDSIZE.3                       \
  CURLOPT_POSTFIELDSIZE_LARGE.3                 \
  CURLOPT_POSTQUOTE.3                           \
  CURLOPT_POSTREDIR.3                           \

  CURLOPT_PREQUOTE.3                            \
  CURLOPT_PREREQDATA.3                          \
  CURLOPT_PREREQFUNCTION.3                      \
  CURLOPT_PRE_PROXY.3                           \
  CURLOPT_PRIVATE.3                             \
  CURLOPT_PROGRESSDATA.3                        \
  CURLOPT_PROGRESSFUNCTION.3                    \
  CURLOPT_PROTOCOLS.3                           \
  CURLOPT_PROXY.3                               \
  CURLOPT_PROXYAUTH.3                           \
  CURLOPT_PROXYHEADER.3                         \
  CURLOPT_PROXYPASSWORD.3                       \
  CURLOPT_PROXYPORT.3                           \
  CURLOPT_PROXYTYPE.3                           \
  CURLOPT_PROXYUSERNAME.3                       \
  CURLOPT_PROXYUSERPWD.3                        \
  CURLOPT_PROXY_CAINFO.3                        \
  CURLOPT_PROXY_CAINFO_BLOB.3                   \
  CURLOPT_PROXY_CAPATH.3                        \
  CURLOPT_PROXY_CRLFILE.3                       \
  CURLOPT_PROXY_KEYPASSWD.3                     \
  CURLOPT_PROXY_ISSUERCERT.3                    \
  CURLOPT_PROXY_ISSUERCERT_BLOB.3               \

  CURLOPT_PROXY_PINNEDPUBLICKEY.3               \
  CURLOPT_PROXY_SERVICE_NAME.3                  \




  CURLOPT_PROXY_SSLCERT.3                       \
  CURLOPT_PROXY_SSLCERT_BLOB.3                  \
  CURLOPT_PROXY_SSLCERTTYPE.3                   \
  CURLOPT_PROXY_SSLKEY.3                        \
  CURLOPT_PROXY_SSLKEY_BLOB.3                   \
  CURLOPT_PROXY_SSLKEYTYPE.3                    \
  CURLOPT_PROXY_SSLVERSION.3                    \
  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
  CURLOPT_PROXY_SSL_OPTIONS.3                   \
  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
  CURLOPT_PROXY_TLS13_CIPHERS.3                 \
  CURLOPT_PROXY_TLSAUTH_PASSWORD.3              \
  CURLOPT_PROXY_TLSAUTH_TYPE.3                  \
  CURLOPT_PROXY_TLSAUTH_USERNAME.3              \
  CURLOPT_PROXY_TRANSFER_MODE.3                 \







  CURLOPT_PUT.3                                 \
  CURLOPT_QUOTE.3                               \
  CURLOPT_RANDOM_FILE.3                         \
  CURLOPT_RANGE.3                               \
  CURLOPT_READDATA.3                            \
  CURLOPT_READFUNCTION.3                        \
  CURLOPT_REDIR_PROTOCOLS.3                     \

  CURLOPT_REFERER.3                             \
  CURLOPT_REQUEST_TARGET.3                      \
  CURLOPT_RESOLVE.3                             \
  CURLOPT_RESOLVER_START_DATA.3                 \
  CURLOPT_RESOLVER_START_FUNCTION.3             \
  CURLOPT_RESUME_FROM.3                         \
  CURLOPT_RESUME_FROM_LARGE.3                   \
  CURLOPT_RTSP_CLIENT_CSEQ.3                    \
  CURLOPT_RTSP_REQUEST.3                        \
  CURLOPT_RTSP_SERVER_CSEQ.3                    \
  CURLOPT_RTSP_SESSION_ID.3                     \
  CURLOPT_RTSP_STREAM_URI.3                     \
  CURLOPT_RTSP_TRANSPORT.3                      \
  CURLOPT_SASL_AUTHZID.3                        \
  CURLOPT_SASL_IR.3                             \
  CURLOPT_SEEKDATA.3                            \
  CURLOPT_SEEKFUNCTION.3                        \

  CURLOPT_SERVICE_NAME.3                        \
  CURLOPT_SHARE.3                               \
  CURLOPT_SOCKOPTDATA.3                         \
  CURLOPT_SOCKOPTFUNCTION.3                     \
  CURLOPT_SOCKS5_AUTH.3                         \
  CURLOPT_SOCKS5_GSSAPI_NEC.3                   \
  CURLOPT_SOCKS5_GSSAPI_SERVICE.3               \
  CURLOPT_SSH_AUTH_TYPES.3                      \
  CURLOPT_SSH_COMPRESSION.3                     \
  CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3             \
  CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3          \
  CURLOPT_SSH_KEYDATA.3                         \
  CURLOPT_SSH_KEYFUNCTION.3                     \
  CURLOPT_SSH_KNOWNHOSTS.3                      \
  CURLOPT_SSH_PRIVATE_KEYFILE.3                 \
  CURLOPT_SSH_PUBLIC_KEYFILE.3                  \
  CURLOPT_SSLCERT.3                             \
  CURLOPT_SSLCERT_BLOB.3                        \
  CURLOPT_SSLCERTTYPE.3                         \
  CURLOPT_SSLENGINE.3                           \
  CURLOPT_SSLENGINE_DEFAULT.3                   \
  CURLOPT_SSLKEY.3                              \
  CURLOPT_SSLKEY_BLOB.3                         \
  CURLOPT_SSLKEYTYPE.3                          \
  CURLOPT_SSLVERSION.3                          \
  CURLOPT_SSL_CIPHER_LIST.3                     \
  CURLOPT_SSL_CTX_DATA.3                        \
  CURLOPT_SSL_CTX_FUNCTION.3                    \
  CURLOPT_SSL_EC_CURVES.3			\
  CURLOPT_SSL_ENABLE_ALPN.3                     \
  CURLOPT_SSL_ENABLE_NPN.3                      \
  CURLOPT_SSL_FALSESTART.3                      \
  CURLOPT_SSL_OPTIONS.3                         \
  CURLOPT_SSL_SESSIONID_CACHE.3                 \
  CURLOPT_SSL_VERIFYHOST.3                      \
  CURLOPT_SSL_VERIFYPEER.3                      \
  CURLOPT_SSL_VERIFYSTATUS.3                    \









  CURLOPT_STDERR.3                              \
  CURLOPT_STREAM_DEPENDS.3                      \
  CURLOPT_STREAM_DEPENDS_E.3                    \
  CURLOPT_STREAM_WEIGHT.3                       \
  CURLOPT_SUPPRESS_CONNECT_HEADERS.3            \
  CURLOPT_TCP_FASTOPEN.3                        \
  CURLOPT_TCP_KEEPALIVE.3                       \







>



<




<
<
<
|
|
<
<
<




<


>


>
>
>
>







<
<
<
<





>
>
>
>
>
>
>







>

















>
















<
<
<
<
<
<
<
<
<












>
>
>
>
>
>
>
>
>







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
  CURLOPT_PORT.3                                \
  CURLOPT_POST.3                                \
  CURLOPT_POSTFIELDS.3                          \
  CURLOPT_POSTFIELDSIZE.3                       \
  CURLOPT_POSTFIELDSIZE_LARGE.3                 \
  CURLOPT_POSTQUOTE.3                           \
  CURLOPT_POSTREDIR.3                           \
  CURLOPT_PRE_PROXY.3                           \
  CURLOPT_PREQUOTE.3                            \
  CURLOPT_PREREQDATA.3                          \
  CURLOPT_PREREQFUNCTION.3                      \

  CURLOPT_PRIVATE.3                             \
  CURLOPT_PROGRESSDATA.3                        \
  CURLOPT_PROGRESSFUNCTION.3                    \
  CURLOPT_PROTOCOLS.3                           \



  CURLOPT_PROTOCOLS_STR.3                       \
  CURLOPT_PROXY.3                               \



  CURLOPT_PROXY_CAINFO.3                        \
  CURLOPT_PROXY_CAINFO_BLOB.3                   \
  CURLOPT_PROXY_CAPATH.3                        \
  CURLOPT_PROXY_CRLFILE.3                       \

  CURLOPT_PROXY_ISSUERCERT.3                    \
  CURLOPT_PROXY_ISSUERCERT_BLOB.3               \
  CURLOPT_PROXY_KEYPASSWD.3                     \
  CURLOPT_PROXY_PINNEDPUBLICKEY.3               \
  CURLOPT_PROXY_SERVICE_NAME.3                  \
  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
  CURLOPT_PROXY_SSL_OPTIONS.3                   \
  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
  CURLOPT_PROXY_SSLCERT.3                       \
  CURLOPT_PROXY_SSLCERT_BLOB.3                  \
  CURLOPT_PROXY_SSLCERTTYPE.3                   \
  CURLOPT_PROXY_SSLKEY.3                        \
  CURLOPT_PROXY_SSLKEY_BLOB.3                   \
  CURLOPT_PROXY_SSLKEYTYPE.3                    \
  CURLOPT_PROXY_SSLVERSION.3                    \




  CURLOPT_PROXY_TLS13_CIPHERS.3                 \
  CURLOPT_PROXY_TLSAUTH_PASSWORD.3              \
  CURLOPT_PROXY_TLSAUTH_TYPE.3                  \
  CURLOPT_PROXY_TLSAUTH_USERNAME.3              \
  CURLOPT_PROXY_TRANSFER_MODE.3                 \
  CURLOPT_PROXYAUTH.3                           \
  CURLOPT_PROXYHEADER.3                         \
  CURLOPT_PROXYPASSWORD.3                       \
  CURLOPT_PROXYPORT.3                           \
  CURLOPT_PROXYTYPE.3                           \
  CURLOPT_PROXYUSERNAME.3                       \
  CURLOPT_PROXYUSERPWD.3                        \
  CURLOPT_PUT.3                                 \
  CURLOPT_QUOTE.3                               \
  CURLOPT_RANDOM_FILE.3                         \
  CURLOPT_RANGE.3                               \
  CURLOPT_READDATA.3                            \
  CURLOPT_READFUNCTION.3                        \
  CURLOPT_REDIR_PROTOCOLS.3                     \
  CURLOPT_REDIR_PROTOCOLS_STR.3                 \
  CURLOPT_REFERER.3                             \
  CURLOPT_REQUEST_TARGET.3                      \
  CURLOPT_RESOLVE.3                             \
  CURLOPT_RESOLVER_START_DATA.3                 \
  CURLOPT_RESOLVER_START_FUNCTION.3             \
  CURLOPT_RESUME_FROM.3                         \
  CURLOPT_RESUME_FROM_LARGE.3                   \
  CURLOPT_RTSP_CLIENT_CSEQ.3                    \
  CURLOPT_RTSP_REQUEST.3                        \
  CURLOPT_RTSP_SERVER_CSEQ.3                    \
  CURLOPT_RTSP_SESSION_ID.3                     \
  CURLOPT_RTSP_STREAM_URI.3                     \
  CURLOPT_RTSP_TRANSPORT.3                      \
  CURLOPT_SASL_AUTHZID.3                        \
  CURLOPT_SASL_IR.3                             \
  CURLOPT_SEEKDATA.3                            \
  CURLOPT_SEEKFUNCTION.3                        \
  CURLOPT_SERVER_RESPONSE_TIMEOUT.3             \
  CURLOPT_SERVICE_NAME.3                        \
  CURLOPT_SHARE.3                               \
  CURLOPT_SOCKOPTDATA.3                         \
  CURLOPT_SOCKOPTFUNCTION.3                     \
  CURLOPT_SOCKS5_AUTH.3                         \
  CURLOPT_SOCKS5_GSSAPI_NEC.3                   \
  CURLOPT_SOCKS5_GSSAPI_SERVICE.3               \
  CURLOPT_SSH_AUTH_TYPES.3                      \
  CURLOPT_SSH_COMPRESSION.3                     \
  CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3             \
  CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3          \
  CURLOPT_SSH_KEYDATA.3                         \
  CURLOPT_SSH_KEYFUNCTION.3                     \
  CURLOPT_SSH_KNOWNHOSTS.3                      \
  CURLOPT_SSH_PRIVATE_KEYFILE.3                 \
  CURLOPT_SSH_PUBLIC_KEYFILE.3                  \









  CURLOPT_SSL_CIPHER_LIST.3                     \
  CURLOPT_SSL_CTX_DATA.3                        \
  CURLOPT_SSL_CTX_FUNCTION.3                    \
  CURLOPT_SSL_EC_CURVES.3			\
  CURLOPT_SSL_ENABLE_ALPN.3                     \
  CURLOPT_SSL_ENABLE_NPN.3                      \
  CURLOPT_SSL_FALSESTART.3                      \
  CURLOPT_SSL_OPTIONS.3                         \
  CURLOPT_SSL_SESSIONID_CACHE.3                 \
  CURLOPT_SSL_VERIFYHOST.3                      \
  CURLOPT_SSL_VERIFYPEER.3                      \
  CURLOPT_SSL_VERIFYSTATUS.3                    \
  CURLOPT_SSLCERT.3                             \
  CURLOPT_SSLCERT_BLOB.3                        \
  CURLOPT_SSLCERTTYPE.3                         \
  CURLOPT_SSLENGINE.3                           \
  CURLOPT_SSLENGINE_DEFAULT.3                   \
  CURLOPT_SSLKEY.3                              \
  CURLOPT_SSLKEY_BLOB.3                         \
  CURLOPT_SSLKEYTYPE.3                          \
  CURLOPT_SSLVERSION.3                          \
  CURLOPT_STDERR.3                              \
  CURLOPT_STREAM_DEPENDS.3                      \
  CURLOPT_STREAM_DEPENDS_E.3                    \
  CURLOPT_STREAM_WEIGHT.3                       \
  CURLOPT_SUPPRESS_CONNECT_HEADERS.3            \
  CURLOPT_TCP_FASTOPEN.3                        \
  CURLOPT_TCP_KEEPALIVE.3                       \
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
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \
  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_TRANSFER_ENCODING.3                   \

  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \
  CURLOPT_UPKEEP_INTERVAL_MS.3                  \
  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \

  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \
  CURLOPT_USE_SSL.3                             \
  CURLOPT_AWS_SIGV4.3                           \
  CURLOPT_VERBOSE.3                             \
  CURLOPT_WILDCARDMATCH.3                       \
  CURLOPT_WRITEDATA.3                           \
  CURLOPT_WRITEFUNCTION.3                       \
  CURLOPT_XFERINFODATA.3                        \
  CURLOPT_XFERINFOFUNCTION.3                    \
  CURLOPT_XOAUTH2_BEARER.3                      \







<

>






>



<
<







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
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \

  CURLOPT_TRANSFER_ENCODING.3                   \
  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \
  CURLOPT_UPKEEP_INTERVAL_MS.3                  \
  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \
  CURLOPT_USE_SSL.3                             \
  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \


  CURLOPT_VERBOSE.3                             \
  CURLOPT_WILDCARDMATCH.3                       \
  CURLOPT_WRITEDATA.3                           \
  CURLOPT_WRITEFUNCTION.3                       \
  CURLOPT_XFERINFODATA.3                        \
  CURLOPT_XFERINFOFUNCTION.3                    \
  CURLOPT_XOAUTH2_BEARER.3                      \
Changes to jni/curl/docs/libcurl/opts/Makefile.inc.
41
42
43
44
45
46
47
48
49
50

51
52
53
54
55
56
57
  CURLINFO_COOKIELIST.3                         \
  CURLINFO_EFFECTIVE_METHOD.3                   \
  CURLINFO_EFFECTIVE_URL.3                      \
  CURLINFO_FILETIME.3                           \
  CURLINFO_FILETIME_T.3                         \
  CURLINFO_FTP_ENTRY_PATH.3                     \
  CURLINFO_HEADER_SIZE.3                        \
  CURLINFO_HTTPAUTH_AVAIL.3                     \
  CURLINFO_HTTP_CONNECTCODE.3                   \
  CURLINFO_HTTP_VERSION.3                       \

  CURLINFO_LASTSOCKET.3                         \
  CURLINFO_LOCAL_IP.3                           \
  CURLINFO_LOCAL_PORT.3                         \
  CURLINFO_NAMELOOKUP_TIME.3                    \
  CURLINFO_NAMELOOKUP_TIME_T.3                  \
  CURLINFO_NUM_CONNECTS.3                       \
  CURLINFO_OS_ERRNO.3                           \







<


>







41
42
43
44
45
46
47

48
49
50
51
52
53
54
55
56
57
  CURLINFO_COOKIELIST.3                         \
  CURLINFO_EFFECTIVE_METHOD.3                   \
  CURLINFO_EFFECTIVE_URL.3                      \
  CURLINFO_FILETIME.3                           \
  CURLINFO_FILETIME_T.3                         \
  CURLINFO_FTP_ENTRY_PATH.3                     \
  CURLINFO_HEADER_SIZE.3                        \

  CURLINFO_HTTP_CONNECTCODE.3                   \
  CURLINFO_HTTP_VERSION.3                       \
  CURLINFO_HTTPAUTH_AVAIL.3                     \
  CURLINFO_LASTSOCKET.3                         \
  CURLINFO_LOCAL_IP.3                           \
  CURLINFO_LOCAL_PORT.3                         \
  CURLINFO_NAMELOOKUP_TIME.3                    \
  CURLINFO_NAMELOOKUP_TIME_T.3                  \
  CURLINFO_NUM_CONNECTS.3                       \
  CURLINFO_OS_ERRNO.3                           \
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
  CURLINFO_STARTTRANSFER_TIME_T.3               \
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
  CURLMOPT_MAXCONNECTS.3                        \
  CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \

  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \
  CURLMOPT_PUSHFUNCTION.3                       \
  CURLMOPT_SOCKETDATA.3                         \
  CURLMOPT_SOCKETFUNCTION.3                     \
  CURLMOPT_TIMERDATA.3                          \
  CURLMOPT_TIMERFUNCTION.3                      \
  CURLOPT_ABSTRACT_UNIX_SOCKET.3                \
  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
  CURLOPT_ACCEPT_ENCODING.3                     \

  CURLOPT_ADDRESS_SCOPE.3                       \
  CURLOPT_ALTSVC.3                              \
  CURLOPT_ALTSVC_CTRL.3                         \
  CURLOPT_APPEND.3                              \
  CURLOPT_AUTOREFERER.3                         \

  CURLOPT_BUFFERSIZE.3                          \
  CURLOPT_CAINFO.3                              \
  CURLOPT_CAINFO_BLOB.3                         \
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \
  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \


  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \







<




>










<

>





>










<
<


>
>







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
  CURLINFO_STARTTRANSFER_TIME_T.3               \
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \

  CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
  CURLMOPT_MAXCONNECTS.3                        \
  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \
  CURLMOPT_PUSHFUNCTION.3                       \
  CURLMOPT_SOCKETDATA.3                         \
  CURLMOPT_SOCKETFUNCTION.3                     \
  CURLMOPT_TIMERDATA.3                          \
  CURLMOPT_TIMERFUNCTION.3                      \
  CURLOPT_ABSTRACT_UNIX_SOCKET.3                \

  CURLOPT_ACCEPT_ENCODING.3                     \
  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
  CURLOPT_ADDRESS_SCOPE.3                       \
  CURLOPT_ALTSVC.3                              \
  CURLOPT_ALTSVC_CTRL.3                         \
  CURLOPT_APPEND.3                              \
  CURLOPT_AUTOREFERER.3                         \
  CURLOPT_AWS_SIGV4.3                           \
  CURLOPT_BUFFERSIZE.3                          \
  CURLOPT_CAINFO.3                              \
  CURLOPT_CAINFO_BLOB.3                         \
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \


  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \
  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \
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
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \
  CURLOPT_FNMATCH_FUNCTION.3                    \
  CURLOPT_FOLLOWLOCATION.3                      \
  CURLOPT_FORBID_REUSE.3                        \
  CURLOPT_FRESH_CONNECT.3                       \
  CURLOPT_FTPPORT.3                             \
  CURLOPT_FTPSSLAUTH.3                          \
  CURLOPT_FTP_ACCOUNT.3                         \
  CURLOPT_FTP_ALTERNATIVE_TO_USER.3             \
  CURLOPT_FTP_CREATE_MISSING_DIRS.3             \
  CURLOPT_FTP_FILEMETHOD.3                      \
  CURLOPT_FTP_RESPONSE_TIMEOUT.3                \
  CURLOPT_FTP_SKIP_PASV_IP.3                    \
  CURLOPT_FTP_SSL_CCC.3                         \
  CURLOPT_FTP_USE_EPRT.3                        \
  CURLOPT_FTP_USE_EPSV.3                        \
  CURLOPT_FTP_USE_PRET.3                        \


  CURLOPT_GSSAPI_DELEGATION.3                   \
  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
  CURLOPT_HAPROXYPROTOCOL.3                     \
  CURLOPT_HEADER.3                              \
  CURLOPT_HEADERDATA.3                          \
  CURLOPT_HEADERFUNCTION.3                      \
  CURLOPT_HEADEROPT.3                           \
  CURLOPT_HSTS.3                                \

  CURLOPT_HSTSREADDATA.3                        \
  CURLOPT_HSTSREADFUNCTION.3                    \
  CURLOPT_HSTSWRITEDATA.3                       \
  CURLOPT_HSTSWRITEFUNCTION.3                   \
  CURLOPT_HSTS_CTRL.3                           \
  CURLOPT_HTTP09_ALLOWED.3                      \
  CURLOPT_HTTP200ALIASES.3                      \



  CURLOPT_HTTPAUTH.3                            \
  CURLOPT_HTTPGET.3                             \
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_IGNORE_CONTENT_LENGTH.3               \
  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \







<
<




<





>
>








>




<


>
>
>





<
<
<







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
  CURLOPT_FAILONERROR.3                         \
  CURLOPT_FILETIME.3                            \
  CURLOPT_FNMATCH_DATA.3                        \
  CURLOPT_FNMATCH_FUNCTION.3                    \
  CURLOPT_FOLLOWLOCATION.3                      \
  CURLOPT_FORBID_REUSE.3                        \
  CURLOPT_FRESH_CONNECT.3                       \


  CURLOPT_FTP_ACCOUNT.3                         \
  CURLOPT_FTP_ALTERNATIVE_TO_USER.3             \
  CURLOPT_FTP_CREATE_MISSING_DIRS.3             \
  CURLOPT_FTP_FILEMETHOD.3                      \

  CURLOPT_FTP_SKIP_PASV_IP.3                    \
  CURLOPT_FTP_SSL_CCC.3                         \
  CURLOPT_FTP_USE_EPRT.3                        \
  CURLOPT_FTP_USE_EPSV.3                        \
  CURLOPT_FTP_USE_PRET.3                        \
  CURLOPT_FTPPORT.3                             \
  CURLOPT_FTPSSLAUTH.3                          \
  CURLOPT_GSSAPI_DELEGATION.3                   \
  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
  CURLOPT_HAPROXYPROTOCOL.3                     \
  CURLOPT_HEADER.3                              \
  CURLOPT_HEADERDATA.3                          \
  CURLOPT_HEADERFUNCTION.3                      \
  CURLOPT_HEADEROPT.3                           \
  CURLOPT_HSTS.3                                \
  CURLOPT_HSTS_CTRL.3                           \
  CURLOPT_HSTSREADDATA.3                        \
  CURLOPT_HSTSREADFUNCTION.3                    \
  CURLOPT_HSTSWRITEDATA.3                       \
  CURLOPT_HSTSWRITEFUNCTION.3                   \

  CURLOPT_HTTP09_ALLOWED.3                      \
  CURLOPT_HTTP200ALIASES.3                      \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_HTTPAUTH.3                            \
  CURLOPT_HTTPGET.3                             \
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \



  CURLOPT_IGNORE_CONTENT_LENGTH.3               \
  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \
224
225
226
227
228
229
230


231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
  CURLOPT_LOGIN_OPTIONS.3                       \
  CURLOPT_LOW_SPEED_LIMIT.3                     \
  CURLOPT_LOW_SPEED_TIME.3                      \
  CURLOPT_MAIL_AUTH.3                           \
  CURLOPT_MAIL_FROM.3                           \
  CURLOPT_MAIL_RCPT.3                           \
  CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \


  CURLOPT_MAXAGE_CONN.3                         \
  CURLOPT_MAXCONNECTS.3                         \
  CURLOPT_MAXFILESIZE.3                         \
  CURLOPT_MAXFILESIZE_LARGE.3                   \
  CURLOPT_MAXLIFETIME_CONN.3                    \
  CURLOPT_MAXREDIRS.3                           \
  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
  CURLOPT_MIMEPOST.3                            \
  CURLOPT_MIME_OPTIONS.3                        \
  CURLOPT_NETRC.3                               \
  CURLOPT_NETRC_FILE.3                          \
  CURLOPT_NEW_DIRECTORY_PERMS.3                 \
  CURLOPT_NEW_FILE_PERMS.3                      \
  CURLOPT_NOBODY.3                              \
  CURLOPT_NOPROGRESS.3                          \
  CURLOPT_NOPROXY.3                             \







>
>






|
<

<







224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239

240

241
242
243
244
245
246
247
  CURLOPT_LOGIN_OPTIONS.3                       \
  CURLOPT_LOW_SPEED_LIMIT.3                     \
  CURLOPT_LOW_SPEED_TIME.3                      \
  CURLOPT_MAIL_AUTH.3                           \
  CURLOPT_MAIL_FROM.3                           \
  CURLOPT_MAIL_RCPT.3                           \
  CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \
  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
  CURLOPT_MAXAGE_CONN.3                         \
  CURLOPT_MAXCONNECTS.3                         \
  CURLOPT_MAXFILESIZE.3                         \
  CURLOPT_MAXFILESIZE_LARGE.3                   \
  CURLOPT_MAXLIFETIME_CONN.3                    \
  CURLOPT_MAXREDIRS.3                           \
  CURLOPT_MIME_OPTIONS.3                        \

  CURLOPT_MIMEPOST.3                            \

  CURLOPT_NETRC.3                               \
  CURLOPT_NETRC_FILE.3                          \
  CURLOPT_NEW_DIRECTORY_PERMS.3                 \
  CURLOPT_NEW_FILE_PERMS.3                      \
  CURLOPT_NOBODY.3                              \
  CURLOPT_NOPROGRESS.3                          \
  CURLOPT_NOPROXY.3                             \
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
  CURLOPT_PORT.3                                \
  CURLOPT_POST.3                                \
  CURLOPT_POSTFIELDS.3                          \
  CURLOPT_POSTFIELDSIZE.3                       \
  CURLOPT_POSTFIELDSIZE_LARGE.3                 \
  CURLOPT_POSTQUOTE.3                           \
  CURLOPT_POSTREDIR.3                           \

  CURLOPT_PREQUOTE.3                            \
  CURLOPT_PREREQDATA.3                          \
  CURLOPT_PREREQFUNCTION.3                      \
  CURLOPT_PRE_PROXY.3                           \
  CURLOPT_PRIVATE.3                             \
  CURLOPT_PROGRESSDATA.3                        \
  CURLOPT_PROGRESSFUNCTION.3                    \
  CURLOPT_PROTOCOLS.3                           \
  CURLOPT_PROXY.3                               \
  CURLOPT_PROXYAUTH.3                           \
  CURLOPT_PROXYHEADER.3                         \
  CURLOPT_PROXYPASSWORD.3                       \
  CURLOPT_PROXYPORT.3                           \
  CURLOPT_PROXYTYPE.3                           \
  CURLOPT_PROXYUSERNAME.3                       \
  CURLOPT_PROXYUSERPWD.3                        \
  CURLOPT_PROXY_CAINFO.3                        \
  CURLOPT_PROXY_CAINFO_BLOB.3                   \
  CURLOPT_PROXY_CAPATH.3                        \
  CURLOPT_PROXY_CRLFILE.3                       \
  CURLOPT_PROXY_KEYPASSWD.3                     \
  CURLOPT_PROXY_ISSUERCERT.3                    \
  CURLOPT_PROXY_ISSUERCERT_BLOB.3               \

  CURLOPT_PROXY_PINNEDPUBLICKEY.3               \
  CURLOPT_PROXY_SERVICE_NAME.3                  \




  CURLOPT_PROXY_SSLCERT.3                       \
  CURLOPT_PROXY_SSLCERT_BLOB.3                  \
  CURLOPT_PROXY_SSLCERTTYPE.3                   \
  CURLOPT_PROXY_SSLKEY.3                        \
  CURLOPT_PROXY_SSLKEY_BLOB.3                   \
  CURLOPT_PROXY_SSLKEYTYPE.3                    \
  CURLOPT_PROXY_SSLVERSION.3                    \
  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
  CURLOPT_PROXY_SSL_OPTIONS.3                   \
  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
  CURLOPT_PROXY_TLS13_CIPHERS.3                 \
  CURLOPT_PROXY_TLSAUTH_PASSWORD.3              \
  CURLOPT_PROXY_TLSAUTH_TYPE.3                  \
  CURLOPT_PROXY_TLSAUTH_USERNAME.3              \
  CURLOPT_PROXY_TRANSFER_MODE.3                 \







  CURLOPT_PUT.3                                 \
  CURLOPT_QUOTE.3                               \
  CURLOPT_RANDOM_FILE.3                         \
  CURLOPT_RANGE.3                               \
  CURLOPT_READDATA.3                            \
  CURLOPT_READFUNCTION.3                        \
  CURLOPT_REDIR_PROTOCOLS.3                     \

  CURLOPT_REFERER.3                             \
  CURLOPT_REQUEST_TARGET.3                      \
  CURLOPT_RESOLVE.3                             \
  CURLOPT_RESOLVER_START_DATA.3                 \
  CURLOPT_RESOLVER_START_FUNCTION.3             \
  CURLOPT_RESUME_FROM.3                         \
  CURLOPT_RESUME_FROM_LARGE.3                   \
  CURLOPT_RTSP_CLIENT_CSEQ.3                    \
  CURLOPT_RTSP_REQUEST.3                        \
  CURLOPT_RTSP_SERVER_CSEQ.3                    \
  CURLOPT_RTSP_SESSION_ID.3                     \
  CURLOPT_RTSP_STREAM_URI.3                     \
  CURLOPT_RTSP_TRANSPORT.3                      \
  CURLOPT_SASL_AUTHZID.3                        \
  CURLOPT_SASL_IR.3                             \
  CURLOPT_SEEKDATA.3                            \
  CURLOPT_SEEKFUNCTION.3                        \

  CURLOPT_SERVICE_NAME.3                        \
  CURLOPT_SHARE.3                               \
  CURLOPT_SOCKOPTDATA.3                         \
  CURLOPT_SOCKOPTFUNCTION.3                     \
  CURLOPT_SOCKS5_AUTH.3                         \
  CURLOPT_SOCKS5_GSSAPI_NEC.3                   \
  CURLOPT_SOCKS5_GSSAPI_SERVICE.3               \
  CURLOPT_SSH_AUTH_TYPES.3                      \
  CURLOPT_SSH_COMPRESSION.3                     \
  CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3             \
  CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3          \
  CURLOPT_SSH_KEYDATA.3                         \
  CURLOPT_SSH_KEYFUNCTION.3                     \
  CURLOPT_SSH_KNOWNHOSTS.3                      \
  CURLOPT_SSH_PRIVATE_KEYFILE.3                 \
  CURLOPT_SSH_PUBLIC_KEYFILE.3                  \
  CURLOPT_SSLCERT.3                             \
  CURLOPT_SSLCERT_BLOB.3                        \
  CURLOPT_SSLCERTTYPE.3                         \
  CURLOPT_SSLENGINE.3                           \
  CURLOPT_SSLENGINE_DEFAULT.3                   \
  CURLOPT_SSLKEY.3                              \
  CURLOPT_SSLKEY_BLOB.3                         \
  CURLOPT_SSLKEYTYPE.3                          \
  CURLOPT_SSLVERSION.3                          \
  CURLOPT_SSL_CIPHER_LIST.3                     \
  CURLOPT_SSL_CTX_DATA.3                        \
  CURLOPT_SSL_CTX_FUNCTION.3                    \
  CURLOPT_SSL_EC_CURVES.3			\
  CURLOPT_SSL_ENABLE_ALPN.3                     \
  CURLOPT_SSL_ENABLE_NPN.3                      \
  CURLOPT_SSL_FALSESTART.3                      \
  CURLOPT_SSL_OPTIONS.3                         \
  CURLOPT_SSL_SESSIONID_CACHE.3                 \
  CURLOPT_SSL_VERIFYHOST.3                      \
  CURLOPT_SSL_VERIFYPEER.3                      \
  CURLOPT_SSL_VERIFYSTATUS.3                    \









  CURLOPT_STDERR.3                              \
  CURLOPT_STREAM_DEPENDS.3                      \
  CURLOPT_STREAM_DEPENDS_E.3                    \
  CURLOPT_STREAM_WEIGHT.3                       \
  CURLOPT_SUPPRESS_CONNECT_HEADERS.3            \
  CURLOPT_TCP_FASTOPEN.3                        \
  CURLOPT_TCP_KEEPALIVE.3                       \







>



<




<
<
<
|
|
<
<
<




<


>


>
>
>
>







<
<
<
<





>
>
>
>
>
>
>







>

















>
















<
<
<
<
<
<
<
<
<












>
>
>
>
>
>
>
>
>







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
  CURLOPT_PORT.3                                \
  CURLOPT_POST.3                                \
  CURLOPT_POSTFIELDS.3                          \
  CURLOPT_POSTFIELDSIZE.3                       \
  CURLOPT_POSTFIELDSIZE_LARGE.3                 \
  CURLOPT_POSTQUOTE.3                           \
  CURLOPT_POSTREDIR.3                           \
  CURLOPT_PRE_PROXY.3                           \
  CURLOPT_PREQUOTE.3                            \
  CURLOPT_PREREQDATA.3                          \
  CURLOPT_PREREQFUNCTION.3                      \

  CURLOPT_PRIVATE.3                             \
  CURLOPT_PROGRESSDATA.3                        \
  CURLOPT_PROGRESSFUNCTION.3                    \
  CURLOPT_PROTOCOLS.3                           \



  CURLOPT_PROTOCOLS_STR.3                       \
  CURLOPT_PROXY.3                               \



  CURLOPT_PROXY_CAINFO.3                        \
  CURLOPT_PROXY_CAINFO_BLOB.3                   \
  CURLOPT_PROXY_CAPATH.3                        \
  CURLOPT_PROXY_CRLFILE.3                       \

  CURLOPT_PROXY_ISSUERCERT.3                    \
  CURLOPT_PROXY_ISSUERCERT_BLOB.3               \
  CURLOPT_PROXY_KEYPASSWD.3                     \
  CURLOPT_PROXY_PINNEDPUBLICKEY.3               \
  CURLOPT_PROXY_SERVICE_NAME.3                  \
  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
  CURLOPT_PROXY_SSL_OPTIONS.3                   \
  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
  CURLOPT_PROXY_SSLCERT.3                       \
  CURLOPT_PROXY_SSLCERT_BLOB.3                  \
  CURLOPT_PROXY_SSLCERTTYPE.3                   \
  CURLOPT_PROXY_SSLKEY.3                        \
  CURLOPT_PROXY_SSLKEY_BLOB.3                   \
  CURLOPT_PROXY_SSLKEYTYPE.3                    \
  CURLOPT_PROXY_SSLVERSION.3                    \




  CURLOPT_PROXY_TLS13_CIPHERS.3                 \
  CURLOPT_PROXY_TLSAUTH_PASSWORD.3              \
  CURLOPT_PROXY_TLSAUTH_TYPE.3                  \
  CURLOPT_PROXY_TLSAUTH_USERNAME.3              \
  CURLOPT_PROXY_TRANSFER_MODE.3                 \
  CURLOPT_PROXYAUTH.3                           \
  CURLOPT_PROXYHEADER.3                         \
  CURLOPT_PROXYPASSWORD.3                       \
  CURLOPT_PROXYPORT.3                           \
  CURLOPT_PROXYTYPE.3                           \
  CURLOPT_PROXYUSERNAME.3                       \
  CURLOPT_PROXYUSERPWD.3                        \
  CURLOPT_PUT.3                                 \
  CURLOPT_QUOTE.3                               \
  CURLOPT_RANDOM_FILE.3                         \
  CURLOPT_RANGE.3                               \
  CURLOPT_READDATA.3                            \
  CURLOPT_READFUNCTION.3                        \
  CURLOPT_REDIR_PROTOCOLS.3                     \
  CURLOPT_REDIR_PROTOCOLS_STR.3                 \
  CURLOPT_REFERER.3                             \
  CURLOPT_REQUEST_TARGET.3                      \
  CURLOPT_RESOLVE.3                             \
  CURLOPT_RESOLVER_START_DATA.3                 \
  CURLOPT_RESOLVER_START_FUNCTION.3             \
  CURLOPT_RESUME_FROM.3                         \
  CURLOPT_RESUME_FROM_LARGE.3                   \
  CURLOPT_RTSP_CLIENT_CSEQ.3                    \
  CURLOPT_RTSP_REQUEST.3                        \
  CURLOPT_RTSP_SERVER_CSEQ.3                    \
  CURLOPT_RTSP_SESSION_ID.3                     \
  CURLOPT_RTSP_STREAM_URI.3                     \
  CURLOPT_RTSP_TRANSPORT.3                      \
  CURLOPT_SASL_AUTHZID.3                        \
  CURLOPT_SASL_IR.3                             \
  CURLOPT_SEEKDATA.3                            \
  CURLOPT_SEEKFUNCTION.3                        \
  CURLOPT_SERVER_RESPONSE_TIMEOUT.3             \
  CURLOPT_SERVICE_NAME.3                        \
  CURLOPT_SHARE.3                               \
  CURLOPT_SOCKOPTDATA.3                         \
  CURLOPT_SOCKOPTFUNCTION.3                     \
  CURLOPT_SOCKS5_AUTH.3                         \
  CURLOPT_SOCKS5_GSSAPI_NEC.3                   \
  CURLOPT_SOCKS5_GSSAPI_SERVICE.3               \
  CURLOPT_SSH_AUTH_TYPES.3                      \
  CURLOPT_SSH_COMPRESSION.3                     \
  CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3             \
  CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3          \
  CURLOPT_SSH_KEYDATA.3                         \
  CURLOPT_SSH_KEYFUNCTION.3                     \
  CURLOPT_SSH_KNOWNHOSTS.3                      \
  CURLOPT_SSH_PRIVATE_KEYFILE.3                 \
  CURLOPT_SSH_PUBLIC_KEYFILE.3                  \









  CURLOPT_SSL_CIPHER_LIST.3                     \
  CURLOPT_SSL_CTX_DATA.3                        \
  CURLOPT_SSL_CTX_FUNCTION.3                    \
  CURLOPT_SSL_EC_CURVES.3			\
  CURLOPT_SSL_ENABLE_ALPN.3                     \
  CURLOPT_SSL_ENABLE_NPN.3                      \
  CURLOPT_SSL_FALSESTART.3                      \
  CURLOPT_SSL_OPTIONS.3                         \
  CURLOPT_SSL_SESSIONID_CACHE.3                 \
  CURLOPT_SSL_VERIFYHOST.3                      \
  CURLOPT_SSL_VERIFYPEER.3                      \
  CURLOPT_SSL_VERIFYSTATUS.3                    \
  CURLOPT_SSLCERT.3                             \
  CURLOPT_SSLCERT_BLOB.3                        \
  CURLOPT_SSLCERTTYPE.3                         \
  CURLOPT_SSLENGINE.3                           \
  CURLOPT_SSLENGINE_DEFAULT.3                   \
  CURLOPT_SSLKEY.3                              \
  CURLOPT_SSLKEY_BLOB.3                         \
  CURLOPT_SSLKEYTYPE.3                          \
  CURLOPT_SSLVERSION.3                          \
  CURLOPT_STDERR.3                              \
  CURLOPT_STREAM_DEPENDS.3                      \
  CURLOPT_STREAM_DEPENDS_E.3                    \
  CURLOPT_STREAM_WEIGHT.3                       \
  CURLOPT_SUPPRESS_CONNECT_HEADERS.3            \
  CURLOPT_TCP_FASTOPEN.3                        \
  CURLOPT_TCP_KEEPALIVE.3                       \
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
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \
  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_TRANSFER_ENCODING.3                   \

  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \
  CURLOPT_UPKEEP_INTERVAL_MS.3                  \
  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \

  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \
  CURLOPT_USE_SSL.3                             \
  CURLOPT_AWS_SIGV4.3                           \
  CURLOPT_VERBOSE.3                             \
  CURLOPT_WILDCARDMATCH.3                       \
  CURLOPT_WRITEDATA.3                           \
  CURLOPT_WRITEFUNCTION.3                       \
  CURLOPT_XFERINFODATA.3                        \
  CURLOPT_XFERINFOFUNCTION.3                    \
  CURLOPT_XOAUTH2_BEARER.3                      \
  CURLSHOPT_LOCKFUNC.3                          \
  CURLSHOPT_SHARE.3                             \
  CURLSHOPT_UNLOCKFUNC.3                        \
  CURLSHOPT_UNSHARE.3                           \
  CURLSHOPT_USERDATA.3







<

>






>



<
<












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
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \

  CURLOPT_TRANSFER_ENCODING.3                   \
  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \
  CURLOPT_UPKEEP_INTERVAL_MS.3                  \
  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \
  CURLOPT_USE_SSL.3                             \
  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \


  CURLOPT_VERBOSE.3                             \
  CURLOPT_WILDCARDMATCH.3                       \
  CURLOPT_WRITEDATA.3                           \
  CURLOPT_WRITEFUNCTION.3                       \
  CURLOPT_XFERINFODATA.3                        \
  CURLOPT_XFERINFOFUNCTION.3                    \
  CURLOPT_XOAUTH2_BEARER.3                      \
  CURLSHOPT_LOCKFUNC.3                          \
  CURLSHOPT_SHARE.3                             \
  CURLSHOPT_UNLOCKFUNC.3                        \
  CURLSHOPT_UNSHARE.3                           \
  CURLSHOPT_USERDATA.3
Changes to jni/curl/docs/libcurl/symbols-in-versions.
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
CURLE_AUTH_ERROR                7.66.0
CURLE_BAD_CALLING_ORDER         7.1           7.17.0
CURLE_BAD_CONTENT_ENCODING      7.10
CURLE_BAD_DOWNLOAD_RESUME       7.10
CURLE_BAD_FUNCTION_ARGUMENT     7.1
CURLE_BAD_PASSWORD_ENTERED      7.4.2         7.17.0
CURLE_CHUNK_FAILED              7.21.0
CURLE_CONV_FAILED               7.15.4
CURLE_CONV_REQD                 7.15.4        7.82.0
CURLE_COULDNT_CONNECT           7.1
CURLE_COULDNT_RESOLVE_HOST      7.1
CURLE_COULDNT_RESOLVE_PROXY     7.1
CURLE_FAILED_INIT               7.1
CURLE_FILE_COULDNT_READ_FILE    7.1
CURLE_FILESIZE_EXCEEDED         7.10.8







|







213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
CURLE_AUTH_ERROR                7.66.0
CURLE_BAD_CALLING_ORDER         7.1           7.17.0
CURLE_BAD_CONTENT_ENCODING      7.10
CURLE_BAD_DOWNLOAD_RESUME       7.10
CURLE_BAD_FUNCTION_ARGUMENT     7.1
CURLE_BAD_PASSWORD_ENTERED      7.4.2         7.17.0
CURLE_CHUNK_FAILED              7.21.0
CURLE_CONV_FAILED               7.15.4        7.82.0
CURLE_CONV_REQD                 7.15.4        7.82.0
CURLE_COULDNT_CONNECT           7.1
CURLE_COULDNT_RESOLVE_HOST      7.1
CURLE_COULDNT_RESOLVE_PROXY     7.1
CURLE_FAILED_INIT               7.1
CURLE_FILE_COULDNT_READ_FILE    7.1
CURLE_FILESIZE_EXCEEDED         7.10.8
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
CURLOPT_FOLLOWLOCATION          7.1
CURLOPT_FORBID_REUSE            7.7
CURLOPT_FRESH_CONNECT           7.7
CURLOPT_FTP_ACCOUNT             7.13.0
CURLOPT_FTP_ALTERNATIVE_TO_USER 7.15.5
CURLOPT_FTP_CREATE_MISSING_DIRS 7.10.7
CURLOPT_FTP_FILEMETHOD          7.15.1
CURLOPT_FTP_RESPONSE_TIMEOUT    7.10.8
CURLOPT_FTP_SKIP_PASV_IP        7.15.0
CURLOPT_FTP_SSL                 7.11.0        7.16.4
CURLOPT_FTP_SSL_CCC             7.16.1
CURLOPT_FTP_USE_EPRT            7.10.5
CURLOPT_FTP_USE_EPSV            7.9.2
CURLOPT_FTP_USE_PRET            7.20.0
CURLOPT_FTPAPPEND               7.1           7.16.4







|







612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
CURLOPT_FOLLOWLOCATION          7.1
CURLOPT_FORBID_REUSE            7.7
CURLOPT_FRESH_CONNECT           7.7
CURLOPT_FTP_ACCOUNT             7.13.0
CURLOPT_FTP_ALTERNATIVE_TO_USER 7.15.5
CURLOPT_FTP_CREATE_MISSING_DIRS 7.10.7
CURLOPT_FTP_FILEMETHOD          7.15.1
CURLOPT_FTP_RESPONSE_TIMEOUT    7.10.8        7.85.0
CURLOPT_FTP_SKIP_PASV_IP        7.15.0
CURLOPT_FTP_SSL                 7.11.0        7.16.4
CURLOPT_FTP_SSL_CCC             7.16.1
CURLOPT_FTP_USE_EPRT            7.10.5
CURLOPT_FTP_USE_EPSV            7.9.2
CURLOPT_FTP_USE_PRET            7.20.0
CURLOPT_FTPAPPEND               7.1           7.16.4
718
719
720
721
722
723
724

725
726
727
728
729
730
731
CURLOPT_PREQUOTE                7.9.5
CURLOPT_PREREQDATA              7.80.0
CURLOPT_PREREQFUNCTION          7.80.0
CURLOPT_PRIVATE                 7.10.3
CURLOPT_PROGRESSDATA            7.1
CURLOPT_PROGRESSFUNCTION        7.1           7.32.0
CURLOPT_PROTOCOLS               7.19.4

CURLOPT_PROXY                   7.1
CURLOPT_PROXY_CAINFO            7.52.0
CURLOPT_PROXY_CAINFO_BLOB       7.77.0
CURLOPT_PROXY_CAPATH            7.52.0
CURLOPT_PROXY_CRLFILE           7.52.0
CURLOPT_PROXY_ISSUERCERT        7.71.0
CURLOPT_PROXY_ISSUERCERT_BLOB   7.71.0







>







718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
CURLOPT_PREQUOTE                7.9.5
CURLOPT_PREREQDATA              7.80.0
CURLOPT_PREREQFUNCTION          7.80.0
CURLOPT_PRIVATE                 7.10.3
CURLOPT_PROGRESSDATA            7.1
CURLOPT_PROGRESSFUNCTION        7.1           7.32.0
CURLOPT_PROTOCOLS               7.19.4
CURLOPT_PROTOCOLS_STR           7.85.0
CURLOPT_PROXY                   7.1
CURLOPT_PROXY_CAINFO            7.52.0
CURLOPT_PROXY_CAINFO_BLOB       7.77.0
CURLOPT_PROXY_CAPATH            7.52.0
CURLOPT_PROXY_CRLFILE           7.52.0
CURLOPT_PROXY_ISSUERCERT        7.71.0
CURLOPT_PROXY_ISSUERCERT_BLOB   7.71.0
758
759
760
761
762
763
764

765
766
767
768
769
770
771
CURLOPT_PUT                     7.1
CURLOPT_QUOTE                   7.1
CURLOPT_RANDOM_FILE             7.7
CURLOPT_RANGE                   7.1
CURLOPT_READDATA                7.9.7
CURLOPT_READFUNCTION            7.1
CURLOPT_REDIR_PROTOCOLS         7.19.4

CURLOPT_REFERER                 7.1
CURLOPT_REQUEST_TARGET          7.55.0
CURLOPT_RESOLVE                 7.21.3
CURLOPT_RESOLVER_START_DATA     7.59.0
CURLOPT_RESOLVER_START_FUNCTION 7.59.0
CURLOPT_RESUME_FROM             7.1
CURLOPT_RESUME_FROM_LARGE       7.11.0







>







759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
CURLOPT_PUT                     7.1
CURLOPT_QUOTE                   7.1
CURLOPT_RANDOM_FILE             7.7
CURLOPT_RANGE                   7.1
CURLOPT_READDATA                7.9.7
CURLOPT_READFUNCTION            7.1
CURLOPT_REDIR_PROTOCOLS         7.19.4
CURLOPT_REDIR_PROTOCOLS_STR     7.85.0
CURLOPT_REFERER                 7.1
CURLOPT_REQUEST_TARGET          7.55.0
CURLOPT_RESOLVE                 7.21.3
CURLOPT_RESOLVER_START_DATA     7.59.0
CURLOPT_RESOLVER_START_FUNCTION 7.59.0
CURLOPT_RESUME_FROM             7.1
CURLOPT_RESUME_FROM_LARGE       7.11.0
Changes to jni/curl/include/Makefile.in.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
344
345
346
347
348
349
350

351
352
353
354
355
356
357
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/include/curl/Makefile.in.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include/curl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include/curl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
331
332
333
334
335
336
337

338
339
340
341
342
343
344
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/include/curl/curl.h.
71
72
73
74
75
76
77
78

79
80
81
82
83
84
85
   libc5-based Linux systems. Only include it on systems that are known to
   require it! */
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
    defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
    defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
    defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
   (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
   (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000))

#include <sys/select.h>
#endif

#if !defined(CURL_WIN32) && !defined(_WIN32_WCE)
#include <sys/socket.h>
#endif








|
>







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
   libc5-based Linux systems. Only include it on systems that are known to
   require it! */
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
    defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
    defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
    defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
   (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
   (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
    defined(__sun__)
#include <sys/select.h>
#endif

#if !defined(CURL_WIN32) && !defined(_WIN32_WCE)
#include <sys/socket.h>
#endif

573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
  CURLE_TFTP_NOTFOUND,           /* 68 - file not found on server */
  CURLE_TFTP_PERM,               /* 69 - permission problem on server */
  CURLE_REMOTE_DISK_FULL,        /* 70 - out of disk space on server */
  CURLE_TFTP_ILLEGAL,            /* 71 - Illegal TFTP operation */
  CURLE_TFTP_UNKNOWNID,          /* 72 - Unknown transfer ID */
  CURLE_REMOTE_FILE_EXISTS,      /* 73 - File already exists */
  CURLE_TFTP_NOSUCHUSER,         /* 74 - No such user */
  CURLE_CONV_FAILED,             /* 75 - conversion failed */
  CURLE_OBSOLETE76,              /* 76 - NOT IN USE since 7.82.0 */
  CURLE_SSL_CACERT_BADFILE,      /* 77 - could not load CACERT file, missing
                                    or wrong format */
  CURLE_REMOTE_FILE_NOT_FOUND,   /* 78 - remote file not found */
  CURLE_SSH,                     /* 79 - error from the SSH layer, somewhat
                                    generic so the error message will be of
                                    interest when this has happened */







|







574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
  CURLE_TFTP_NOTFOUND,           /* 68 - file not found on server */
  CURLE_TFTP_PERM,               /* 69 - permission problem on server */
  CURLE_REMOTE_DISK_FULL,        /* 70 - out of disk space on server */
  CURLE_TFTP_ILLEGAL,            /* 71 - Illegal TFTP operation */
  CURLE_TFTP_UNKNOWNID,          /* 72 - Unknown transfer ID */
  CURLE_REMOTE_FILE_EXISTS,      /* 73 - File already exists */
  CURLE_TFTP_NOSUCHUSER,         /* 74 - No such user */
  CURLE_OBSOLETE75,              /* 75 - NOT IN USE since 7.82.0 */
  CURLE_OBSOLETE76,              /* 76 - NOT IN USE since 7.82.0 */
  CURLE_SSL_CACERT_BADFILE,      /* 77 - could not load CACERT file, missing
                                    or wrong format */
  CURLE_REMOTE_FILE_NOT_FOUND,   /* 78 - remote file not found */
  CURLE_SSH,                     /* 79 - error from the SSH layer, somewhat
                                    generic so the error message will be of
                                    interest when this has happened */
676
677
678
679
680
681
682

683
684
685
686
687
688
689
#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
#define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62
#define CURLE_CONV_REQD CURLE_OBSOLETE76


/* This was the error code 50 in 7.7.3 and a few earlier versions, this
   is no longer used by libcurl but is instead #defined here only to not
   make programs break */
#define CURLE_ALREADY_COMPLETE 99999

/* Provide defines for really old option names */







>







677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
#define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62
#define CURLE_CONV_REQD CURLE_OBSOLETE76
#define CURLE_CONV_FAILED CURLE_OBSOLETE75

/* This was the error code 50 in 7.7.3 and a few earlier versions, this
   is no longer used by libcurl but is instead #defined here only to not
   make programs break */
#define CURLE_ALREADY_COMPLETE 99999

/* Provide defines for really old option names */
1005
1006
1007
1008
1009
1010
1011
1012

1013
1014
1015
1016
1017
1018
1019
                                               struct curl_index *i,
                                               void *userp);

/* CURLHSTS_* are bits for the CURLOPT_HSTS option */
#define CURLHSTS_ENABLE       (long)(1<<0)
#define CURLHSTS_READONLYFILE (long)(1<<1)

/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */

#define CURLPROTO_HTTP   (1<<0)
#define CURLPROTO_HTTPS  (1<<1)
#define CURLPROTO_FTP    (1<<2)
#define CURLPROTO_FTPS   (1<<3)
#define CURLPROTO_SCP    (1<<4)
#define CURLPROTO_SFTP   (1<<5)
#define CURLPROTO_TELNET (1<<6)







|
>







1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
                                               struct curl_index *i,
                                               void *userp);

/* CURLHSTS_* are bits for the CURLOPT_HSTS option */
#define CURLHSTS_ENABLE       (long)(1<<0)
#define CURLHSTS_READONLYFILE (long)(1<<1)

/* The CURLPROTO_ defines below are for the **deprecated** CURLOPT_*PROTOCOLS
   options. Do not use. */
#define CURLPROTO_HTTP   (1<<0)
#define CURLPROTO_HTTPS  (1<<1)
#define CURLPROTO_FTP    (1<<2)
#define CURLPROTO_FTPS   (1<<3)
#define CURLPROTO_SCP    (1<<4)
#define CURLPROTO_SFTP   (1<<5)
#define CURLPROTO_TELNET (1<<6)
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
  CURLOPT(CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPTTYPE_LONG, 110),

  /* Set this to a bitmask value to enable the particular authentications
     methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
     Note that setting multiple bits may cause extra network round-trips. */
  CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111),

  /* FTP option that changes the timeout, in seconds, associated with
     getting a response.  This is different from transfer timeout time and
     essentially places a demand on the FTP server to acknowledge commands
     in a timely manner. */
  CURLOPT(CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT

  /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
     tell libcurl to use those IP versions only. This only has effect on
     systems with support for more than one, i.e IPv4 _and_ IPv6. */
  CURLOPT(CURLOPT_IPRESOLVE, CURLOPTTYPE_VALUES, 113),

  /* Set this option to limit the size of a file that will be downloaded from







|
|
|
|
|
<







1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485

1486
1487
1488
1489
1490
1491
1492
  CURLOPT(CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPTTYPE_LONG, 110),

  /* Set this to a bitmask value to enable the particular authentications
     methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
     Note that setting multiple bits may cause extra network round-trips. */
  CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111),

  /* Option that changes the timeout, in seconds, associated with getting a
     response.  This is different from transfer timeout time and essentially
     places a demand on the server to acknowledge commands in a timely
     manner. For FTP, SMTP, IMAP and POP3. */
  CURLOPT(CURLOPT_SERVER_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),


  /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
     tell libcurl to use those IP versions only. This only has effect on
     systems with support for more than one, i.e IPv4 _and_ IPv6. */
  CURLOPT(CURLOPT_IPRESOLVE, CURLOPTTYPE_VALUES, 113),

  /* Set this option to limit the size of a file that will be downloaded from
2139
2140
2141
2142
2143
2144
2145









2146
2147
2148
2149
2150
2151
2152
  /* set the SSH host key callback, must point to a curl_sshkeycallback
     function */
  CURLOPT(CURLOPT_SSH_HOSTKEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 316),

  /* set the SSH host key callback custom pointer */
  CURLOPT(CURLOPT_SSH_HOSTKEYDATA, CURLOPTTYPE_CBPOINT, 317),










  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 */







>
>
>
>
>
>
>
>
>







2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
  /* set the SSH host key callback, must point to a curl_sshkeycallback
     function */
  CURLOPT(CURLOPT_SSH_HOSTKEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 316),

  /* set the SSH host key callback custom pointer */
  CURLOPT(CURLOPT_SSH_HOSTKEYDATA, CURLOPTTYPE_CBPOINT, 317),

  /* specify which protocols that are allowed to be used for the transfer,
     which thus helps the app which takes URLs from users or other external
     inputs and want to restrict what protocol(s) to deal with. Defaults to
     all built-in protocols. */
  CURLOPT(CURLOPT_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 318),

  /* specify which protocols that libcurl is allowed to follow directs to */
  CURLOPT(CURLOPT_REDIR_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 319),

  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 */
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
2192
#define CURLOPT_FTP_SSL CURLOPT_USE_SSL

/* The following were added earlier */

#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL




#else
/* This is set if CURL_NO_OLDIES is defined at compile-time */
#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
#endif


  /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
     name resolves addresses using more than one IP protocol version, this
     option might be handy to force libcurl to use a specific IP version. */
#define CURL_IPRESOLVE_WHATEVER 0 /* default, uses addresses to all IP
                                     versions that your system allows */
#define CURL_IPRESOLVE_V4       1 /* uses only IPv4 addresses/connections */
#define CURL_IPRESOLVE_V6       2 /* uses only IPv6 addresses/connections */

  /* three convenient "aliases" that follow the name scheme better */
#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER

  /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
enum {
  CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd
                             like the library to choose the best possible
                             for us! */







>
>
>














|







2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
#define CURLOPT_FTP_SSL CURLOPT_USE_SSL

/* The following were added earlier */

#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL

/* */
#define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT

#else
/* This is set if CURL_NO_OLDIES is defined at compile-time */
#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
#endif


  /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
     name resolves addresses using more than one IP protocol version, this
     option might be handy to force libcurl to use a specific IP version. */
#define CURL_IPRESOLVE_WHATEVER 0 /* default, uses addresses to all IP
                                     versions that your system allows */
#define CURL_IPRESOLVE_V4       1 /* uses only IPv4 addresses/connections */
#define CURL_IPRESOLVE_V6       2 /* uses only IPv6 addresses/connections */

  /* Convenient "aliases" */
#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER

  /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
enum {
  CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd
                             like the library to choose the best possible
                             for us! */
Changes to jni/curl/include/curl/curlver.h.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
   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 - 2022 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.84.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 84
#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







|




|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
   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 - 2022 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.85.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 85
#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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
   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 0x075400

/*
 * 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 "2022-06-27"

#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 */







|










|






55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
   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 0x075500

/*
 * 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 "2022-08-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/include/curl/typecheck-gcc.h.
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
   (option) == CURLOPT_DEFAULT_PROTOCOL ||                                    \
   (option) == CURLOPT_DNS_INTERFACE ||                                       \
   (option) == CURLOPT_DNS_LOCAL_IP4 ||                                       \
   (option) == CURLOPT_DNS_LOCAL_IP6 ||                                       \
   (option) == CURLOPT_DNS_SERVERS ||                                         \
   (option) == CURLOPT_DOH_URL ||                                             \
   (option) == CURLOPT_EGDSOCKET ||                                           \
   (option) == CURLOPT_FTPPORT ||                                             \
   (option) == CURLOPT_FTP_ACCOUNT ||                                         \
   (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER ||                             \

   (option) == CURLOPT_HSTS ||                                                \
   (option) == CURLOPT_INTERFACE ||                                           \
   (option) == CURLOPT_ISSUERCERT ||                                          \
   (option) == CURLOPT_KEYPASSWD ||                                           \
   (option) == CURLOPT_KRBLEVEL ||                                            \
   (option) == CURLOPT_LOGIN_OPTIONS ||                                       \
   (option) == CURLOPT_MAIL_AUTH ||                                           \
   (option) == CURLOPT_MAIL_FROM ||                                           \
   (option) == CURLOPT_NETRC_FILE ||                                          \
   (option) == CURLOPT_NOPROXY ||                                             \
   (option) == CURLOPT_PASSWORD ||                                            \
   (option) == CURLOPT_PINNEDPUBLICKEY ||                                     \
   (option) == CURLOPT_PRE_PROXY ||                                           \
   (option) == CURLOPT_PROXY ||                                               \
   (option) == CURLOPT_PROXYPASSWORD ||                                       \
   (option) == CURLOPT_PROXYUSERNAME ||                                       \
   (option) == CURLOPT_PROXYUSERPWD ||                                        \
   (option) == CURLOPT_PROXY_CAINFO ||                                        \
   (option) == CURLOPT_PROXY_CAPATH ||                                        \
   (option) == CURLOPT_PROXY_CRLFILE ||                                       \
   (option) == CURLOPT_PROXY_ISSUERCERT ||                                    \
   (option) == CURLOPT_PROXY_KEYPASSWD ||                                     \
   (option) == CURLOPT_PROXY_PINNEDPUBLICKEY ||                               \
   (option) == CURLOPT_PROXY_SERVICE_NAME ||                                  \

   (option) == CURLOPT_PROXY_SSLCERT ||                                       \
   (option) == CURLOPT_PROXY_SSLCERTTYPE ||                                   \
   (option) == CURLOPT_PROXY_SSLKEY ||                                        \
   (option) == CURLOPT_PROXY_SSLKEYTYPE ||                                    \
   (option) == CURLOPT_PROXY_SSL_CIPHER_LIST ||                               \
   (option) == CURLOPT_PROXY_TLS13_CIPHERS ||                                 \
   (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD ||                              \
   (option) == CURLOPT_PROXY_TLSAUTH_TYPE ||                                  \
   (option) == CURLOPT_PROXY_TLSAUTH_USERNAME ||                              \



   (option) == CURLOPT_RANDOM_FILE ||                                         \
   (option) == CURLOPT_RANGE ||                                               \

   (option) == CURLOPT_REFERER ||                                             \
   (option) == CURLOPT_REQUEST_TARGET ||                                      \
   (option) == CURLOPT_RTSP_SESSION_ID ||                                     \
   (option) == CURLOPT_RTSP_STREAM_URI ||                                     \
   (option) == CURLOPT_RTSP_TRANSPORT ||                                      \
   (option) == CURLOPT_SASL_AUTHZID ||                                        \
   (option) == CURLOPT_SERVICE_NAME ||                                        \







<


>













<
|
<
|







>




<




>
>
>


>







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
   (option) == CURLOPT_DEFAULT_PROTOCOL ||                                    \
   (option) == CURLOPT_DNS_INTERFACE ||                                       \
   (option) == CURLOPT_DNS_LOCAL_IP4 ||                                       \
   (option) == CURLOPT_DNS_LOCAL_IP6 ||                                       \
   (option) == CURLOPT_DNS_SERVERS ||                                         \
   (option) == CURLOPT_DOH_URL ||                                             \
   (option) == CURLOPT_EGDSOCKET ||                                           \

   (option) == CURLOPT_FTP_ACCOUNT ||                                         \
   (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER ||                             \
   (option) == CURLOPT_FTPPORT ||                                             \
   (option) == CURLOPT_HSTS ||                                                \
   (option) == CURLOPT_INTERFACE ||                                           \
   (option) == CURLOPT_ISSUERCERT ||                                          \
   (option) == CURLOPT_KEYPASSWD ||                                           \
   (option) == CURLOPT_KRBLEVEL ||                                            \
   (option) == CURLOPT_LOGIN_OPTIONS ||                                       \
   (option) == CURLOPT_MAIL_AUTH ||                                           \
   (option) == CURLOPT_MAIL_FROM ||                                           \
   (option) == CURLOPT_NETRC_FILE ||                                          \
   (option) == CURLOPT_NOPROXY ||                                             \
   (option) == CURLOPT_PASSWORD ||                                            \
   (option) == CURLOPT_PINNEDPUBLICKEY ||                                     \
   (option) == CURLOPT_PRE_PROXY ||                                           \

   (option) == CURLOPT_PROTOCOLS_STR ||                                       \

   (option) == CURLOPT_PROXY ||                                               \
   (option) == CURLOPT_PROXY_CAINFO ||                                        \
   (option) == CURLOPT_PROXY_CAPATH ||                                        \
   (option) == CURLOPT_PROXY_CRLFILE ||                                       \
   (option) == CURLOPT_PROXY_ISSUERCERT ||                                    \
   (option) == CURLOPT_PROXY_KEYPASSWD ||                                     \
   (option) == CURLOPT_PROXY_PINNEDPUBLICKEY ||                               \
   (option) == CURLOPT_PROXY_SERVICE_NAME ||                                  \
   (option) == CURLOPT_PROXY_SSL_CIPHER_LIST ||                               \
   (option) == CURLOPT_PROXY_SSLCERT ||                                       \
   (option) == CURLOPT_PROXY_SSLCERTTYPE ||                                   \
   (option) == CURLOPT_PROXY_SSLKEY ||                                        \
   (option) == CURLOPT_PROXY_SSLKEYTYPE ||                                    \

   (option) == CURLOPT_PROXY_TLS13_CIPHERS ||                                 \
   (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD ||                              \
   (option) == CURLOPT_PROXY_TLSAUTH_TYPE ||                                  \
   (option) == CURLOPT_PROXY_TLSAUTH_USERNAME ||                              \
   (option) == CURLOPT_PROXYPASSWORD ||                                       \
   (option) == CURLOPT_PROXYUSERNAME ||                                       \
   (option) == CURLOPT_PROXYUSERPWD ||                                        \
   (option) == CURLOPT_RANDOM_FILE ||                                         \
   (option) == CURLOPT_RANGE ||                                               \
   (option) == CURLOPT_REDIR_PROTOCOLS_STR ||                                 \
   (option) == CURLOPT_REFERER ||                                             \
   (option) == CURLOPT_REQUEST_TARGET ||                                      \
   (option) == CURLOPT_RTSP_SESSION_ID ||                                     \
   (option) == CURLOPT_RTSP_STREAM_URI ||                                     \
   (option) == CURLOPT_RTSP_TRANSPORT ||                                      \
   (option) == CURLOPT_SASL_AUTHZID ||                                        \
   (option) == CURLOPT_SERVICE_NAME ||                                        \
Changes to jni/curl/lib/CMakeLists.txt.
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  ALIAS ${LIB_NAME}
  )

if(NOT BUILD_SHARED_LIBS)
    set_target_properties(${LIB_NAME} PROPERTIES INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB)
endif()

target_link_libraries(${LIB_NAME} ${CURL_LIBS})

set_target_properties(${LIB_NAME} PROPERTIES
  COMPILE_DEFINITIONS BUILDING_LIBCURL
  OUTPUT_NAME ${LIBCURL_OUTPUT_NAME}
  )

if(HIDES_CURL_PRIVATE_SYMBOLS)







|







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  ALIAS ${LIB_NAME}
  )

if(NOT BUILD_SHARED_LIBS)
    set_target_properties(${LIB_NAME} PROPERTIES INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB)
endif()

target_link_libraries(${LIB_NAME} PRIVATE ${CURL_LIBS})

set_target_properties(${LIB_NAME} PROPERTIES
  COMPILE_DEFINITIONS BUILDING_LIBCURL
  OUTPUT_NAME ${LIBCURL_OUTPUT_NAME}
  )

if(HIDES_CURL_PRIVATE_SYMBOLS)
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
  set_target_properties(${LIB_NAME} PROPERTIES
    INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE
    INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE)
endif()

if(WIN32)
  if(BUILD_SHARED_LIBS)
    set_property(TARGET ${LIB_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "_USRDLL")
    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}::
)







<




















|


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
  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}
       FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
       NAMESPACE ${PROJECT_NAME}::
)
Changes to jni/curl/lib/Makefile.in.
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# if symbol-hiding is enabled, hide them!
@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE@@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = -export-symbols-regex '^curl_.*'
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_6 = -DCURL_STATICLIB
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_7 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_8 = $(CFLAG_CURL_SYMBOL_HIDING)
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







119
120
121
122
123
124
125
126

127
128
129
130
131
132
133
# if symbol-hiding is enabled, hide them!
@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE@@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = -export-symbols-regex '^curl_.*'
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_6 = -DCURL_STATICLIB
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_7 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_8 = $(CFLAG_CURL_SYMBOL_HIDING)
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
876
877
878
879
880
881
882

883
884
885
886
887
888
889
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/lib/Makefile.m32.
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
endif
ifeq ($(CURL_AR),)
CURL_AR := $(CROSSPREFIX)ar
endif
ifeq ($(CURL_RANLIB),)
CURL_RANLIB := $(CROSSPREFIX)ranlib
endif







CC = $(CURL_CC)
CFLAGS = -O3 $(CURL_CFLAG_EXTRAS) -W -Wall
LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_DLL)
AR = $(CURL_AR)
RANLIB = $(CURL_RANLIB)
RC = $(CROSSPREFIX)windres
RCFLAGS = --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O coff
STRIP   = $(CROSSPREFIX)strip -g

# Set environment var ARCH to your architecture to override autodetection.
ifndef ARCH
ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
ARCH = w64
else
ARCH = w32
endif
endif


ifeq ($(ARCH),w64)
CFLAGS  += -m64
LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS  += -m32
LDFLAGS += -m32
RCFLAGS += -F pe-i386

endif

# Platform-dependent helper tool macros
ifeq ($(findstring /sh,$(SHELL)),/sh)
DEL     = rm -f $1
RMDIR   = rm -fr $1
MKDIR   = mkdir -p $1







>
>
>
>
>
>






|
|
|










>








>







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
endif
ifeq ($(CURL_AR),)
CURL_AR := $(CROSSPREFIX)ar
endif
ifeq ($(CURL_RANLIB),)
CURL_RANLIB := $(CROSSPREFIX)ranlib
endif
ifeq ($(CURL_RC),)
CURL_RC := $(CROSSPREFIX)windres
endif
ifeq ($(CURL_STRIP),)
CURL_STRIP := $(CROSSPREFIX)strip
endif

CC = $(CURL_CC)
CFLAGS = -O3 $(CURL_CFLAG_EXTRAS) -W -Wall
LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_DLL)
AR = $(CURL_AR)
RANLIB = $(CURL_RANLIB)
RC = $(CURL_RC)
RCFLAGS = --include-dir=$(PROOT)/include -O coff $(CURL_RCFLAG_EXTRAS)
STRIP   = $(CURL_STRIP) -g

# Set environment var ARCH to your architecture to override autodetection.
ifndef ARCH
ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
ARCH = w64
else
ARCH = w32
endif
endif

ifneq ($(ARCH),custom)
ifeq ($(ARCH),w64)
CFLAGS  += -m64
LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS  += -m32
LDFLAGS += -m32
RCFLAGS += -F pe-i386
endif
endif

# Platform-dependent helper tool macros
ifeq ($(findstring /sh,$(SHELL)),/sh)
DEL     = rm -f $1
RMDIR   = rm -fr $1
MKDIR   = mkdir -p $1
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
endif
ifdef SSH2
  INCLUDES += -I"$(LIBSSH2_PATH)/include" -I"$(LIBSSH2_PATH)/win32"
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  DLL_LIBS += -L"$(LIBSSH2_PATH)/win32" -lssh2
  ifdef SCHANNEL
    ifndef DYN
      DLL_LIBS += -lbcrypt -lcrypt32


















    endif
  endif
endif
ifdef SSL
  ifdef NGHTTP3
    INCLUDES += -I"$(NGHTTP3_PATH)/include"
    CFLAGS += -DUSE_NGHTTP3
    DLL_LIBS += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
    ifdef NGTCP2
      INCLUDES += -I"$(NGTCP2_PATH)/include"
      CFLAGS += -DUSE_NGTCP2
      DLL_LIBS += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
    endif
  endif

  ifndef OPENSSL_INCLUDE
    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
    endif
    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
    endif







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
<
<
<
<
<
<
<
<
<
<







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
endif
ifdef SSH2
  INCLUDES += -I"$(LIBSSH2_PATH)/include" -I"$(LIBSSH2_PATH)/win32"
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  DLL_LIBS += -L"$(LIBSSH2_PATH)/win32" -lssh2
  ifdef SCHANNEL
    ifndef DYN
      DLL_LIBS += -lcrypt32
    endif
  endif
endif
ifdef NGHTTP3
  INCLUDES += -I"$(NGHTTP3_PATH)/include"
  CFLAGS += -DUSE_NGHTTP3
  DLL_LIBS += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
  ifdef NGTCP2
    INCLUDES += -I"$(NGTCP2_PATH)/include"
    CFLAGS += -DUSE_NGTCP2
    DLL_LIBS += -L"$(NGTCP2_PATH)/lib"
    ifdef NGTCP2_LIBS
      DLL_LIBS += $(NGTCP2_LIBS)
    else
      DLL_LIBS += -lngtcp2
      ifdef SSL
        DLL_LIBS += -lngtcp2_crypto_openssl
      endif
    endif
  endif
endif
ifdef SSL











  ifndef OPENSSL_INCLUDE
    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
    endif
    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
    endif
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
  DLL_LIBS += -L"$(LDAP_SDK)/lib" -lldap -llber
endif
ifndef USE_LDAP_NOVELL
ifndef USE_LDAP_OPENLDAP
  DLL_LIBS += -lwldap32
endif
endif
DLL_LIBS += -lws2_32

# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc

ifeq ($(CURL_DLL_A_SUFFIX),)
CURL_DLL_A_SUFFIX := dll
endif







|







411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
  DLL_LIBS += -L"$(LDAP_SDK)/lib" -lldap -llber
endif
ifndef USE_LDAP_NOVELL
ifndef USE_LDAP_OPENLDAP
  DLL_LIBS += -lwldap32
endif
endif
DLL_LIBS += -lws2_32 -lbcrypt

# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc

ifeq ($(CURL_DLL_A_SUFFIX),)
CURL_DLL_A_SUFFIX := dll
endif
442
443
444
445
446
447
448
449
450
451
	$(RC) $(RCFLAGS) -i $< -o $@

clean:
	@$(call DEL, $(libcurl_a_OBJECTS) $(RESOURCE))

distclean vclean: clean
	@$(call DEL, $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY))

$(LIBCARES_PATH)/libcares.a:
	$(MAKE) -C $(LIBCARES_PATH) -f Makefile.m32







<
<
<
457
458
459
460
461
462
463



	$(RC) $(RCFLAGS) -i $< -o $@

clean:
	@$(call DEL, $(libcurl_a_OBJECTS) $(RESOURCE))

distclean vclean: clean
	@$(call DEL, $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY))



Changes to jni/curl/lib/amigaos.c.
21
22
23
24
25
26
27


28

29



30
31
32
33
34
35
36
37
38
39
40


41












































































































































42




43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/

#include "curl_setup.h"

#ifdef __AMIGA__


#  include "amigaos.h"

#  if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)



#    include <amitcp/socketbasetags.h>
#  endif
#  ifdef __libnix__
#    include <stabs.h>
#  endif
#endif

/* The last #include files should be: */
#include "curl_memory.h"
#include "memdebug.h"



#ifdef __AMIGA__












































































































































#if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)




struct Library *SocketBase = NULL;
extern int errno, h_errno;

#ifdef __libnix__
void __request(const char *msg);
#else
# define __request(msg)       Printf(msg "\n\a")
#endif

void Curl_amiga_cleanup()
{
  if(SocketBase) {
    CloseLibrary(SocketBase);
    SocketBase = NULL;
  }
}

bool Curl_amiga_init()
{
  if(!SocketBase)
    SocketBase = OpenLibrary("bsdsocket.library", 4);

  if(!SocketBase) {
    __request("No TCP/IP Stack running!");
    return FALSE;
  }

  if(SocketBaseTags(SBTM_SETVAL(SBTC_ERRNOPTR(sizeof(errno))), (ULONG) &errno,
                    SBTM_SETVAL(SBTC_LOGTAGPTR), (ULONG) "curl",
                    TAG_DONE)) {
    __request("SocketBaseTags ERROR");
    return FALSE;
  }

#ifndef __libnix__
  atexit(Curl_amiga_cleanup);
#endif

  return TRUE;
}

#ifdef __libnix__
ADD2EXIT(Curl_amiga_cleanup, -50);
#endif

#endif /* HAVE_PROTO_BSDSOCKET_H */

#ifdef USE_AMISSL
void Curl_amiga_X509_free(X509 *a)
{
  X509_free(a);
}

/* AmiSSL replaces many functions with macros. Curl requires pointer
 * to some of these functions. Thus, we have to encapsulate these macros.
 */

#include "warnless.h"

int (SHA256_Init)(SHA256_CTX *c)
{
  return SHA256_Init(c);
};

int (SHA256_Update)(SHA256_CTX *c, const void *data, size_t len)
{
  return SHA256_Update(c, data, curlx_uztoui(len));
};

int (SHA256_Final)(unsigned char *md, SHA256_CTX *c)
{
  return SHA256_Final(md, c);
};

void (X509_INFO_free)(X509_INFO *a)
{
  X509_INFO_free(a);
};

#endif /* USE_AMISSL */
#endif /* __AMIGA__ */








>
>
|
>
|
>
>
>











>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>









|







|






|






|






|






<
<
|
<
|
<
<
|
<
<
<

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

<
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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

 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/

#include "curl_setup.h"

#ifdef __AMIGA__

#include "hostip.h"
#include "amigaos.h"

#ifdef HAVE_PROTO_BSDSOCKET_H
#  if defined(__amigaos4__)
#    include <bsdsocket/socketbasetags.h>
#  elif !defined(USE_AMISSL)
#    include <amitcp/socketbasetags.h>
#  endif
#  ifdef __libnix__
#    include <stabs.h>
#  endif
#endif

/* The last #include files should be: */
#include "curl_memory.h"
#include "memdebug.h"

#ifdef HAVE_PROTO_BSDSOCKET_H

#ifdef __amigaos4__
/*
 * AmigaOS 4.x specific code
 */

/*
 * hostip4.c - Curl_ipv4_resolve_r() replacement code
 *
 * Logic that needs to be considered are the following build cases:
 * - newlib networking
 * - clib2 networking
 * - direct bsdsocket.library networking (usually AmiSSL builds)
 * Each with the threaded resolver enabled or not.
 *
 * With the threaded resolver enabled, try to use gethostbyname_r() where
 * available, otherwise (re)open bsdsocket.library and fallback to
 * gethostbyname().
 */

#include <proto/bsdsocket.h>

static struct SocketIFace *__CurlISocket = NULL;
static uint32 SocketFeatures = 0;

#define HAVE_BSDSOCKET_GETHOSTBYNAME_R 0x01
#define HAVE_BSDSOCKET_GETADDRINFO     0x02

CURLcode Curl_amiga_init(void)
{
  struct SocketIFace *ISocket;
  struct Library *base = OpenLibrary("bsdsocket.library", 4);

  if(base) {
    ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
    if(ISocket) {
      ULONG enabled = 0;

      SocketBaseTags(SBTM_SETVAL(SBTC_CAN_SHARE_LIBRARY_BASES), TRUE,
                     SBTM_GETREF(SBTC_HAVE_GETHOSTADDR_R_API), (ULONG)&enabled,
                     TAG_DONE);

      if(enabled) {
        SocketFeatures |= HAVE_BSDSOCKET_GETHOSTBYNAME_R;
      }

      __CurlISocket = ISocket;

      atexit(Curl_amiga_cleanup);

      return CURLE_OK;
    }
    CloseLibrary(base);
  }

  return CURLE_FAILED_INIT;
}

void Curl_amiga_cleanup(void)
{
  if(__CurlISocket) {
    struct Library *base = __CurlISocket->Data.LibBase;
    DropInterface((struct Interface *)__CurlISocket);
    CloseLibrary(base);
    __CurlISocket = NULL;
  }
}

#ifdef CURLRES_AMIGA
/*
 * Because we need to handle the different cases in hostip4.c at run-time,
 * not at compile-time, based on what was detected in Curl_amiga_init(),
 * we replace it completely with our own as to not complicate the baseline
 * code. Assumes malloc/calloc/free are thread safe because Curl_he2ai()
 * allocates memory also.
 */

struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
                                          int port)
{
  struct Curl_addrinfo *ai = NULL;
  struct hostent *h;
  struct SocketIFace *ISocket = __CurlISocket;

  if(SocketFeatures & HAVE_BSDSOCKET_GETHOSTBYNAME_R) {
    LONG h_errnop = 0;
    struct hostent *buf;

    buf = calloc(1, CURL_HOSTENT_SIZE);
    if(buf) {
      h = gethostbyname_r((STRPTR)hostname, buf,
                          (char *)buf + sizeof(struct hostent),
                          CURL_HOSTENT_SIZE - sizeof(struct hostent),
                          &h_errnop);
      if(h) {
        ai = Curl_he2ai(h, port);
      }
      free(buf);
    }
  }
  else {
    #ifdef CURLRES_THREADED
    /* gethostbyname() is not thread safe, so we need to reopen bsdsocket
     * on the thread's context
     */
    struct Library *base = OpenLibrary("bsdsocket.library", 4);
    if(base) {
      ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
      if(ISocket) {
        h = gethostbyname((STRPTR)hostname);
        if(h) {
          ai = Curl_he2ai(h, port);
        }
        DropInterface((struct Interface *)ISocket);
      }
      CloseLibrary(base);
    }
    #else
    /* not using threaded resolver - safe to use this as-is */
    h = gethostbyname(hostname);
    if(h) {
      ai = Curl_he2ai(h, port);
    }
    #endif
  }

  return ai;
}
#endif /* CURLRES_AMIGA */

#ifdef USE_AMISSL
int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
                      fd_set *errorfds, struct timeval *timeout)
{
  int r = WaitSelect(nfds, readfds, writefds, errorfds, timeout, 0);
  /* Ensure Ctrl-C signal is actioned */
  if((r == -1) && (SOCKERRNO == EINTR))
    raise(SIGINT);
  return r;
}
#endif /* USE_AMISSL */

#elif !defined(USE_AMISSL) /* __amigaos4__ */
/*
 * Amiga OS3 specific code
 */

struct Library *SocketBase = NULL;
extern int errno, h_errno;

#ifdef __libnix__
void __request(const char *msg);
#else
# define __request(msg)       Printf(msg "\n\a")
#endif

void Curl_amiga_cleanup(void)
{
  if(SocketBase) {
    CloseLibrary(SocketBase);
    SocketBase = NULL;
  }
}

CURLcode Curl_amiga_init(void)
{
  if(!SocketBase)
    SocketBase = OpenLibrary("bsdsocket.library", 4);

  if(!SocketBase) {
    __request("No TCP/IP Stack running!");
    return CURLE_FAILED_INIT;
  }

  if(SocketBaseTags(SBTM_SETVAL(SBTC_ERRNOPTR(sizeof(errno))), (ULONG) &errno,
                    SBTM_SETVAL(SBTC_LOGTAGPTR), (ULONG) "curl",
                    TAG_DONE)) {
    __request("SocketBaseTags ERROR");
    return CURLE_FAILED_INIT;
  }

#ifndef __libnix__
  atexit(Curl_amiga_cleanup);
#endif

  return CURLE_OK;
}

#ifdef __libnix__
ADD2EXIT(Curl_amiga_cleanup, -50);
#endif



#endif /* !USE_AMISSL */




#endif /* HAVE_PROTO_BSDSOCKET_H */



























#endif /* __AMIGA__ */

Changes to jni/curl/lib/amigaos.h.
21
22
23
24
25
26
27
28

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 * KIND, either express or implied.
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#include "curl_setup.h"

#if defined(__AMIGA__) && defined(HAVE_BSDSOCKET_H) && !defined(USE_AMISSL)


bool Curl_amiga_init();
void Curl_amiga_cleanup();

#else

#define Curl_amiga_init() 1
#define Curl_amiga_cleanup() Curl_nop_stmt

#endif

#ifdef USE_AMISSL
#include <openssl/x509v3.h>
void Curl_amiga_X509_free(X509 *a);
#endif /* USE_AMISSL */

#endif /* HEADER_CURL_AMIGAOS_H */








|
>

|
|



|




<
<
<
<
<


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40





41
42
 * KIND, either express or implied.
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#include "curl_setup.h"

#if defined(__AMIGA__) && defined(HAVE_PROTO_BSDSOCKET_H) && \
  (!defined(USE_AMISSL) || defined(__amigaos4__))

CURLcode Curl_amiga_init(void);
void Curl_amiga_cleanup(void);

#else

#define Curl_amiga_init() CURLE_OK
#define Curl_amiga_cleanup() Curl_nop_stmt

#endif






#endif /* HEADER_CURL_AMIGAOS_H */

Changes to jni/curl/lib/asyn-ares.c.
111
112
113
114
115
116
117

118
119
120
121
122
123
124
  int num_pending; /* number of outstanding c-ares requests */
  struct Curl_addrinfo *temp_ai; /* intermediary result while fetching c-ares
                                    parts */
  int last_status;
#ifndef HAVE_CARES_GETADDRINFO
  struct curltime happy_eyeballs_dns_time; /* when this timer started, or 0 */
#endif

};

/* How long we are willing to wait for additional parallel responses after
   obtaining a "definitive" one.

   This is intended to equal the c-ares default timeout.  cURL always uses that
   default value.  Unfortunately, c-ares doesn't expose its default timeout in







>







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
  int num_pending; /* number of outstanding c-ares requests */
  struct Curl_addrinfo *temp_ai; /* intermediary result while fetching c-ares
                                    parts */
  int last_status;
#ifndef HAVE_CARES_GETADDRINFO
  struct curltime happy_eyeballs_dns_time; /* when this timer started, or 0 */
#endif
  char hostname[1];
};

/* How long we are willing to wait for additional parallel responses after
   obtaining a "definitive" one.

   This is intended to equal the c-ares default timeout.  cURL always uses that
   default value.  Unfortunately, c-ares doesn't expose its default timeout in
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
}

/*
 * destroy_async_data() cleans up async resolver data.
 */
static void destroy_async_data(struct Curl_async *async)
{
  free(async->hostname);

  if(async->tdata) {
    struct thread_data *res = async->tdata;
    if(res) {
      if(res->temp_ai) {
        Curl_freeaddrinfo(res->temp_ai);
        res->temp_ai = NULL;
      }
      free(res);
    }
    async->tdata = NULL;
  }

  async->hostname = NULL;
}

/*
 * Curl_resolver_getsock() is called when someone from the outside world
 * (using curl_multi_fdset()) wants to get our fd_set setup and we're talking
 * with ares. The caller must make sure that this function is only called when
 * we have a working ares channel.







<
<











<
<







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
}

/*
 * destroy_async_data() cleans up async resolver data.
 */
static void destroy_async_data(struct Curl_async *async)
{


  if(async->tdata) {
    struct thread_data *res = async->tdata;
    if(res) {
      if(res->temp_ai) {
        Curl_freeaddrinfo(res->temp_ai);
        res->temp_ai = NULL;
      }
      free(res);
    }
    async->tdata = NULL;
  }


}

/*
 * Curl_resolver_getsock() is called when someone from the outside world
 * (using curl_multi_fdset()) wants to get our fd_set setup and we're talking
 * with ares. The caller must make sure that this function is only called when
 * we have a working ares channel.
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
 * Curl_freeaddrinfo(), nothing else.
 */
struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
                                                const char *hostname,
                                                int port,
                                                int *waitp)
{
  char *bufp;

  *waitp = 0; /* default to synchronous response */

  bufp = strdup(hostname);
  if(bufp) {
    struct thread_data *res = NULL;
    free(data->state.async.hostname);
    data->state.async.hostname = bufp;
    data->state.async.port = port;
    data->state.async.done = FALSE;   /* not done */
    data->state.async.status = 0;     /* clear */
    data->state.async.dns = NULL;     /* clear */
    res = calloc(sizeof(struct thread_data), 1);
    if(!res) {
      free(data->state.async.hostname);
      data->state.async.hostname = NULL;
      return NULL;
    }
    data->state.async.tdata = res;

    /* initial status - failed */
    res->last_status = ARES_ENOTFOUND;

#ifdef HAVE_CARES_GETADDRINFO
    {







|
|


|
|
<
|
|




<
<
<
<
<
<







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
 * Curl_freeaddrinfo(), nothing else.
 */
struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
                                                const char *hostname,
                                                int port,
                                                int *waitp)
{
  struct thread_data *res = NULL;
  size_t namelen = strlen(hostname);
  *waitp = 0; /* default to synchronous response */

  res = calloc(sizeof(struct thread_data) + namelen, 1);
  if(res) {

    strcpy(res->hostname, hostname);
    data->state.async.hostname = res->hostname;
    data->state.async.port = port;
    data->state.async.done = FALSE;   /* not done */
    data->state.async.status = 0;     /* clear */
    data->state.async.dns = NULL;     /* clear */






    data->state.async.tdata = res;

    /* initial status - failed */
    res->last_status = ARES_ENOTFOUND;

#ifdef HAVE_CARES_GETADDRINFO
    {
Changes to jni/curl/lib/asyn-thread.c.
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
  tsd->hostname = strdup(hostname);
  if(!tsd->hostname)
    goto err_exit;

  return 1;

 err_exit:
  /* Memory allocation failed */





  destroy_thread_sync_data(tsd);
  return 0;
}

static int getaddrinfo_complete(struct Curl_easy *data)
{
  struct thread_sync_data *tsd = conn_thread_sync_data(data);
  int rc;

  rc = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
  /* The tsd->res structure has been copied to async.dns and perhaps the DNS
     cache.  Set our copy to NULL so destroy_thread_sync_data doesn't free it.
  */
  tsd->res = NULL;

  return rc;
}


#ifdef HAVE_GETADDRINFO

/*
 * getaddrinfo_thread() resolves a name and then exits.







|
>
>
>
>
>




|


|

|





|







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
  tsd->hostname = strdup(hostname);
  if(!tsd->hostname)
    goto err_exit;

  return 1;

 err_exit:
#ifndef CURL_DISABLE_SOCKETPAIR
  if(tsd->sock_pair[0] != CURL_SOCKET_BAD) {
    sclose(tsd->sock_pair[0]);
    tsd->sock_pair[0] = CURL_SOCKET_BAD;
  }
#endif
  destroy_thread_sync_data(tsd);
  return 0;
}

static CURLcode getaddrinfo_complete(struct Curl_easy *data)
{
  struct thread_sync_data *tsd = conn_thread_sync_data(data);
  CURLcode result;

  result = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
  /* The tsd->res structure has been copied to async.dns and perhaps the DNS
     cache.  Set our copy to NULL so destroy_thread_sync_data doesn't free it.
  */
  tsd->res = NULL;

  return result;
}


#ifdef HAVE_GETADDRINFO

/*
 * getaddrinfo_thread() resolves a name and then exits.
Changes to jni/curl/lib/base64.c.
39
40
41
42
43
44
45

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* ---- Base64 Encoding/Decoding Table --- */

static const char base64[]=
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

/* The Base 64 encoding with an URL and filename safe alphabet, RFC 4648
   section 5 */
static const char base64url[]=
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";

static size_t decodeQuantum(unsigned char *dest, const char *src)
{
  size_t padding = 0;
  const char *s, *p;
  unsigned long i, x = 0;

  for(i = 0, s = src; i < 4; i++, s++) {
    if(*s == '=') {
      x = (x << 6);
      padding++;
    }
    else {
      unsigned long v = 0;
      p = base64;

      while(*p && (*p != *s)) {
        v++;
        p++;
      }

      if(*p == *s)
        x = (x << 6) + v;
      else
        return 0;
    }
  }

  if(padding < 1)
    dest[2] = curlx_ultouc(x & 0xFFUL);







>

|









|




|



<
<
|
<
<
<
<
<
|
|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66


67





68
69
70
71
72
73
74
75
76

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* ---- Base64 Encoding/Decoding Table --- */
/* Padding character string starts at offset 64. */
static const char base64[]=
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

/* The Base 64 encoding with an URL and filename safe alphabet, RFC 4648
   section 5 */
static const char base64url[]=
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";

static size_t decodeQuantum(unsigned char *dest, const char *src)
{
  size_t padding = 0;
  const char *s;
  unsigned long i, x = 0;

  for(i = 0, s = src; i < 4; i++, s++) {
    if(*s == '=') {
      x <<= 6;
      padding++;
    }
    else {


      const char *p = strchr(base64, *s);





      if(p)
        x = (x << 6) + curlx_uztoul(p - base64);
      else
        return 0;
    }
  }

  if(padding < 1)
    dest[2] = curlx_ultouc(x & 0xFFUL);
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
 *
 * @unittest: 1302
 */
CURLcode Curl_base64_decode(const char *src,
                            unsigned char **outptr, size_t *outlen)
{
  size_t srclen = 0;
  size_t length = 0;
  size_t padding = 0;
  size_t i;
  size_t numQuantums;
  size_t rawlen = 0;

  unsigned char *pos;
  unsigned char *newstr;

  *outptr = NULL;
  *outlen = 0;
  srclen = strlen(src);

  /* Check the length of the input string is valid */
  if(!srclen || srclen % 4)
    return CURLE_BAD_CONTENT_ENCODING;

  /* Find the position of any = padding characters */
  while((src[length] != '=') && src[length])
    length++;

  /* A maximum of two = padding characters is allowed */
  if(src[length] == '=') {
    padding++;
    if(src[length + 1] == '=')
      padding++;
  }

  /* Check the = padding characters weren't part way through the input */
  if(length + padding != srclen)
    return CURLE_BAD_CONTENT_ENCODING;


  /* Calculate the number of quantums */
  numQuantums = srclen / 4;

  /* Calculate the size of the decoded string */
  rawlen = (numQuantums * 3) - padding;








<




>












|
|
|
|
<
<
|

|
<
|
|
|
>







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
 *
 * @unittest: 1302
 */
CURLcode Curl_base64_decode(const char *src,
                            unsigned char **outptr, size_t *outlen)
{
  size_t srclen = 0;

  size_t padding = 0;
  size_t i;
  size_t numQuantums;
  size_t rawlen = 0;
  const char *padptr;
  unsigned char *pos;
  unsigned char *newstr;

  *outptr = NULL;
  *outlen = 0;
  srclen = strlen(src);

  /* Check the length of the input string is valid */
  if(!srclen || srclen % 4)
    return CURLE_BAD_CONTENT_ENCODING;

  /* Find the position of any = padding characters */
  padptr = strchr(src, '=');
  if(padptr) {
    padding++;
    /* A maximum of two = padding characters is allowed */


    if(padptr[1] == '=')
      padding++;


    /* Check the = padding characters weren't part way through the input */
    if(padptr + padding != src + srclen)
      return CURLE_BAD_CONTENT_ENCODING;
  }

  /* Calculate the number of quantums */
  numQuantums = srclen / 4;

  /* Calculate the size of the decoded string */
  rawlen = (numQuantums * 3) - padding;

183
184
185
186
187
188
189

190
191
192
193
194
195
196
  unsigned char ibuf[3];
  unsigned char obuf[4];
  int i;
  int inputparts;
  char *output;
  char *base64data;
  const char *indata = inputbuff;


  *outptr = NULL;
  *outlen = 0;

  if(!insize)
    insize = strlen(indata);








>







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
  unsigned char ibuf[3];
  unsigned char obuf[4];
  int i;
  int inputparts;
  char *output;
  char *base64data;
  const char *indata = inputbuff;
  const char *padstr = &table64[64];    /* Point to padding string. */

  *outptr = NULL;
  *outlen = 0;

  if(!insize)
    insize = strlen(indata);

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
                               ((ibuf[1] & 0xF0) >> 4));
    obuf[2] = (unsigned char) (((ibuf[1] & 0x0F) << 2) | \
                               ((ibuf[2] & 0xC0) >> 6));
    obuf[3] = (unsigned char)   (ibuf[2] & 0x3F);

    switch(inputparts) {
    case 1: /* only one byte read */
      msnprintf(output, 5, "%c%c==",
                table64[obuf[0]],
                table64[obuf[1]]);


      break;

    case 2: /* two bytes read */
      msnprintf(output, 5, "%c%c%c=",
                table64[obuf[0]],
                table64[obuf[1]],
                table64[obuf[2]]);

      break;

    default:
      msnprintf(output, 5, "%c%c%c%c",
                table64[obuf[0]],
                table64[obuf[1]],
                table64[obuf[2]],
                table64[obuf[3]]);
      break;
    }
    output += 4;
  }

  /* Zero terminate */
  *output = '\0';

  /* Return the pointer to the new data (allocated memory) */
  *outptr = base64data;







|
|
|
>
>



|
|
|
|
>



|
|
|
|
|


|







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
                               ((ibuf[1] & 0xF0) >> 4));
    obuf[2] = (unsigned char) (((ibuf[1] & 0x0F) << 2) | \
                               ((ibuf[2] & 0xC0) >> 6));
    obuf[3] = (unsigned char)   (ibuf[2] & 0x3F);

    switch(inputparts) {
    case 1: /* only one byte read */
      i = msnprintf(output, 5, "%c%c%s%s",
                    table64[obuf[0]],
                    table64[obuf[1]],
                    padstr,
                    padstr);
      break;

    case 2: /* two bytes read */
      i = msnprintf(output, 5, "%c%c%c%s",
                    table64[obuf[0]],
                    table64[obuf[1]],
                    table64[obuf[2]],
                    padstr);
      break;

    default:
      i = msnprintf(output, 5, "%c%c%c%c",
                    table64[obuf[0]],
                    table64[obuf[1]],
                    table64[obuf[2]],
                    table64[obuf[3]]);
      break;
    }
    output += i;
  }

  /* Zero terminate */
  *output = '\0';

  /* Return the pointer to the new data (allocated memory) */
  *outptr = base64data;
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
 * outlen.
 *
 * Input length of 0 indicates input buffer holds a NUL-terminated string.
 *
 * Returns CURLE_OK on success, otherwise specific error code. Function
 * output shall not be considered valid unless CURLE_OK is returned.
 *
 * When encoded data length is 0, returns NULL in *outptr.
 *
 * @unittest: 1302
 */
CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
                            char **outptr, size_t *outlen)
{
  return base64_encode(base64, inputbuff, insize, outptr, outlen);
}







<
<







264
265
266
267
268
269
270


271
272
273
274
275
276
277
 * outlen.
 *
 * Input length of 0 indicates input buffer holds a NUL-terminated string.
 *
 * Returns CURLE_OK on success, otherwise specific error code. Function
 * output shall not be considered valid unless CURLE_OK is returned.
 *


 * @unittest: 1302
 */
CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
                            char **outptr, size_t *outlen)
{
  return base64_encode(base64, inputbuff, insize, outptr, outlen);
}
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
 * outlen.
 *
 * Input length of 0 indicates input buffer holds a NUL-terminated string.
 *
 * Returns CURLE_OK on success, otherwise specific error code. Function
 * output shall not be considered valid unless CURLE_OK is returned.
 *
 * When encoded data length is 0, returns NULL in *outptr.
 *
 * @unittest: 1302
 */
CURLcode Curl_base64url_encode(const char *inputbuff, size_t insize,
                               char **outptr, size_t *outlen)
{
  return base64_encode(base64url, inputbuff, insize, outptr, outlen);
}

#endif /* no users so disabled */







<
<









285
286
287
288
289
290
291


292
293
294
295
296
297
298
299
300
 * outlen.
 *
 * Input length of 0 indicates input buffer holds a NUL-terminated string.
 *
 * Returns CURLE_OK on success, otherwise specific error code. Function
 * output shall not be considered valid unless CURLE_OK is returned.
 *


 * @unittest: 1302
 */
CURLcode Curl_base64url_encode(const char *inputbuff, size_t insize,
                               char **outptr, size_t *outlen)
{
  return base64_encode(base64url, inputbuff, insize, outptr, outlen);
}

#endif /* no users so disabled */
Changes to jni/curl/lib/c-hyper.c.
688
689
690
691
692
693
694
695

696
697








698
699
700
701
702
703
704
  }

  result = Curl_fillreadbuffer(data, data->set.upload_buffer_size, &fillcount);
  if(result) {
    data->state.hresult = result;
    return HYPER_POLL_ERROR;
  }
  if(!fillcount)

    /* done! */
    *chunk = NULL;








  else {
    hyper_buf *copy = hyper_buf_copy((uint8_t *)data->state.ulbuf, fillcount);
    if(copy)
      *chunk = copy;
    else {
      data->state.hresult = CURLE_OUT_OF_MEMORY;
      return HYPER_POLL_ERROR;







|
>
|
|
>
>
>
>
>
>
>
>







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
  }

  result = Curl_fillreadbuffer(data, data->set.upload_buffer_size, &fillcount);
  if(result) {
    data->state.hresult = result;
    return HYPER_POLL_ERROR;
  }
  if(!fillcount) {
    if((data->req.keepon & KEEP_SEND_PAUSE) != KEEP_SEND_PAUSE)
      /* done! */
      *chunk = NULL;
    else {
      /* paused, save a waker */
      if(data->hyp.send_body_waker)
        hyper_waker_free(data->hyp.send_body_waker);
      data->hyp.send_body_waker = hyper_context_waker(ctx);
      return HYPER_POLL_PENDING;
    }
  }
  else {
    hyper_buf *copy = hyper_buf_copy((uint8_t *)data->state.ulbuf, fillcount);
    if(copy)
      *chunk = copy;
    else {
      data->state.hresult = CURLE_OUT_OF_MEMORY;
      return HYPER_POLL_ERROR;
911
912
913
914
915
916
917

918
919
920
921
922
923
924
  }
  if(conn->negnpn == CURL_HTTP_VERSION_2) {
    hyper_clientconn_options_http2(options, 1);
    h2 = TRUE;
  }
  hyper_clientconn_options_set_preserve_header_case(options, 1);
  hyper_clientconn_options_set_preserve_header_order(options, 1);


  hyper_clientconn_options_exec(options, h->exec);

  /* "Both the `io` and the `options` are consumed in this function call" */
  handshake = hyper_clientconn_handshake(io, options);
  if(!handshake) {
    failf(data, "Couldn't create hyper client handshake");







>







920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
  }
  if(conn->negnpn == CURL_HTTP_VERSION_2) {
    hyper_clientconn_options_http2(options, 1);
    h2 = TRUE;
  }
  hyper_clientconn_options_set_preserve_header_case(options, 1);
  hyper_clientconn_options_set_preserve_header_order(options, 1);
  hyper_clientconn_options_http1_allow_multiline_headers(options, 1);

  hyper_clientconn_options_exec(options, h->exec);

  /* "Both the `io` and the `options` are consumed in this function call" */
  handshake = hyper_clientconn_handshake(io, options);
  if(!handshake) {
    failf(data, "Couldn't create hyper client handshake");
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
        goto error;
    }
  }
  else {
    /* For HTTP/2, we show the Host: header as if we sent it, to make it look
       like for HTTP/1 but it isn't actually sent since :authority is then
       used. */
    result = Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
                        strlen(data->state.aptr.host));
    if(result)
      goto error;
  }

  if(data->state.aptr.proxyuserpwd) {
    result = Curl_hyper_header(data, headers, data->state.aptr.proxyuserpwd);
    if(result)
      goto error;
  }







|
|
<
<







1010
1011
1012
1013
1014
1015
1016
1017
1018


1019
1020
1021
1022
1023
1024
1025
        goto error;
    }
  }
  else {
    /* For HTTP/2, we show the Host: header as if we sent it, to make it look
       like for HTTP/1 but it isn't actually sent since :authority is then
       used. */
    Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
               strlen(data->state.aptr.host));


  }

  if(data->state.aptr.proxyuserpwd) {
    result = Curl_hyper_header(data, headers, data->state.aptr.proxyuserpwd);
    if(result)
      goto error;
  }
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
  if(result)
    goto error;

  result = bodysend(data, conn, headers, req, httpreq);
  if(result)
    goto error;

  result = Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);
  if(result)
    goto error;

  data->req.upload_chunky = FALSE;
  sendtask = hyper_clientconn_send(client, req);
  if(!sendtask) {
    failf(data, "hyper_clientconn_send");
    result = CURLE_OUT_OF_MEMORY;
    goto error;







|
<
<







1131
1132
1133
1134
1135
1136
1137
1138


1139
1140
1141
1142
1143
1144
1145
  if(result)
    goto error;

  result = bodysend(data, conn, headers, req, httpreq);
  if(result)
    goto error;

  Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);



  data->req.upload_chunky = FALSE;
  sendtask = hyper_clientconn_send(client, req);
  if(!sendtask) {
    failf(data, "hyper_clientconn_send");
    result = CURLE_OUT_OF_MEMORY;
    goto error;
Changes to jni/curl/lib/c-hyper.h.
32
33
34
35
36
37
38

39
40
41
42
43
44
45
/* per-transfer data for the Hyper backend */
struct hyptransfer {
  hyper_waker *write_waker;
  hyper_waker *read_waker;
  const hyper_executor *exec;
  hyper_task *endtask;
  hyper_waker *exp100_waker;

};

size_t Curl_hyper_recv(void *userp, hyper_context *ctx,
                       uint8_t *buf, size_t buflen);
size_t Curl_hyper_send(void *userp, hyper_context *ctx,
                       const uint8_t *buf, size_t buflen);
CURLcode Curl_hyper_stream(struct Curl_easy *data,







>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* per-transfer data for the Hyper backend */
struct hyptransfer {
  hyper_waker *write_waker;
  hyper_waker *read_waker;
  const hyper_executor *exec;
  hyper_task *endtask;
  hyper_waker *exp100_waker;
  hyper_waker *send_body_waker;
};

size_t Curl_hyper_recv(void *userp, hyper_context *ctx,
                       uint8_t *buf, size_t buflen);
size_t Curl_hyper_send(void *userp, hyper_context *ctx,
                       const uint8_t *buf, size_t buflen);
CURLcode Curl_hyper_stream(struct Curl_easy *data,
Changes to jni/curl/lib/config-amigaos.h.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
/* ================================================================ */

#ifdef __AMIGA__ /* Any AmigaOS flavour */

#define HAVE_ARPA_INET_H 1
#define HAVE_CLOSESOCKET_CAMEL 1
#define HAVE_ERRNO_H 1
#define HAVE_INET_ADDR 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTLSOCKET_CAMEL 1
#define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1
#define HAVE_LIBZ 1
#define HAVE_LONGLONG 1
#define HAVE_MALLOC_H 1
#define HAVE_MEMORY_H 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NET_IF_H 1
#define HAVE_OPENSSL_CRYPTO_H 1
#define HAVE_OPENSSL_ERR_H 1
#define HAVE_OPENSSL_PEM_H 1
#define HAVE_OPENSSL_RSA_H 1
#define HAVE_OPENSSL_SSL_H 1
#define HAVE_OPENSSL_X509_H 1
#define HAVE_PWD_H 1
#define HAVE_RAND_EGD 1
#define HAVE_RAND_STATUS 1
#define HAVE_SELECT 1
#define HAVE_SETJMP_H 1
#define HAVE_SIGNAL 1
#define HAVE_SIGNAL_H 1
#define HAVE_SOCKET 1
#define HAVE_STRCASECMP 1
#define HAVE_STRDUP 1
#define HAVE_STRFTIME 1
#define HAVE_STRICMP 1
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1
#define HAVE_STRSTR 1
#define HAVE_STRUCT_TIMEVAL 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_SOCKIO_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_TIME_H 1
#define HAVE_UNAME 1
#define HAVE_UNISTD_H 1
#define HAVE_UTIME 1
#define HAVE_UTIME_H 1
#define HAVE_WRITABLE_ARGV 1
#define HAVE_ZLIB_H 1
#define HAVE_SYS_IOCTL_H 1

#define NEED_MALLOC_H 1

#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_SIZE_T 4

#define USE_MANUAL 1
#define USE_OPENSSL 1
#define CURL_DISABLE_LDAP 1

#define OS "AmigaOS"







<





<
<



<
<
<
<
<
<


<







<



<








<










<







29
30
31
32
33
34
35

36
37
38
39
40


41
42
43






44
45

46
47
48
49
50
51
52

53
54
55

56
57
58
59
60
61
62
63

64
65
66
67
68
69
70
71
72
73

74
75
76
77
78
79
80
/* ================================================================ */

#ifdef __AMIGA__ /* Any AmigaOS flavour */

#define HAVE_ARPA_INET_H 1
#define HAVE_CLOSESOCKET_CAMEL 1
#define HAVE_ERRNO_H 1

#define HAVE_INTTYPES_H 1
#define HAVE_IOCTLSOCKET_CAMEL 1
#define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1
#define HAVE_LIBZ 1
#define HAVE_LONGLONG 1


#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NET_IF_H 1






#define HAVE_PWD_H 1
#define HAVE_RAND_EGD 1

#define HAVE_SELECT 1
#define HAVE_SETJMP_H 1
#define HAVE_SIGNAL 1
#define HAVE_SIGNAL_H 1
#define HAVE_SOCKET 1
#define HAVE_STRCASECMP 1
#define HAVE_STRDUP 1

#define HAVE_STRICMP 1
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1

#define HAVE_STRUCT_TIMEVAL 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_SOCKIO_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_TIME_H 1

#define HAVE_UNISTD_H 1
#define HAVE_UTIME 1
#define HAVE_UTIME_H 1
#define HAVE_WRITABLE_ARGV 1
#define HAVE_ZLIB_H 1
#define HAVE_SYS_IOCTL_H 1

#define NEED_MALLOC_H 1

#define SIZEOF_INT 4

#define SIZEOF_SIZE_T 4

#define USE_MANUAL 1
#define USE_OPENSSL 1
#define CURL_DISABLE_LDAP 1

#define OS "AmigaOS"
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
#define HAVE_RECV 1
#define RECV_TYPE_ARG1 long
#define RECV_TYPE_ARG2 char *
#define RECV_TYPE_ARG3 long
#define RECV_TYPE_ARG4 long
#define RECV_TYPE_RETV long

#define HAVE_RECVFROM 1
#define RECVFROM_TYPE_ARG1 long
#define RECVFROM_TYPE_ARG2 char
#define RECVFROM_TYPE_ARG3 long
#define RECVFROM_TYPE_ARG4 long
#define RECVFROM_TYPE_ARG5 struct sockaddr
#define RECVFROM_TYPE_ARG6 long
#define RECVFROM_TYPE_RETV long

#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
#define SEND_TYPE_ARG2 char *
#define SEND_TYPE_ARG3 int
#define SEND_TYPE_ARG4 int
#define SEND_TYPE_RETV int

#endif /* __AMIGA__ */
#endif /* HEADER_CURL_CONFIG_AMIGAOS_H */







<
<
<
<
<
<
<
<
<










115
116
117
118
119
120
121









122
123
124
125
126
127
128
129
130
131
#define HAVE_RECV 1
#define RECV_TYPE_ARG1 long
#define RECV_TYPE_ARG2 char *
#define RECV_TYPE_ARG3 long
#define RECV_TYPE_ARG4 long
#define RECV_TYPE_RETV long










#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
#define SEND_TYPE_ARG2 char *
#define SEND_TYPE_ARG3 int
#define SEND_TYPE_ARG4 int
#define SEND_TYPE_RETV int

#endif /* __AMIGA__ */
#endif /* HEADER_CURL_CONFIG_AMIGAOS_H */
Changes to jni/curl/lib/config-dos.h.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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

#define HAVE_ARPA_INET_H       1
#define HAVE_ASSERT_H          1
#define HAVE_ERRNO_H           1
#define HAVE_FCNTL_H           1
#define HAVE_FREEADDRINFO      1
#define HAVE_GETADDRINFO       1
#define HAVE_GETPROTOBYNAME    1
#define HAVE_GETTIMEOFDAY      1
#define HAVE_IO_H              1
#define HAVE_IOCTL             1
#define HAVE_IOCTL_FIONBIO     1
#define HAVE_IOCTLSOCKET       1
#define HAVE_IOCTLSOCKET_FIONBIO   1
#define HAVE_LOCALE_H          1
#define HAVE_LONGLONG          1
#define HAVE_MEMORY_H          1
#define HAVE_NETDB_H           1
#define HAVE_NETINET_IN_H      1
#define HAVE_NETINET_TCP_H     1
#define HAVE_NET_IF_H          1
#define HAVE_PROCESS_H         1
#define HAVE_RECV              1
#define HAVE_RECVFROM          1
#define HAVE_SELECT            1
#define HAVE_SEND              1
#define HAVE_SETJMP_H          1
#define HAVE_SETLOCALE         1
#define HAVE_SETMODE           1
#define HAVE_SIGNAL            1
#define HAVE_SOCKET            1
#define HAVE_STRDUP            1
#define HAVE_STRICMP           1
#define HAVE_STRTOLL           1
#define HAVE_STRUCT_TIMEVAL    1
#define HAVE_STRUCT_IN6_ADDR   1
#define HAVE_SYS_IOCTL_H       1
#define HAVE_SYS_SOCKET_H      1
#define HAVE_SYS_STAT_H        1
#define HAVE_SYS_TYPES_H       1
#define HAVE_TIME_H            1
#define HAVE_UNISTD_H          1

#define NEED_MALLOC_H          1

#define SIZEOF_INT             4
#define SIZEOF_LONG            4
#define SIZEOF_LONG_DOUBLE     16
#define SIZEOF_SHORT           2
#define SIZEOF_SIZE_T          4
#define SIZEOF_CURL_OFF_T      4
#define STDC_HEADERS           1
#define TIME_WITH_SYS_TIME     1

/* Qualifiers for send(), recv(), and recvfrom() */

#define SEND_TYPE_ARG1         int
#define SEND_QUAL_ARG2         const
#define SEND_TYPE_ARG2         void *
#define SEND_TYPE_ARG3         int
#define SEND_TYPE_ARG4         int
#define SEND_TYPE_RETV         int

#define RECV_TYPE_ARG1         int
#define RECV_TYPE_ARG2         void *
#define RECV_TYPE_ARG3         int
#define RECV_TYPE_ARG4         int
#define RECV_TYPE_RETV         int

#define RECVFROM_TYPE_ARG1     int
#define RECVFROM_TYPE_ARG2     void
#define RECVFROM_TYPE_ARG3     int
#define RECVFROM_TYPE_ARG4     int
#define RECVFROM_TYPE_ARG5     struct sockaddr
#define RECVFROM_TYPE_ARG6     int
#define RECVFROM_TYPE_RETV     int
#define RECVFROM_TYPE_ARG2_IS_VOID 1

#define BSD

/* CURLDEBUG definition enables memory tracking */
/* #define CURLDEBUG */

/* USE_ZLIB on cmd-line */
#ifdef USE_ZLIB
  #define HAVE_ZLIB_H            1
  #define HAVE_LIBZ              1
#endif

/* USE_OPENSSL on cmd-line */
#ifdef USE_OPENSSL
  #define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
  #define OPENSSL_NO_KRB5        1
#endif

/* to disable LDAP */
#define CURL_DISABLE_LDAP        1

#define in_addr_t  u_long

#if defined(__HIGHC__) || \
    (defined(__GNUC__) && (__GNUC__ < 4))







<


<





<






<











<











<
<





|














<
<
<
<
<
<
<
<
<











<
<
<
<
<
<







41
42
43
44
45
46
47

48
49

50
51
52
53
54

55
56
57
58
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

#define HAVE_ARPA_INET_H       1
#define HAVE_ASSERT_H          1
#define HAVE_ERRNO_H           1
#define HAVE_FCNTL_H           1
#define HAVE_FREEADDRINFO      1
#define HAVE_GETADDRINFO       1

#define HAVE_GETTIMEOFDAY      1
#define HAVE_IO_H              1

#define HAVE_IOCTL_FIONBIO     1
#define HAVE_IOCTLSOCKET       1
#define HAVE_IOCTLSOCKET_FIONBIO   1
#define HAVE_LOCALE_H          1
#define HAVE_LONGLONG          1

#define HAVE_NETDB_H           1
#define HAVE_NETINET_IN_H      1
#define HAVE_NETINET_TCP_H     1
#define HAVE_NET_IF_H          1
#define HAVE_PROCESS_H         1
#define HAVE_RECV              1

#define HAVE_SELECT            1
#define HAVE_SEND              1
#define HAVE_SETJMP_H          1
#define HAVE_SETLOCALE         1
#define HAVE_SETMODE           1
#define HAVE_SIGNAL            1
#define HAVE_SOCKET            1
#define HAVE_STRDUP            1
#define HAVE_STRICMP           1
#define HAVE_STRTOLL           1
#define HAVE_STRUCT_TIMEVAL    1

#define HAVE_SYS_IOCTL_H       1
#define HAVE_SYS_SOCKET_H      1
#define HAVE_SYS_STAT_H        1
#define HAVE_SYS_TYPES_H       1
#define HAVE_TIME_H            1
#define HAVE_UNISTD_H          1

#define NEED_MALLOC_H          1

#define SIZEOF_INT             4
#define SIZEOF_LONG            4


#define SIZEOF_SIZE_T          4
#define SIZEOF_CURL_OFF_T      4
#define STDC_HEADERS           1
#define TIME_WITH_SYS_TIME     1

/* Qualifiers for send() and recv() */

#define SEND_TYPE_ARG1         int
#define SEND_QUAL_ARG2         const
#define SEND_TYPE_ARG2         void *
#define SEND_TYPE_ARG3         int
#define SEND_TYPE_ARG4         int
#define SEND_TYPE_RETV         int

#define RECV_TYPE_ARG1         int
#define RECV_TYPE_ARG2         void *
#define RECV_TYPE_ARG3         int
#define RECV_TYPE_ARG4         int
#define RECV_TYPE_RETV         int










#define BSD

/* CURLDEBUG definition enables memory tracking */
/* #define CURLDEBUG */

/* USE_ZLIB on cmd-line */
#ifdef USE_ZLIB
  #define HAVE_ZLIB_H            1
  #define HAVE_LIBZ              1
#endif







/* to disable LDAP */
#define CURL_DISABLE_LDAP        1

#define in_addr_t  u_long

#if defined(__HIGHC__) || \
    (defined(__GNUC__) && (__GNUC__ < 4))
Changes to jni/curl/lib/config-mac.h.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
#define HAVE_ARPA_INET_H        1
#define HAVE_UNISTD_H           1
#define HAVE_NET_IF_H           1
#define HAVE_SYS_TYPES_H        1
#define HAVE_GETTIMEOFDAY       1
#define HAVE_FCNTL_H            1
#define HAVE_SYS_STAT_H         1
#define HAVE_ALLOCA_H           1
#define HAVE_STDLIB_H           1
#define HAVE_TIME_H             1
#define HAVE_UTIME_H            1
#define HAVE_SYS_TIME_H         1
#define HAVE_SYS_UTIME_H        1

#define TIME_WITH_SYS_TIME      1

#define HAVE_ALARM              1
#define HAVE_FTRUNCATE          1
#define HAVE_UTIME              1
#define HAVE_SETVBUF            1
#define HAVE_STRFTIME           1
#define HAVE_INET_ADDR          1
#define HAVE_MEMCPY             1
#define HAVE_SELECT             1
#define HAVE_SOCKET             1
#define HAVE_STRUCT_TIMEVAL     1

#define HAVE_SIGACTION          1
#define HAVE_SIGNAL_H           1

#ifdef MACOS_SSL_SUPPORT
#  define USE_OPENSSL           1
#endif

#define CURL_DISABLE_LDAP       1

#define HAVE_RAND_STATUS        1
#define HAVE_RAND_EGD           1

#define HAVE_IOCTL              1
#define HAVE_IOCTL_FIONBIO      1

#define SIZEOF_INT              4
#define SIZEOF_SHORT            2
#define SIZEOF_SIZE_T           4

#define HAVE_RECV 1
#define RECV_TYPE_ARG1 int
#define RECV_TYPE_ARG2 void *
#define RECV_TYPE_ARG3 size_t
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV ssize_t

#define HAVE_RECVFROM 1
#define RECVFROM_TYPE_ARG1 int
#define RECVFROM_TYPE_ARG2 void
#define RECVFROM_TYPE_ARG3 size_t
#define RECVFROM_TYPE_ARG4 int
#define RECVFROM_TYPE_ARG5 struct sockaddr
#define RECVFROM_TYPE_ARG6 int
#define RECVFROM_TYPE_RETV ssize_t
#define RECVFROM_TYPE_ARG2_IS_VOID 1

#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
#define SEND_TYPE_ARG2 void *
#define SEND_TYPE_ARG3 size_T
#define SEND_TYPE_ARG4 int
#define SEND_TYPE_RETV ssize_t







<











<
<
<
<













<


<



<









<
<
<
<
<
<
<
<
<
<







43
44
45
46
47
48
49

50
51
52
53
54
55
56
57
58
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
#define HAVE_ARPA_INET_H        1
#define HAVE_UNISTD_H           1
#define HAVE_NET_IF_H           1
#define HAVE_SYS_TYPES_H        1
#define HAVE_GETTIMEOFDAY       1
#define HAVE_FCNTL_H            1
#define HAVE_SYS_STAT_H         1

#define HAVE_STDLIB_H           1
#define HAVE_TIME_H             1
#define HAVE_UTIME_H            1
#define HAVE_SYS_TIME_H         1
#define HAVE_SYS_UTIME_H        1

#define TIME_WITH_SYS_TIME      1

#define HAVE_ALARM              1
#define HAVE_FTRUNCATE          1
#define HAVE_UTIME              1




#define HAVE_SELECT             1
#define HAVE_SOCKET             1
#define HAVE_STRUCT_TIMEVAL     1

#define HAVE_SIGACTION          1
#define HAVE_SIGNAL_H           1

#ifdef MACOS_SSL_SUPPORT
#  define USE_OPENSSL           1
#endif

#define CURL_DISABLE_LDAP       1


#define HAVE_RAND_EGD           1


#define HAVE_IOCTL_FIONBIO      1

#define SIZEOF_INT              4

#define SIZEOF_SIZE_T           4

#define HAVE_RECV 1
#define RECV_TYPE_ARG1 int
#define RECV_TYPE_ARG2 void *
#define RECV_TYPE_ARG3 size_t
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV ssize_t











#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
#define SEND_TYPE_ARG2 void *
#define SEND_TYPE_ARG3 size_T
#define SEND_TYPE_ARG4 int
#define SEND_TYPE_RETV ssize_t
Changes to jni/curl/lib/config-os400.h.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
#pragma enum(int)

#undef PACKAGE

/* Version number of this archive. */
#undef VERSION

/* Define if you have the getpass function.  */
#undef HAVE_GETPASS

/* Define cpu-machine-OS */
#define OS "OS/400"

/* OS400 supports a 3-argument ASCII version of gethostbyaddr_r(), but its
 *  prototype is incompatible with the "standard" one (1st argument is not
 *  const). However, getaddrinfo() is supported (ASCII version defined as
 *  a local wrapper in setup-os400.h) in a threadsafe way: we can then
 *  configure getaddrinfo() as such and get rid of gethostbyname_r() without
 *  loss of threadsafeness. */
#undef HAVE_GETHOSTBYNAME_R
#undef HAVE_GETHOSTBYNAME_R_3
#undef HAVE_GETHOSTBYNAME_R_5
#undef HAVE_GETHOSTBYNAME_R_6
#define HAVE_GETADDRINFO
#define HAVE_GETADDRINFO_THREADSAFE

/* Define if you need the _REENTRANT define for some functions */
#undef NEED_REENTRANT

/* Define if you have the Kerberos4 libraries (including -ldes) */
#undef HAVE_KRB4

/* Define if you want to enable IPv6 support */
#define ENABLE_IPV6

/* Define if struct sockaddr_in6 has the sin6_scope_id member */
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* Define this to 'int' if ssize_t is not an available typedefed type */
#undef ssize_t

/* Define this as a suitable file to read random data from */
#undef RANDOM_FILE

/* Define this to your Entropy Gathering Daemon socket pathname */
#undef EGD_SOCKET

/* Define to 1 if you have the alarm function. */
#define HAVE_ALARM 1

/* Define if you have the <alloca.h> header file. */
#undef HAVE_ALLOCA_H

/* Define if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H

/* Define if you have the `closesocket' function. */
#undef HAVE_CLOSESOCKET

/* Define if you have the <errno.h> header file. */
#define HAVE_ERRNO_H

/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H

/* Define if you have the `geteuid' function. */
#define HAVE_GETEUID

/* Define if you have the `gethostname' function. */
#define HAVE_GETHOSTNAME

/* Define if you have the <getopt.h> header file. */
#undef HAVE_GETOPT_H

/* Define if you have the `getpass_r' function. */
#undef HAVE_GETPASS_R

/* Define to 1 if you have the getpeername function. */
#define HAVE_GETPEERNAME 1

/* Define if you have the `getpwuid' function. */
#define HAVE_GETPWUID

/* Define if you have the `getservbyname' function. */
#define HAVE_GETSERVBYNAME

/* Define to 1 if you have the getsockname function. */
#define HAVE_GETSOCKNAME 1

/* Define if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY

/* Define if you have the `timeval' struct. */
#define HAVE_STRUCT_TIMEVAL

/* Define if you have the `inet_addr' function. */
#define HAVE_INET_ADDR

/* Define if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H

/* Define if you have the <io.h> header file. */
#undef HAVE_IO_H

/* Define if you have the `krb_get_our_ip_for_realm' function. */
#undef HAVE_KRB_GET_OUR_IP_FOR_REALM

/* Define if you have the <krb.h> header file. */
#undef HAVE_KRB_H

/* Define if you have the `nsl' library (-lnsl). */
#undef HAVE_LIBNSL

/* Define if you have the `resolv' library (-lresolv). */
#undef HAVE_LIBRESOLV

/* Define if you have the `resolve' library (-lresolve). */
#undef HAVE_LIBRESOLVE

/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET

/* Define if you have GSS API. */
#define HAVE_GSSAPI

/* Define if you have the GNU gssapi libraries */
#undef HAVE_GSSGNU

/* Define if you have the Heimdal gssapi libraries */
#define HAVE_GSSHEIMDAL

/* Define if you have the MIT gssapi libraries */
#undef HAVE_GSSMIT

/* Define if you have the `ucb' library (-lucb). */
#undef HAVE_LIBUCB

/* Define if you have the `localtime_r' function. */
#define HAVE_LOCALTIME_R

/* Define if you have the <malloc.h> header file. */
#define HAVE_MALLOC_H

/* Define if you need the malloc.h header file even with stdlib.h  */
/* #define NEED_MALLOC_H 1 */

/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define if you have the <netdb.h> header file. */
#define HAVE_NETDB_H

/* Define if you have the <netinet/if_ether.h> header file. */
#undef HAVE_NETINET_IF_ETHER_H

/* Define if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H

/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H

/* Define if you have the <openssl/crypto.h> header file. */
#undef HAVE_OPENSSL_CRYPTO_H

/* Define if you have the <openssl/err.h> header file. */
#undef HAVE_OPENSSL_ERR_H

/* Define if you have the <openssl/pem.h> header file. */
#undef HAVE_OPENSSL_PEM_H

/* Define if you have the <openssl/rsa.h> header file. */
#undef HAVE_OPENSSL_RSA_H

/* Define if you have the <openssl/ssl.h> header file. */
#undef HAVE_OPENSSL_SSL_H

/* Define if you have the <openssl/x509.h> header file. */
#undef HAVE_OPENSSL_X509_H

/* Define if you have the <pem.h> header file. */
#undef HAVE_PEM_H

/* Define if you have the <pwd.h> header file. */
#define HAVE_PWD_H

/* Define if you have the `RAND_egd' function. */
#undef HAVE_RAND_EGD

/* Define if you have the `RAND_screen' function. */
#undef HAVE_RAND_SCREEN

/* Define if you have the `RAND_status' function. */
#undef HAVE_RAND_STATUS

/* Define if you have the `select' function. */
#define HAVE_SELECT

/* Define if you have the `setvbuf' function. */
#define HAVE_SETVBUF

/* Define if you have the `sigaction' function. */
#define HAVE_SIGACTION

/* Define if you have the `signal' function. */
#undef HAVE_SIGNAL

/* Define if you have the <signal.h> header file. */







<
<
<



















<
<
<


















<
<
<


















<
<
<









<
<
<









<
<
<






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















<
<
<
<
<
<
<
<
<



<
<
<



<
<
<






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






<
<
<
<
<
<



<
<
<







31
32
33
34
35
36
37



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56



57
58
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
#pragma enum(int)

#undef PACKAGE

/* Version number of this archive. */
#undef VERSION




/* Define cpu-machine-OS */
#define OS "OS/400"

/* OS400 supports a 3-argument ASCII version of gethostbyaddr_r(), but its
 *  prototype is incompatible with the "standard" one (1st argument is not
 *  const). However, getaddrinfo() is supported (ASCII version defined as
 *  a local wrapper in setup-os400.h) in a threadsafe way: we can then
 *  configure getaddrinfo() as such and get rid of gethostbyname_r() without
 *  loss of threadsafeness. */
#undef HAVE_GETHOSTBYNAME_R
#undef HAVE_GETHOSTBYNAME_R_3
#undef HAVE_GETHOSTBYNAME_R_5
#undef HAVE_GETHOSTBYNAME_R_6
#define HAVE_GETADDRINFO
#define HAVE_GETADDRINFO_THREADSAFE

/* Define if you need the _REENTRANT define for some functions */
#undef NEED_REENTRANT




/* Define if you want to enable IPv6 support */
#define ENABLE_IPV6

/* Define if struct sockaddr_in6 has the sin6_scope_id member */
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* Define this to 'int' if ssize_t is not an available typedefed type */
#undef ssize_t

/* Define this as a suitable file to read random data from */
#undef RANDOM_FILE

/* Define this to your Entropy Gathering Daemon socket pathname */
#undef EGD_SOCKET

/* Define to 1 if you have the alarm function. */
#define HAVE_ALARM 1




/* Define if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H

/* Define if you have the `closesocket' function. */
#undef HAVE_CLOSESOCKET

/* Define if you have the <errno.h> header file. */
#define HAVE_ERRNO_H

/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H

/* Define if you have the `geteuid' function. */
#define HAVE_GETEUID

/* Define if you have the `gethostname' function. */
#define HAVE_GETHOSTNAME




/* Define if you have the `getpass_r' function. */
#undef HAVE_GETPASS_R

/* Define to 1 if you have the getpeername function. */
#define HAVE_GETPEERNAME 1

/* Define if you have the `getpwuid' function. */
#define HAVE_GETPWUID




/* Define to 1 if you have the getsockname function. */
#define HAVE_GETSOCKNAME 1

/* Define if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY

/* Define if you have the `timeval' struct. */
#define HAVE_STRUCT_TIMEVAL




/* Define if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H

/* Define if you have the <io.h> header file. */
#undef HAVE_IO_H
















/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET

/* Define if you have GSS API. */
#define HAVE_GSSAPI

/* Define if you have the GNU gssapi libraries */
#undef HAVE_GSSGNU

/* Define if you have the Heimdal gssapi libraries */
#define HAVE_GSSHEIMDAL

/* Define if you have the MIT gssapi libraries */
#undef HAVE_GSSMIT










/* Define if you need the malloc.h header file even with stdlib.h  */
/* #define NEED_MALLOC_H 1 */




/* Define if you have the <netdb.h> header file. */
#define HAVE_NETDB_H




/* Define if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H

/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H






















/* Define if you have the <pwd.h> header file. */
#define HAVE_PWD_H

/* Define if you have the `RAND_egd' function. */
#undef HAVE_RAND_EGD







/* Define if you have the `select' function. */
#define HAVE_SELECT




/* Define if you have the `sigaction' function. */
#define HAVE_SIGACTION

/* Define if you have the `signal' function. */
#undef HAVE_SIGNAL

/* Define if you have the <signal.h> header file. */
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

/* Define if you have the `stricmp' function. */
#define HAVE_STRICMP

/* Define if you have the `strdup' function. */
#define HAVE_STRDUP


/* Define if you have the `strftime' function. */
#define HAVE_STRFTIME

/* Define if you have the <strings.h> header file. */
#define HAVE_STRINGS_H

/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H

/* Define if you have the <stropts.h> header file. */
#undef HAVE_STROPTS_H

/* Define if you have the `strstr' function. */
#define HAVE_STRSTR

/* Define if you have the `strtok_r' function. */
#define HAVE_STRTOK_R

/* Define if you have the `strtoll' function. */
#undef HAVE_STRTOLL             /* Allows ASCII compile on V5R1. */

/* Define if you have the <sys/param.h> header file. */







<
<
<
<









<
<
<







184
185
186
187
188
189
190




191
192
193
194
195
196
197
198
199



200
201
202
203
204
205
206

/* Define if you have the `stricmp' function. */
#define HAVE_STRICMP

/* Define if you have the `strdup' function. */
#define HAVE_STRDUP





/* Define if you have the <strings.h> header file. */
#define HAVE_STRINGS_H

/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H

/* Define if you have the <stropts.h> header file. */
#undef HAVE_STROPTS_H




/* Define if you have the `strtok_r' function. */
#define HAVE_STRTOK_R

/* Define if you have the `strtoll' function. */
#undef HAVE_STRTOLL             /* Allows ASCII compile on V5R1. */

/* Define if you have the <sys/param.h> header file. */
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

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */
#define HAVE_TIME_H

/* Define if you have the `uname' function. */
#undef HAVE_UNAME

/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H

/* Define if you have the <x509.h> header file. */
#undef HAVE_X509_H

/* Name of package */
#undef PACKAGE

/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT              4

/* The size of a `long double', as computed by sizeof. */
#define SIZEOF_LONG_DOUBLE      8

/* Define if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG

/* The size of a `long long', as computed by sizeof. */
#define SIZEOF_LONG_LONG        8

/* The size of `short', as computed by sizeof. */
#define SIZEOF_SHORT            2

/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG             4

/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T           4

/* The size of `curl_off_t', as computed by sizeof. */
#define SIZEOF_CURL_OFF_T       8

/* Whether long long constants must be suffixed by LL. */

#define HAVE_LL

/* Define this if you have struct sockaddr_storage */
#define HAVE_STRUCT_SOCKADDR_STORAGE

/* Define if you have the ANSI C header files. */
#define STDC_HEADERS

/* Define if you can safely include both <sys/time.h> and <time.h>. */







<
<
<



<
<
<






<
<
<






<
<
<









<
<
<
<







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

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */
#define HAVE_TIME_H




/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H




/* Name of package */
#undef PACKAGE

/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT              4




/* Define if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG

/* The size of a `long long', as computed by sizeof. */
#define SIZEOF_LONG_LONG        8




/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG             4

/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T           4

/* The size of `curl_off_t', as computed by sizeof. */
#define SIZEOF_CURL_OFF_T       8





/* Define this if you have struct sockaddr_storage */
#define HAVE_STRUCT_SOCKADDR_STORAGE

/* Define if you have the ANSI C header files. */
#define STDC_HEADERS

/* Define if you can safely include both <sys/time.h> and <time.h>. */
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407

/* type to use in place of in_addr_t if not defined */
#define in_addr_t       unsigned long

/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t

/* Define if you have the ioctl function. */
#define HAVE_IOCTL

/* Define if you have a working ioctl FIONBIO function. */
#define HAVE_IOCTL_FIONBIO

/* Define if you have a working ioctl SIOCGIFADDR function. */
#define HAVE_IOCTL_SIOCGIFADDR

/* To disable LDAP */







<
<
<







290
291
292
293
294
295
296



297
298
299
300
301
302
303

/* type to use in place of in_addr_t if not defined */
#define in_addr_t       unsigned long

/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t




/* Define if you have a working ioctl FIONBIO function. */
#define HAVE_IOCTL_FIONBIO

/* Define if you have a working ioctl SIOCGIFADDR function. */
#define HAVE_IOCTL_SIOCGIFADDR

/* To disable LDAP */
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

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int

/* Define if you have the recvfrom function. */
#define HAVE_RECVFROM

/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 int

/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char

/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int

/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int

/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr

/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int

/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int

/* Define if you have the send function. */
#define HAVE_SEND

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 int

/* Define to the type qualifier of arg 2 for send. */







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







323
324
325
326
327
328
329
























330
331
332
333
334
335
336

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int

























/* Define if you have the send function. */
#define HAVE_SEND

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 int

/* Define to the type qualifier of arg 2 for send. */
Changes to jni/curl/lib/config-plan9.h.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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

#define STDC_HEADERS 1

#ifdef _BITS64
#error not implement
#else
#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define SIZEOF_OFF_T 8
#define SIZEOF_CURL_OFF_T 4 /* curl_off_t = timediff_t = int */
#define SIZEOF_SIZE_T 4
#define SIZEOF_TIME_T 4
#endif

#define HAVE_RECV 1
#define RECV_TYPE_ARG1 int
#define RECV_TYPE_ARG2 void *
#define RECV_TYPE_ARG3 int
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV int

#define HAVE_RECVFROM 1
#define RECVFROM_TYPE_ARG1 int
#define RECVFROM_TYPE_ARG2 void
#define RECVFROM_TYPE_ARG2_IS_VOID 1
#define RECVFROM_TYPE_ARG3 int
#define RECVFROM_TYPE_ARG4 int
#define RECVFROM_TYPE_ARG5 void
#define RECVFROM_TYPE_ARG5_IS_VOID 1
#define RECVFROM_TYPE_ARG6 int
#define RECVFROM_TYPE_ARG6_IS_VOID 1
#define RECVFROM_TYPE_RETV int

#define HAVE_SELECT 1
#define SELECT_TYPE_ARG1 int
#define SELECT_TYPE_ARG234 fd_set *
#define SELECT_TYPE_ARG5 struct timeval *
#define SELECT_TYPE_RETV int

#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_TYPE_ARG2 void *
#define SEND_QUAL_ARG2
#define SEND_TYPE_ARG3 int
#define SEND_TYPE_ARG4 int
#define SEND_TYPE_RETV int

#define HAVE_ALARM 1
#define HAVE_ARPA_INET_H 1
#define HAVE_ASSERT_H 1
#define HAVE_BASENAME 1
#define HAVE_BOOL_T 1
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
#define HAVE_ERRNO_H 1
#define HAVE_FCNTL 1
#define HAVE_FCNTL_H 1
#define HAVE_FREEADDRINFO 1
#define HAVE_FTRUNCATE 1
#define HAVE_GETADDRINFO 1
#define HAVE_GETEUID 1
#define HAVE_GETHOSTBYNAME 1
#define HAVE_GETHOSTNAME 1
#define HAVE_GETPPID 1
#define HAVE_GETPROTOBYNAME 1
#define HAVE_GETPWUID 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_GMTIME_R 1
#define HAVE_INET_ADDR 1
#define HAVE_INET_NTOP 1
#define HAVE_INET_PTON 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTL 1
#define HAVE_LIBGEN_H 1
#define HAVE_LIBZ 1
#define HAVE_LL 1
#define HAVE_LOCALE_H 1
#define HAVE_LOCALTIME_R 1
#define HAVE_LONGLONG 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NETINET_TCP_H 1
#define HAVE_PWD_H 1
#define HAVE_SYS_SELECT_H 1

#define USE_OPENSSL 1
#define HAVE_OPENSSL_CRYPTO_H 1
#define HAVE_OPENSSL_ERR_H 1
#define HAVE_OPENSSL_PEM_H 1
#define HAVE_OPENSSL_PKCS12_H 1
#define HAVE_OPENSSL_RSA_H 1
#define HAVE_OPENSSL_SSL_H 1
#define HAVE_OPENSSL_X509_H 1

#define HAVE_PIPE 1
#define HAVE_POLL 1
#define HAVE_POLL_FINE 1
#define HAVE_POLL_H 1
#define HAVE_PTHREAD_H 1
#define HAVE_RAND_STATUS 1
#define HAVE_SETJMP_H 1
#define HAVE_SETLOCALE 1

#define HAVE_SETSOCKOPT 1
#define HAVE_SOCK_OPTS 1 /* for /sys/include/ape/sys/socket.h */

#define HAVE_SIGACTION 1
#define HAVE_SIGNAL 1
#define HAVE_SIGNAL_H 1
#define HAVE_SIGSETJMP 1
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
#define HAVE_SOCKET 1
#define HAVE_SSL_GET_SHUTDOWN 1
#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
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_UIO_H 1
#define HAVE_SYS_UN_H 1
#define HAVE_TERMIOS_H 1
#define HAVE_TIME_H 1
#define HAVE_UNAME 1
#define HAVE_UNISTD_H 1
#define HAVE_UTIME 1
#define HAVE_UTIME_H 1
#define HAVE_WRITEV 1

#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 */







<














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



















<







<


<



<



<


<

<








<
<
<
<
<
<
<


<



<



<
<
<









<




<










<



<



<





<











44
45
46
47
48
49
50

51
52
53
54
55
56
57
58
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

#define STDC_HEADERS 1

#ifdef _BITS64
#error not implement
#else
#define SIZEOF_INT 4

#define SIZEOF_LONG 4
#define SIZEOF_OFF_T 8
#define SIZEOF_CURL_OFF_T 4 /* curl_off_t = timediff_t = int */
#define SIZEOF_SIZE_T 4
#define SIZEOF_TIME_T 4
#endif

#define HAVE_RECV 1
#define RECV_TYPE_ARG1 int
#define RECV_TYPE_ARG2 void *
#define RECV_TYPE_ARG3 int
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV int













#define HAVE_SELECT 1
#define SELECT_TYPE_ARG1 int
#define SELECT_TYPE_ARG234 fd_set *
#define SELECT_TYPE_ARG5 struct timeval *
#define SELECT_TYPE_RETV int

#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_TYPE_ARG2 void *
#define SEND_QUAL_ARG2
#define SEND_TYPE_ARG3 int
#define SEND_TYPE_ARG4 int
#define SEND_TYPE_RETV int

#define HAVE_ALARM 1
#define HAVE_ARPA_INET_H 1
#define HAVE_ASSERT_H 1
#define HAVE_BASENAME 1
#define HAVE_BOOL_T 1

#define HAVE_ERRNO_H 1
#define HAVE_FCNTL 1
#define HAVE_FCNTL_H 1
#define HAVE_FREEADDRINFO 1
#define HAVE_FTRUNCATE 1
#define HAVE_GETADDRINFO 1
#define HAVE_GETEUID 1

#define HAVE_GETHOSTNAME 1
#define HAVE_GETPPID 1

#define HAVE_GETPWUID 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_GMTIME_R 1

#define HAVE_INET_NTOP 1
#define HAVE_INET_PTON 1
#define HAVE_INTTYPES_H 1

#define HAVE_LIBGEN_H 1
#define HAVE_LIBZ 1

#define HAVE_LOCALE_H 1

#define HAVE_LONGLONG 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NETINET_TCP_H 1
#define HAVE_PWD_H 1
#define HAVE_SYS_SELECT_H 1

#define USE_OPENSSL 1








#define HAVE_PIPE 1

#define HAVE_POLL_FINE 1
#define HAVE_POLL_H 1
#define HAVE_PTHREAD_H 1

#define HAVE_SETJMP_H 1
#define HAVE_SETLOCALE 1




#define HAVE_SIGACTION 1
#define HAVE_SIGNAL 1
#define HAVE_SIGNAL_H 1
#define HAVE_SIGSETJMP 1
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
#define HAVE_SOCKET 1
#define HAVE_SSL_GET_SHUTDOWN 1
#define HAVE_STDBOOL_H 1
#define HAVE_STDINT_H 1

#define HAVE_STDLIB_H 1
#define HAVE_STRCASECMP 1
#define HAVE_STRDUP 1
#define HAVE_STRING_H 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
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1

#define HAVE_SYS_UN_H 1
#define HAVE_TERMIOS_H 1
#define HAVE_TIME_H 1

#define HAVE_UNISTD_H 1
#define HAVE_UTIME 1
#define HAVE_UTIME_H 1


#define HAVE_ZLIB_H 1

#define HAVE_POSIX_STRERROR_R 1
#define HAVE_STRERROR_R 1


#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.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

/* Name of this package! */
#undef PACKAGE

/* Version number of this archive. */
#undef VERSION

/* Define if you have the getpass function.  */
#undef HAVE_GETPASS

/* Define cpu-machine-OS */
#define OS "ARM-RISC OS"

/* Define if you want the built-in manual */
#define USE_MANUAL

/* Define if you have the gethostbyname_r() function with 3 arguments */
#undef HAVE_GETHOSTBYNAME_R_3

/* Define if you have the gethostbyname_r() function with 5 arguments */
#undef HAVE_GETHOSTBYNAME_R_5

/* Define if you have the gethostbyname_r() function with 6 arguments */
#undef HAVE_GETHOSTBYNAME_R_6

/* Define if you need the _REENTRANT define for some functions */
#undef NEED_REENTRANT

/* Define if you have the Kerberos4 libraries (including -ldes) */
#undef HAVE_KRB4

/* Define if you want to enable IPv6 support */
#undef ENABLE_IPV6

/* Define if struct sockaddr_in6 has the sin6_scope_id member */
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* Define this to 'int' if ssize_t is not an available typedefed type */







<
<
<


















<
<
<







30
31
32
33
34
35
36



37
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 of this package! */
#undef PACKAGE

/* Version number of this archive. */
#undef VERSION




/* Define cpu-machine-OS */
#define OS "ARM-RISC OS"

/* Define if you want the built-in manual */
#define USE_MANUAL

/* Define if you have the gethostbyname_r() function with 3 arguments */
#undef HAVE_GETHOSTBYNAME_R_3

/* Define if you have the gethostbyname_r() function with 5 arguments */
#undef HAVE_GETHOSTBYNAME_R_5

/* Define if you have the gethostbyname_r() function with 6 arguments */
#undef HAVE_GETHOSTBYNAME_R_6

/* Define if you need the _REENTRANT define for some functions */
#undef NEED_REENTRANT




/* Define if you want to enable IPv6 support */
#undef ENABLE_IPV6

/* Define if struct sockaddr_in6 has the sin6_scope_id member */
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* Define this to 'int' if ssize_t is not an available typedefed type */
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

/* Define if you want to enable IPv6 support */
#undef ENABLE_IPV6

/* Define if you have the alarm function. */
#define HAVE_ALARM

/* Define if you have the <alloca.h> header file. */
#define HAVE_ALLOCA_H

/* Define if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H

/* Define if you have the `closesocket' function. */
#undef HAVE_CLOSESOCKET

/* Define if you have the <errno.h> header file. */







<
<
<







69
70
71
72
73
74
75



76
77
78
79
80
81
82

/* Define if you want to enable IPv6 support */
#undef ENABLE_IPV6

/* Define if you have the alarm function. */
#define HAVE_ALARM




/* Define if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H

/* Define if you have the `closesocket' function. */
#undef HAVE_CLOSESOCKET

/* Define if you have the <errno.h> header file. */
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

/* Define if you have the `gethostbyname_r' function. */
#undef HAVE_GETHOSTBYNAME_R

/* Define if you have the `gethostname' function. */
#define HAVE_GETHOSTNAME

/* Define if you have the <getopt.h> header file. */
#define HAVE_GETOPT_H

/* Define if you have the `getpass_r' function. */
#undef HAVE_GETPASS_R

/* Define if you have the `getpwuid' function. */
#undef HAVE_GETPWUID

/* Define if you have the `getservbyname' function. */
#undef HAVE_GETSERVBYNAME

/* Define if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY

/* Define if you have the `timeval' struct. */
#define HAVE_STRUCT_TIMEVAL

/* Define if you have the `inet_addr' function. */
#undef HAVE_INET_ADDR

/* Define if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H

/* Define if you have the <io.h> header file. */
#undef HAVE_IO_H

/* Define if you have the `krb_get_our_ip_for_realm' function. */
#undef HAVE_KRB_GET_OUR_IP_FOR_REALM

/* Define if you have the <krb.h> header file. */
#undef HAVE_KRB_H

/* Define if you have the `nsl' library (-lnsl). */
#undef HAVE_LIBNSL

/* Define if you have the `resolv' library (-lresolv). */
#undef HAVE_LIBRESOLV

/* Define if you have the `resolve' library (-lresolve). */
#undef HAVE_LIBRESOLVE

/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET

/* Define if you have the `ucb' library (-lucb). */
#undef HAVE_LIBUCB

/* Define if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R

/* Define if you have the <malloc.h> header file. */
#define HAVE_MALLOC_H

/* Define if you need the malloc.h header file even with stdlib.h  */
/* #define NEED_MALLOC_H 1 */

/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define if you have the <netdb.h> header file. */
#define HAVE_NETDB_H

/* Define if you have the <netinet/if_ether.h> header file. */
#undef HAVE_NETINET_IF_ETHER_H

/* Define if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H

/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H

/* Define if you have the <openssl/crypto.h> header file. */
#undef HAVE_OPENSSL_CRYPTO_H

/* Define if you have the <openssl/err.h> header file. */
#undef HAVE_OPENSSL_ERR_H

/* Define if you have the <openssl/pem.h> header file. */
#undef HAVE_OPENSSL_PEM_H

/* Define if you have the <openssl/rsa.h> header file. */
#undef HAVE_OPENSSL_RSA_H

/* Define if you have the <openssl/ssl.h> header file. */
#undef HAVE_OPENSSL_SSL_H

/* Define if you have the <openssl/x509.h> header file. */
#undef HAVE_OPENSSL_X509_H

/* Define if you have the <pem.h> header file. */
#undef HAVE_PEM_H

/* Define if you have the <pwd.h> header file. */
#undef HAVE_PWD_H

/* Define if you have the `RAND_egd' function. */
#undef HAVE_RAND_EGD

/* Define if you have the `RAND_screen' function. */
#undef HAVE_RAND_SCREEN

/* Define if you have the `RAND_status' function. */
#undef HAVE_RAND_STATUS

/* Define if you have the `select' function. */
#define HAVE_SELECT

/* Define if you have the `setvbuf' function. */
#undef HAVE_SETVBUF

/* Define if you have the `sigaction' function. */
#undef HAVE_SIGACTION

/* Define if you have the `signal' function. */
#define HAVE_SIGNAL

/* Define if you have the <signal.h> header file. */







<
<
<






<
<
<






<
<
<






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



<
<
<
<
<
<
<
<
<



<
<
<



<
<
<






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






<
<
<
<
<
<



<
<
<







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

/* Define if you have the `gethostbyname_r' function. */
#undef HAVE_GETHOSTBYNAME_R

/* Define if you have the `gethostname' function. */
#define HAVE_GETHOSTNAME




/* Define if you have the `getpass_r' function. */
#undef HAVE_GETPASS_R

/* Define if you have the `getpwuid' function. */
#undef HAVE_GETPWUID




/* Define if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY

/* Define if you have the `timeval' struct. */
#define HAVE_STRUCT_TIMEVAL




/* Define if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H

/* Define if you have the <io.h> header file. */
#undef HAVE_IO_H
















/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET










/* Define if you need the malloc.h header file even with stdlib.h  */
/* #define NEED_MALLOC_H 1 */




/* Define if you have the <netdb.h> header file. */
#define HAVE_NETDB_H




/* Define if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H

/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H






















/* Define if you have the <pwd.h> header file. */
#undef HAVE_PWD_H

/* Define if you have the `RAND_egd' function. */
#undef HAVE_RAND_EGD







/* Define if you have the `select' function. */
#define HAVE_SELECT




/* Define if you have the `sigaction' function. */
#undef HAVE_SIGACTION

/* Define if you have the `signal' function. */
#define HAVE_SIGNAL

/* Define if you have the <signal.h> header file. */
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

/* Define if you have the `strcmpi' function. */
#undef HAVE_STRCMPI

/* Define if you have the `strdup' function. */
#define HAVE_STRDUP

/* Define if you have the `strftime' function. */
#define HAVE_STRFTIME

/* Define if you have the `stricmp' function. */
#define HAVE_STRICMP

/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H

/* Define if you have the `strstr' function. */
#define HAVE_STRSTR

/* Define if you have the `strtok_r' function. */
#undef HAVE_STRTOK_R

/* Define if you have the `strtoll' function. */
#undef HAVE_STRTOLL

/* Define if you have the <sys/param.h> header file. */







<
<
<









<
<
<







168
169
170
171
172
173
174



175
176
177
178
179
180
181
182
183



184
185
186
187
188
189
190

/* Define if you have the `strcmpi' function. */
#undef HAVE_STRCMPI

/* Define if you have the `strdup' function. */
#define HAVE_STRDUP




/* Define if you have the `stricmp' function. */
#define HAVE_STRICMP

/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H




/* Define if you have the `strtok_r' function. */
#undef HAVE_STRTOK_R

/* Define if you have the `strtoll' function. */
#undef HAVE_STRTOLL

/* Define if you have the <sys/param.h> header file. */
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

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */
#undef HAVE_TIME_H

/* Define if you have the `uname' function. */
#define HAVE_UNAME

/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H

/* Define if you have the <x509.h> header file. */
#undef HAVE_X509_H

/* Name of package */
#undef PACKAGE

/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4

/* The size of `long double', as computed by sizeof. */
#undef SIZEOF_LONG_DOUBLE

/* The size of `long long', as computed by sizeof. */
#undef SIZEOF_LONG_LONG

/* The size of `short', as computed by sizeof. */
#define SIZEOF_SHORT 2

/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4

/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS

/* Define if you can safely include both <sys/time.h> and <time.h>. */







<
<
<



<
<
<






<
<
<



<
<
<







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

/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define if you have the <time.h> header file. */
#undef HAVE_TIME_H




/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H




/* Name of package */
#undef PACKAGE

/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4




/* The size of `long long', as computed by sizeof. */
#undef SIZEOF_LONG_LONG




/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4

/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS

/* Define if you can safely include both <sys/time.h> and <time.h>. */
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371

/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t

/* Define to `int' if <sys/types.h> does not define. */
#undef ssize_t

/* Define if you have the ioctl function. */
#define HAVE_IOCTL

/* Define if you have a working ioctl FIONBIO function. */
#define HAVE_IOCTL_FIONBIO

/* to disable LDAP */
#define CURL_DISABLE_LDAP

/* Define if you have the recv function. */







<
<
<







259
260
261
262
263
264
265



266
267
268
269
270
271
272

/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t

/* Define to `int' if <sys/types.h> does not define. */
#undef ssize_t




/* Define if you have a working ioctl FIONBIO function. */
#define HAVE_IOCTL_FIONBIO

/* to disable LDAP */
#define CURL_DISABLE_LDAP

/* Define if you have the recv function. */
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

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV ssize_t

/* Define 1 if you have the recvfrom function. */
#define HAVE_RECVFROM 1

/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 int

/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 void

/* Define if the type pointed by arg 2 for recvfrom is void. */
#define RECVFROM_TYPE_ARG2_IS_VOID

/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 size_t

/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int

/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr

/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int

/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV ssize_t

/* Define if you have the send function. */
#define HAVE_SEND 1

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 int

/* Define to the type qualifier of arg 2 for send. */







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







283
284
285
286
287
288
289



























290
291
292
293
294
295
296

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV ssize_t




























/* Define if you have the send function. */
#define HAVE_SEND 1

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 int

/* Define to the type qualifier of arg 2 for send. */
Changes to jni/curl/lib/config-win32.h.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

/* Define if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1

/* Define if you have the <getopt.h> header file. */
#if defined(__MINGW32__) || defined(__POCC__)
#define HAVE_GETOPT_H 1
#endif

/* Define to 1 if you have the <inttypes.h> header file. */
#if defined(_MSC_VER) && (_MSC_VER >= 1800)
#define HAVE_INTTYPES_H 1
#endif

/* Define if you have the <io.h> header file. */
#define HAVE_IO_H 1







<
<
<
<
<







40
41
42
43
44
45
46





47
48
49
50
51
52
53

/* Define if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1






/* Define to 1 if you have the <inttypes.h> header file. */
#if defined(_MSC_VER) && (_MSC_VER >= 1800)
#define HAVE_INTTYPES_H 1
#endif

/* Define if you have the <io.h> header file. */
#define HAVE_IO_H 1
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
/* ---------------------------------------------------------------- */
/*                             FUNCTIONS                            */
/* ---------------------------------------------------------------- */

/* Define if you have the closesocket function. */
#define HAVE_CLOSESOCKET 1

/* Define if you don't have vprintf but do have _doprnt. */
/* #define HAVE_DOPRNT 1 */

/* Define if you have the ftruncate function. */
/* #define HAVE_FTRUNCATE 1 */

/* Define to 1 if you have the `getpeername' function. */
#define HAVE_GETPEERNAME 1

/* Define to 1 if you have the getsockname function. */
#define HAVE_GETSOCKNAME 1

/* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1

/* Define if you have the getpass function. */
/* #define HAVE_GETPASS 1 */

/* Define if you have the getservbyname function. */
#define HAVE_GETSERVBYNAME 1

/* Define if you have the getprotobyname function. */
#define HAVE_GETPROTOBYNAME

/* Define if you have the gettimeofday function. */
/* #define HAVE_GETTIMEOFDAY 1 */

/* Define if you have the inet_addr function. */
#define HAVE_INET_ADDR 1

/* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1

/* Define if you have a working ioctlsocket FIONBIO function. */
#define HAVE_IOCTLSOCKET_FIONBIO 1

/* Define if you have the RAND_screen function when using SSL. */
#define HAVE_RAND_SCREEN 1

/* Define if you have the `RAND_status' function when using SSL. */
#define HAVE_RAND_STATUS 1

/* Define if you have the `CRYPTO_cleanup_all_ex_data' function.
   This is present in OpenSSL versions after 0.9.6b */
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1

/* Define if you have the select function. */
#define HAVE_SELECT 1

/* Define if you have the setlocale function. */
#define HAVE_SETLOCALE 1

/* Define if you have the setmode function. */
#define HAVE_SETMODE 1

/* 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(__POCC__) || \
    (defined(_MSC_VER) && (_MSC_VER >= 1800))
#define HAVE_STRTOLL 1
#endif

/* Define if you have the utime function. */







<
<
<












<
<
<
<
<
<
<
<
<



<
<
<






<
<
<
<
<
<
<
<
<
<









<
<
<











<
<
<



<
<
<
<
<
<







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
/* ---------------------------------------------------------------- */
/*                             FUNCTIONS                            */
/* ---------------------------------------------------------------- */

/* Define if you have the closesocket function. */
#define HAVE_CLOSESOCKET 1




/* Define if you have the ftruncate function. */
/* #define HAVE_FTRUNCATE 1 */

/* Define to 1 if you have the `getpeername' function. */
#define HAVE_GETPEERNAME 1

/* Define to 1 if you have the getsockname function. */
#define HAVE_GETSOCKNAME 1

/* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1










/* Define if you have the gettimeofday function. */
/* #define HAVE_GETTIMEOFDAY 1 */




/* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1

/* Define if you have a working ioctlsocket FIONBIO function. */
#define HAVE_IOCTLSOCKET_FIONBIO 1











/* Define if you have the select function. */
#define HAVE_SELECT 1

/* Define if you have the setlocale function. */
#define HAVE_SETLOCALE 1

/* Define if you have the setmode function. */
#define HAVE_SETMODE 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 stricmp function. */
#define HAVE_STRICMP 1







/* Define if you have the strtoll function. */
#if defined(__MINGW32__) || defined(__POCC__) || \
    (defined(_MSC_VER) && (_MSC_VER >= 1800))
#define HAVE_STRTOLL 1
#endif

/* Define if you have the utime function. */
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

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int

/* Define if you have the recvfrom function. */
#define HAVE_RECVFROM 1

/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 SOCKET

/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char

/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int

/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int

/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr

/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int

/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int

/* Define if you have the send function. */
#define HAVE_SEND 1

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 SOCKET

/* Define to the type qualifier of arg 2 for send. */







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







229
230
231
232
233
234
235
























236
237
238
239
240
241
242

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int

























/* Define if you have the send function. */
#define HAVE_SEND 1

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 SOCKET

/* Define to the type qualifier of arg 2 for send. */
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
/* ---------------------------------------------------------------- */
/*                            TYPE SIZES                            */
/* ---------------------------------------------------------------- */

/* Define to the size of `int', as computed by sizeof. */
#define SIZEOF_INT 4

/* Define to the size of `long double', as computed by sizeof. */
#define SIZEOF_LONG_DOUBLE 16

/* Define to the size of `long long', as computed by sizeof. */
/* #define SIZEOF_LONG_LONG 8 */

/* Define to the size of `short', as computed by sizeof. */
#define SIZEOF_SHORT 2

/* Define to the size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4

/* Define to the size of `size_t', as computed by sizeof. */
#if defined(_WIN64)
#  define SIZEOF_SIZE_T 8
#else







<
<
<



<
<
<







276
277
278
279
280
281
282



283
284
285



286
287
288
289
290
291
292
/* ---------------------------------------------------------------- */
/*                            TYPE SIZES                            */
/* ---------------------------------------------------------------- */

/* Define to the size of `int', as computed by sizeof. */
#define SIZEOF_INT 4




/* Define to the size of `long long', as computed by sizeof. */
/* #define SIZEOF_LONG_LONG 8 */




/* Define to the size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4

/* Define to the size of `size_t', as computed by sizeof. */
#if defined(_WIN64)
#  define SIZEOF_SIZE_T 8
#else
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
#  undef LWIP_POSIX_SOCKETS_IO_NAMES
#  undef RECV_TYPE_ARG1
#  undef RECV_TYPE_ARG3
#  undef SEND_TYPE_ARG1
#  undef SEND_TYPE_ARG3
#  define HAVE_FREEADDRINFO
#  define HAVE_GETADDRINFO
#  define HAVE_GETHOSTBYNAME
#  define HAVE_GETHOSTBYNAME_R
#  define HAVE_GETHOSTBYNAME_R_6
#  define LWIP_POSIX_SOCKETS_IO_NAMES 0
#  define RECV_TYPE_ARG1 int
#  define RECV_TYPE_ARG3 size_t
#  define SEND_TYPE_ARG1 int
#  define SEND_TYPE_ARG3 size_t







<







312
313
314
315
316
317
318

319
320
321
322
323
324
325
#  undef LWIP_POSIX_SOCKETS_IO_NAMES
#  undef RECV_TYPE_ARG1
#  undef RECV_TYPE_ARG3
#  undef SEND_TYPE_ARG1
#  undef SEND_TYPE_ARG3
#  define HAVE_FREEADDRINFO
#  define HAVE_GETADDRINFO

#  define HAVE_GETHOSTBYNAME_R
#  define HAVE_GETHOSTBYNAME_R_6
#  define LWIP_POSIX_SOCKETS_IO_NAMES 0
#  define RECV_TYPE_ARG1 int
#  define RECV_TYPE_ARG3 size_t
#  define SEND_TYPE_ARG1 int
#  define SEND_TYPE_ARG3 size_t
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
#define USE_UNIX_SOCKETS

/* ---------------------------------------------------------------- */
/*                       ADDITIONAL DEFINITIONS                     */
/* ---------------------------------------------------------------- */

/* Define cpu-machine-OS */
#undef OS
#if defined(_M_IX86) || defined(__i386__) /* x86 (MSVC or gcc) */
#define OS "i386-pc-win32"
#elif defined(_M_X64) || defined(__x86_64__) /* x86_64 (MSVC >=2005 or gcc) */
#define OS "x86_64-pc-win32"
#elif defined(_M_IA64) || defined(__ia64__) /* Itanium */
#define OS "ia64-pc-win32"
#elif defined(_M_ARM_NT) || defined(__arm__) /* ARMv7-Thumb2 (Windows RT) */
#define OS "thumbv7a-pc-win32"
#elif defined(_M_ARM64) || defined(__aarch64__) /* ARM64 (Windows 10) */
#define OS "aarch64-pc-win32"
#else
#define OS "unknown-pc-win32"

#endif

/* Name of package */
#define PACKAGE "curl"

/* If you want to build curl with the built-in manual */
#define USE_MANUAL 1

#if defined(__POCC__) || defined(USE_IPV6)
#  define ENABLE_IPV6 1
#endif

#endif /* HEADER_CURL_CONFIG_WIN32_H */







|












>













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
#define USE_UNIX_SOCKETS

/* ---------------------------------------------------------------- */
/*                       ADDITIONAL DEFINITIONS                     */
/* ---------------------------------------------------------------- */

/* Define cpu-machine-OS */
#if !defined(OS)
#if defined(_M_IX86) || defined(__i386__) /* x86 (MSVC or gcc) */
#define OS "i386-pc-win32"
#elif defined(_M_X64) || defined(__x86_64__) /* x86_64 (MSVC >=2005 or gcc) */
#define OS "x86_64-pc-win32"
#elif defined(_M_IA64) || defined(__ia64__) /* Itanium */
#define OS "ia64-pc-win32"
#elif defined(_M_ARM_NT) || defined(__arm__) /* ARMv7-Thumb2 (Windows RT) */
#define OS "thumbv7a-pc-win32"
#elif defined(_M_ARM64) || defined(__aarch64__) /* ARM64 (Windows 10) */
#define OS "aarch64-pc-win32"
#else
#define OS "unknown-pc-win32"
#endif
#endif

/* Name of package */
#define PACKAGE "curl"

/* If you want to build curl with the built-in manual */
#define USE_MANUAL 1

#if defined(__POCC__) || defined(USE_IPV6)
#  define ENABLE_IPV6 1
#endif

#endif /* HEADER_CURL_CONFIG_WIN32_H */
Changes to jni/curl/lib/config-win32ce.h.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

/* Define if you have the <errno.h> header file.  */
/* #define HAVE_ERRNO_H 1 */

/* Define if you have the <fcntl.h> header file.  */
#define HAVE_FCNTL_H 1

/* Define if you have the <getopt.h> header file.  */
/* #define HAVE_GETOPT_H 1 */

/* Define if you have the <io.h> header file.  */
#define HAVE_IO_H 1

/* Define if you need the malloc.h header file even with stdlib.h  */
#define NEED_MALLOC_H 1

/* Define if you have the <netdb.h> header file.  */







<
<
<







40
41
42
43
44
45
46



47
48
49
50
51
52
53

/* Define if you have the <errno.h> header file.  */
/* #define HAVE_ERRNO_H 1 */

/* Define if you have the <fcntl.h> header file.  */
#define HAVE_FCNTL_H 1




/* Define if you have the <io.h> header file.  */
#define HAVE_IO_H 1

/* Define if you need the malloc.h header file even with stdlib.h  */
#define NEED_MALLOC_H 1

/* Define if you have the <netdb.h> header file.  */
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
/* ---------------------------------------------------------------- */
/*                             FUNCTIONS                            */
/* ---------------------------------------------------------------- */

/* Define if you have the closesocket function.  */
#define HAVE_CLOSESOCKET 1

/* Define if you don't have vprintf but do have _doprnt.  */
/* #define HAVE_DOPRNT 1 */

/* Define if you have the gethostname function.  */
#define HAVE_GETHOSTNAME 1

/* Define if you have the getpass function.  */
/* #define HAVE_GETPASS 1 */

/* Define if you have the getservbyname function.  */
#define HAVE_GETSERVBYNAME 1

/* Define if you have the gettimeofday function.  */
/*  #define HAVE_GETTIMEOFDAY 1 */

/* Define if you have the inet_addr function.  */
#define HAVE_INET_ADDR 1

/* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1

/* Define if you have a working ioctlsocket FIONBIO function. */
#define HAVE_IOCTLSOCKET_FIONBIO 1

/* Define if you have the RAND_screen function when using SSL  */
#define HAVE_RAND_SCREEN 1

/* Define if you have the `RAND_status' function when using SSL. */
#define HAVE_RAND_STATUS 1

/* Define if you have the select function.  */
#define HAVE_SELECT 1

/* 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 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__)
#define HAVE_STRTOLL 1
#endif

/* Define if you have the utime function */
#define HAVE_UTIME 1







<
<
<



<
<
<
<
<
<



<
<
<






<
<
<
<
<
<



<
<
<









<
<
<



<
<
<
<
<
<







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
/* ---------------------------------------------------------------- */
/*                             FUNCTIONS                            */
/* ---------------------------------------------------------------- */

/* Define if you have the closesocket function.  */
#define HAVE_CLOSESOCKET 1




/* Define if you have the gethostname function.  */
#define HAVE_GETHOSTNAME 1







/* Define if you have the gettimeofday function.  */
/*  #define HAVE_GETTIMEOFDAY 1 */




/* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1

/* Define if you have a working ioctlsocket FIONBIO function. */
#define HAVE_IOCTLSOCKET_FIONBIO 1







/* Define if you have the select function.  */
#define HAVE_SELECT 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 stricmp function. */
/* #define HAVE_STRICMP 1 */







/* Define if you have the strtoll function.  */
#if defined(__MINGW32__)
#define HAVE_STRTOLL 1
#endif

/* Define if you have the utime function */
#define HAVE_UTIME 1
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

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int

/* Define if you have the recvfrom function. */
#define HAVE_RECVFROM 1

/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 SOCKET

/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char

/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int

/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int

/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr

/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int

/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int

/* Define if you have the send function. */
#define HAVE_SEND 1

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 SOCKET

/* Define to the type qualifier of arg 2 for send. */







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







181
182
183
184
185
186
187
























188
189
190
191
192
193
194

/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int

/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int

























/* Define if you have the send function. */
#define HAVE_SEND 1

/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 SOCKET

/* Define to the type qualifier of arg 2 for send. */
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
/* ---------------------------------------------------------------- */
/*                            TYPE SIZES                            */
/* ---------------------------------------------------------------- */

/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4

/* The size of `long double', as computed by sizeof. */
#define SIZEOF_LONG_DOUBLE 16

/* The size of `long long', as computed by sizeof. */
/* #define SIZEOF_LONG_LONG 8 */

/* The size of `short', as computed by sizeof. */
#define SIZEOF_SHORT 2

/* Define to the size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4

/* The size of `size_t', as computed by sizeof. */
#if defined(_WIN64)
#  define SIZEOF_SIZE_T 8
#else







<
<
<



<
<
<







224
225
226
227
228
229
230



231
232
233



234
235
236
237
238
239
240
/* ---------------------------------------------------------------- */
/*                            TYPE SIZES                            */
/* ---------------------------------------------------------------- */

/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4




/* The size of `long long', as computed by sizeof. */
/* #define SIZEOF_LONG_LONG 8 */




/* Define to the size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4

/* The size of `size_t', as computed by sizeof. */
#if defined(_WIN64)
#  define SIZEOF_SIZE_T 8
#else
Changes to jni/curl/lib/connect.c.
762
763
764
765
766
767
768







769
770
771
772
773
774
775
  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 */








  /* persist connection info in session handle */
  Curl_persistconninfo(data, conn, local_ip, local_port);
}

/* After a TCP connection to the proxy has been verified, this function does
   the next magic steps. If 'done' isn't set TRUE, it is not done yet and







>
>
>
>
>
>
>







762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
  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 */
#ifdef ENABLE_QUIC
  else if(conn->transport == TRNSPRT_QUIC) {
    if(!conn->bits.reuse)
      Curl_conninfo_remote(data, conn, sockfd);
    Curl_conninfo_local(data, sockfd, local_ip, &local_port);
  }
#endif

  /* persist connection info in session handle */
  Curl_persistconninfo(data, conn, local_ip, local_port);
}

/* After a TCP connection to the proxy has been verified, this function does
   the next magic steps. If 'done' isn't set TRUE, it is not done yet and
899
900
901
902
903
904
905


906
907
908
909
910
911
912
      if(!result && *connected) {
        /* use this socket from now on */
        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;
      }
      /* When a QUIC connect attempt fails, the better error explanation is in
         'result' and not in errno */
      if(result) {
        conn->tempsock[i] = CURL_SOCKET_BAD;
        error = SOCKERRNO;







>
>







906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
      if(!result && *connected) {
        /* use this socket from now on */
        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");
        if(conn->tempsock[other] != CURL_SOCKET_BAD)
          Curl_quic_disconnect(data, conn, other);
        return CURLE_OK;
      }
      /* When a QUIC connect attempt fails, the better error explanation is in
         'result' and not in errno */
      if(result) {
        conn->tempsock[i] = CURL_SOCKET_BAD;
        error = SOCKERRNO;
1600
1601
1602
1603
1604
1605
1606


1607




1608



1609


1610
1611
1612
1613
1614
1615
1616
   * curl_sockaddr structure with enough space available to directly hold
   * any protocol-specific address structures. The variable declared here
   * will be used to pass / receive data to/from the fopensocket callback
   * if this has been set, before that, it is initialized from parameters.
   */

  addr->family = ai->ai_family;


  addr->socktype = (conn->transport == TRNSPRT_TCP) ? SOCK_STREAM : SOCK_DGRAM;




  addr->protocol = conn->transport != TRNSPRT_TCP ? IPPROTO_UDP :



    ai->ai_protocol;


  addr->addrlen = ai->ai_addrlen;

  if(addr->addrlen > sizeof(struct Curl_sockaddr_storage))
     addr->addrlen = sizeof(struct Curl_sockaddr_storage);
  memcpy(&addr->sa_addr, ai->ai_addr, addr->addrlen);

  if(data->set.fopensocket) {







>
>
|
>
>
>
>
|
>
>
>
|
>
>







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
   * curl_sockaddr structure with enough space available to directly hold
   * any protocol-specific address structures. The variable declared here
   * will be used to pass / receive data to/from the fopensocket callback
   * if this has been set, before that, it is initialized from parameters.
   */

  addr->family = ai->ai_family;
  switch(conn->transport) {
  case TRNSPRT_TCP:
    addr->socktype = SOCK_STREAM;
    addr->protocol = IPPROTO_TCP;
    break;
  case TRNSPRT_UNIX:
    addr->socktype = SOCK_STREAM;
    addr->protocol = IPPROTO_IP;
    break;
  default: /* UDP and QUIC */
    addr->socktype = SOCK_DGRAM;
    addr->protocol = IPPROTO_UDP;
    break;
  }
  addr->addrlen = ai->ai_addrlen;

  if(addr->addrlen > sizeof(struct Curl_sockaddr_storage))
     addr->addrlen = sizeof(struct Curl_sockaddr_storage);
  memcpy(&addr->sa_addr, ai->ai_addr, addr->addrlen);

  if(data->set.fopensocket) {
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
  }

#if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
  if(conn->scope_id && (addr->family == AF_INET6)) {
    struct sockaddr_in6 * const sa6 = (void *)&addr->sa_addr;
    sa6->sin6_scope_id = conn->scope_id;
  }
#endif

#if defined(__linux__) && defined(IP_RECVERR)
  if(addr->socktype == SOCK_DGRAM) {
    int one = 1;
    switch(addr->family) {
    case AF_INET:
      (void)setsockopt(*sockfd, SOL_IP, IP_RECVERR, &one, sizeof(one));
      break;
    case AF_INET6:
      (void)setsockopt(*sockfd, SOL_IPV6, IPV6_RECVERR, &one, sizeof(one));
      break;
    }
  }
#endif

  return CURLE_OK;
}

/*
 * Curl_conncontrol() marks streams or connection for closure.







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







1681
1682
1683
1684
1685
1686
1687














1688
1689
1690
1691
1692
1693
1694
  }

#if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
  if(conn->scope_id && (addr->family == AF_INET6)) {
    struct sockaddr_in6 * const sa6 = (void *)&addr->sa_addr;
    sa6->sin6_scope_id = conn->scope_id;
  }














#endif

  return CURLE_OK;
}

/*
 * Curl_conncontrol() marks streams or connection for closure.
Changes to jni/curl/lib/cookie.c.
436
437
438
439
440
441
442
























443
444
445
446
447
448
449
    /* there must be a dot present, but that dot must not be a trailing dot */
    char *dot = strchr(domain, '.');
    if(dot)
      return dot[1] ? FALSE : TRUE;
  }
  return TRUE;
}

























/*
 * Curl_cookie_add
 *
 * Add a single cookie line to the cookie keeping object. Be aware that
 * sometimes we get an IP-only host name, and that might also be a numerical
 * IPv6 address.







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







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
    /* there must be a dot present, but that dot must not be a trailing dot */
    char *dot = strchr(domain, '.');
    if(dot)
      return dot[1] ? FALSE : TRUE;
  }
  return TRUE;
}

/*
  RFC 6265 section 4.1.1 says a server should accept this range:

  cookie-octet    = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E

  But Firefox and Chrome as of June 2022 accept space, comma and double-quotes
  fine. The prime reason for filtering out control bytes is that some HTTP
  servers return 400 for requests that contain such.
*/
static int invalid_octets(const char *p)
{
  /* Reject all bytes \x01 - \x1f (*except* \x09, TAB) + \x7f */
  static const char badoctets[] = {
    "\x01\x02\x03\x04\x05\x06\x07\x08\x0a"
    "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
    "\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f"
  };
  size_t vlen, len;
  /* scan for all the octets that are *not* in cookie-octet */
  len = strcspn(p, badoctets);
  vlen = strlen(p);
  return (len != vlen);
}

/*
 * Curl_cookie_add
 *
 * Add a single cookie line to the cookie keeping object. Be aware that
 * sometimes we get an IP-only host name, and that might also be a numerical
 * IPv6 address.
591
592
593
594
595
596
597





598
599
600
601
602
603
604
          co->name = strdup(name);
          co->value = strdup(whatptr);
          done = TRUE;
          if(!co->name || !co->value) {
            badcookie = TRUE;
            break;
          }





        }
        else if(!len) {
          /*
           * this was a "<name>=" with no content, and we must allow
           * 'secure' and 'httponly' specified this weirdly
           */
          done = TRUE;







>
>
>
>
>







615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
          co->name = strdup(name);
          co->value = strdup(whatptr);
          done = TRUE;
          if(!co->name || !co->value) {
            badcookie = TRUE;
            break;
          }
          if(invalid_octets(whatptr) || invalid_octets(name)) {
            infof(data, "invalid octets in name/value, cookie dropped");
            badcookie = TRUE;
            break;
          }
        }
        else if(!len) {
          /*
           * this was a "<name>=" with no content, and we must allow
           * 'secure' and 'httponly' specified this weirdly
           */
          done = TRUE;
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
          free(co->spath); /* if this is set again */
          co->spath = sanitize_cookie_path(co->path);
          if(!co->spath) {
            badcookie = TRUE; /* out of memory bad */
            break;
          }
        }
        else if(strcasecompare("domain", name)) {
          bool is_ip;

          /*
           * Now, we make sure that our host is within the given domain, or
           * the given domain is not valid and thus cannot be set.
           */








|







662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
          free(co->spath); /* if this is set again */
          co->spath = sanitize_cookie_path(co->path);
          if(!co->spath) {
            badcookie = TRUE; /* out of memory bad */
            break;
          }
        }
        else if(strcasecompare("domain", name) && whatptr[0]) {
          bool is_ip;

          /*
           * Now, we make sure that our host is within the given domain, or
           * the given domain is not valid and thus cannot be set.
           */

1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
            newco->next = mainco;

            /* point the main to us */
            mainco = newco;

            matches++;
            if(matches >= MAX_COOKIE_SEND_AMOUNT) {
              infof(data, "Included max number of cookies (%u) in request!",
                    matches);
              break;
            }
          }
          else
            goto fail;
        }







|







1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
            newco->next = mainco;

            /* point the main to us */
            mainco = newco;

            matches++;
            if(matches >= MAX_COOKIE_SEND_AMOUNT) {
              infof(data, "Included max number of cookies (%zu) in request!",
                    matches);
              break;
            }
          }
          else
            goto fail;
        }
Changes to jni/curl/lib/curl_config.h.cmake.
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

/* Define if you want to enable IPv6 support */
#cmakedefine ENABLE_IPV6 1

/* Define to 1 if you have the alarm function. */
#cmakedefine HAVE_ALARM 1

/* Define to 1 if you have the <alloca.h> header file. */
#cmakedefine HAVE_ALLOCA_H 1

/* Define to 1 if you have the <arpa/inet.h> header file. */
#cmakedefine HAVE_ARPA_INET_H 1

/* Define to 1 if you have the <arpa/tftp.h> header file. */
#cmakedefine HAVE_ARPA_TFTP_H 1

/* Define to 1 if you have the <assert.h> header file. */
#cmakedefine HAVE_ASSERT_H 1




/* Define to 1 if you have the `fchmod' function. */
#cmakedefine HAVE_FCHMOD 1

/* Define to 1 if you have the `basename' function. */
#cmakedefine HAVE_BASENAME 1

/* Define to 1 if bool is an available type. */
#cmakedefine HAVE_BOOL_T 1

/* Define to 1 if you have the __builtin_available function. */
#cmakedefine HAVE_BUILTIN_AVAILABLE 1

/* Define to 1 if you have the clock_gettime function and monotonic timer. */
#cmakedefine HAVE_CLOCK_GETTIME_MONOTONIC 1

/* Define to 1 if you have the `closesocket' function. */
#cmakedefine HAVE_CLOSESOCKET 1

/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
#cmakedefine HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1

/* Define to 1 if you have the <dlfcn.h> header file. */
#cmakedefine HAVE_DLFCN_H 1

/* Define to 1 if you have the <errno.h> header file. */
#cmakedefine HAVE_ERRNO_H 1

/* Define to 1 if you have the fcntl function. */
#cmakedefine HAVE_FCNTL 1

/* Define to 1 if you have the <fcntl.h> header file. */







<
<
<








>
>
>



















<
<
<
<
<
<







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

/* Define if you want to enable IPv6 support */
#cmakedefine ENABLE_IPV6 1

/* Define to 1 if you have the alarm function. */
#cmakedefine HAVE_ALARM 1




/* Define to 1 if you have the <arpa/inet.h> header file. */
#cmakedefine HAVE_ARPA_INET_H 1

/* Define to 1 if you have the <arpa/tftp.h> header file. */
#cmakedefine HAVE_ARPA_TFTP_H 1

/* Define to 1 if you have the <assert.h> header file. */
#cmakedefine HAVE_ASSERT_H 1

/* Define to 1 if you have _Atomic support. */
#cmakedefine HAVE_ATOMIC 1

/* Define to 1 if you have the `fchmod' function. */
#cmakedefine HAVE_FCHMOD 1

/* Define to 1 if you have the `basename' function. */
#cmakedefine HAVE_BASENAME 1

/* Define to 1 if bool is an available type. */
#cmakedefine HAVE_BOOL_T 1

/* Define to 1 if you have the __builtin_available function. */
#cmakedefine HAVE_BUILTIN_AVAILABLE 1

/* Define to 1 if you have the clock_gettime function and monotonic timer. */
#cmakedefine HAVE_CLOCK_GETTIME_MONOTONIC 1

/* Define to 1 if you have the `closesocket' function. */
#cmakedefine HAVE_CLOSESOCKET 1







/* Define to 1 if you have the <errno.h> header file. */
#cmakedefine HAVE_ERRNO_H 1

/* Define to 1 if you have the fcntl function. */
#cmakedefine HAVE_FCNTL 1

/* Define to 1 if you have the <fcntl.h> header file. */
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222

/* Define to 1 if you have the `geteuid' function. */
#cmakedefine HAVE_GETEUID 1

/* Define to 1 if you have the `getppid' function. */
#cmakedefine HAVE_GETPPID 1

/* Define to 1 if you have the gethostbyname function. */
#cmakedefine HAVE_GETHOSTBYNAME 1

/* Define to 1 if you have the gethostbyname_r function. */
#cmakedefine HAVE_GETHOSTBYNAME_R 1

/* gethostbyname_r() takes 3 args */
#cmakedefine HAVE_GETHOSTBYNAME_R_3 1

/* gethostbyname_r() takes 5 args */







<
<
<







200
201
202
203
204
205
206



207
208
209
210
211
212
213

/* Define to 1 if you have the `geteuid' function. */
#cmakedefine HAVE_GETEUID 1

/* Define to 1 if you have the `getppid' function. */
#cmakedefine HAVE_GETPPID 1




/* Define to 1 if you have the gethostbyname_r function. */
#cmakedefine HAVE_GETHOSTBYNAME_R 1

/* gethostbyname_r() takes 3 args */
#cmakedefine HAVE_GETHOSTBYNAME_R_3 1

/* gethostbyname_r() takes 5 args */
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249

/* Define to 1 if you have the `getpass_r' function. */
#cmakedefine HAVE_GETPASS_R 1

/* Define to 1 if you have the `getppid' function. */
#cmakedefine HAVE_GETPPID 1

/* Define to 1 if you have the `getprotobyname' function. */
#cmakedefine HAVE_GETPROTOBYNAME 1

/* Define to 1 if you have the `getpeername' function. */
#cmakedefine HAVE_GETPEERNAME 1

/* Define to 1 if you have the `getsockname' function. */
#cmakedefine HAVE_GETSOCKNAME 1

/* Define to 1 if you have the `if_nametoindex' function. */







<
<
<







224
225
226
227
228
229
230



231
232
233
234
235
236
237

/* Define to 1 if you have the `getpass_r' function. */
#cmakedefine HAVE_GETPASS_R 1

/* Define to 1 if you have the `getppid' function. */
#cmakedefine HAVE_GETPPID 1




/* Define to 1 if you have the `getpeername' function. */
#cmakedefine HAVE_GETPEERNAME 1

/* Define to 1 if you have the `getsockname' function. */
#cmakedefine HAVE_GETSOCKNAME 1

/* Define to 1 if you have the `if_nametoindex' function. */
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

/* if you have the MIT gssapi libraries */
#cmakedefine HAVE_GSSMIT 1

/* Define to 1 if you have the `idna_strerror' function. */
#cmakedefine HAVE_IDNA_STRERROR 1

/* Define to 1 if you have the `idn_free' function. */
#cmakedefine HAVE_IDN_FREE 1

/* Define to 1 if you have the <idn-free.h> header file. */
#cmakedefine HAVE_IDN_FREE_H 1

/* Define to 1 if you have the <ifaddrs.h> header file. */
#cmakedefine HAVE_IFADDRS_H 1

/* Define to 1 if you have the `inet_addr' function. */
#cmakedefine HAVE_INET_ADDR 1

/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
#cmakedefine HAVE_INET_NTOP 1

/* Define to 1 if you have a IPv6 capable working inet_pton function. */
#cmakedefine HAVE_INET_PTON 1

/* Define to 1 if symbol `sa_family_t' exists */
#cmakedefine HAVE_SA_FAMILY_T 1

/* Define to 1 if symbol `ADDRESS_FAMILY' exists */
#cmakedefine HAVE_ADDRESS_FAMILY 1

/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H 1

/* Define to 1 if you have the ioctl function. */
#cmakedefine HAVE_IOCTL 1

/* Define to 1 if you have the ioctlsocket function. */
#cmakedefine HAVE_IOCTLSOCKET 1

/* Define to 1 if you have the IoctlSocket camel case function. */
#cmakedefine HAVE_IOCTLSOCKET_CAMEL 1

/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.







<
<
<
<
<
<



<
<
<















<
<
<







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

/* if you have the MIT gssapi libraries */
#cmakedefine HAVE_GSSMIT 1

/* Define to 1 if you have the `idna_strerror' function. */
#cmakedefine HAVE_IDNA_STRERROR 1







/* Define to 1 if you have the <ifaddrs.h> header file. */
#cmakedefine HAVE_IFADDRS_H 1




/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
#cmakedefine HAVE_INET_NTOP 1

/* Define to 1 if you have a IPv6 capable working inet_pton function. */
#cmakedefine HAVE_INET_PTON 1

/* Define to 1 if symbol `sa_family_t' exists */
#cmakedefine HAVE_SA_FAMILY_T 1

/* Define to 1 if symbol `ADDRESS_FAMILY' exists */
#cmakedefine HAVE_ADDRESS_FAMILY 1

/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H 1




/* Define to 1 if you have the ioctlsocket function. */
#cmakedefine HAVE_IOCTLSOCKET 1

/* Define to 1 if you have the IoctlSocket camel case function. */
#cmakedefine HAVE_IOCTLSOCKET_CAMEL 1

/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
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

/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
#cmakedefine HAVE_IOCTL_SIOCGIFADDR 1

/* Define to 1 if you have the <io.h> header file. */
#cmakedefine HAVE_IO_H 1

/* if you have the Kerberos4 libraries (including -ldes) */
#cmakedefine HAVE_KRB4 1

/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
#cmakedefine HAVE_KRB_GET_OUR_IP_FOR_REALM 1

/* Define to 1 if you have the <krb.h> header file. */
#cmakedefine HAVE_KRB_H 1

/* Define to 1 if you have the lber.h header file. */
#cmakedefine HAVE_LBER_H 1

/* Define to 1 if you have the ldapssl.h header file. */
#cmakedefine HAVE_LDAPSSL_H 1

/* Define to 1 if you have the ldap.h header file. */
#cmakedefine HAVE_LDAP_H 1

/* Use LDAPS implementation */
#cmakedefine HAVE_LDAP_SSL 1

/* Define to 1 if you have the ldap_ssl.h header file. */







<
<
<
<
<
<
<
<
<



<
<
<







315
316
317
318
319
320
321









322
323
324



325
326
327
328
329
330
331

/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
#cmakedefine HAVE_IOCTL_SIOCGIFADDR 1

/* Define to 1 if you have the <io.h> header file. */
#cmakedefine HAVE_IO_H 1










/* Define to 1 if you have the lber.h header file. */
#cmakedefine HAVE_LBER_H 1




/* Define to 1 if you have the ldap.h header file. */
#cmakedefine HAVE_LDAP_H 1

/* Use LDAPS implementation */
#cmakedefine HAVE_LDAP_SSL 1

/* Define to 1 if you have the ldap_ssl.h header file. */
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394

/* Define to 1 if you have the `idn2' library (-lidn2). */
#cmakedefine HAVE_LIBIDN2 1

/* Define to 1 if you have the idn2.h header file. */
#cmakedefine HAVE_IDN2_H 1

/* Define to 1 if you have the `resolv' library (-lresolv). */
#cmakedefine HAVE_LIBRESOLV 1

/* Define to 1 if you have the `resolve' library (-lresolve). */
#cmakedefine HAVE_LIBRESOLVE 1

/* Define to 1 if you have the `socket' library (-lsocket). */
#cmakedefine HAVE_LIBSOCKET 1

/* Define to 1 if you have the `psl' library (-lpsl). */
#cmakedefine HAVE_LIBPSL 1

/* Define to 1 if you have the <libpsl.h> header file. */







<
<
<
<
<
<







339
340
341
342
343
344
345






346
347
348
349
350
351
352

/* Define to 1 if you have the `idn2' library (-lidn2). */
#cmakedefine HAVE_LIBIDN2 1

/* Define to 1 if you have the idn2.h header file. */
#cmakedefine HAVE_IDN2_H 1







/* Define to 1 if you have the `socket' library (-lsocket). */
#cmakedefine HAVE_LIBSOCKET 1

/* Define to 1 if you have the `psl' library (-lpsl). */
#cmakedefine HAVE_LIBPSL 1

/* Define to 1 if you have the <libpsl.h> header file. */
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

/* if brotli is available */
#cmakedefine HAVE_BROTLI 1

/* if zstd is available */
#cmakedefine HAVE_ZSTD 1

/* if your compiler supports LL */
#cmakedefine HAVE_LL 1

/* Define to 1 if you have the <locale.h> header file. */
#cmakedefine HAVE_LOCALE_H 1

/* Define to 1 if you have a working localtime_r function. */
#cmakedefine HAVE_LOCALTIME_R 1

/* Define to 1 if the compiler supports the 'long long' data type. */
#cmakedefine HAVE_LONGLONG 1

/* Define to 1 if you have the malloc.h header file. */
#cmakedefine HAVE_MALLOC_H 1

/* Define to 1 if you have the <memory.h> header file. */
#cmakedefine HAVE_MEMORY_H 1

/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#cmakedefine HAVE_MSG_NOSIGNAL 1

/* Define to 1 if you have the <netdb.h> header file. */
#cmakedefine HAVE_NETDB_H 1

/* Define to 1 if you have the <netinet/in.h> header file. */
#cmakedefine HAVE_NETINET_IN_H 1

/* Define to 1 if you have the <netinet/tcp.h> header file. */
#cmakedefine HAVE_NETINET_TCP_H 1

/* Define to 1 if you have the <linux/tcp.h> header file. */
#cmakedefine HAVE_LINUX_TCP_H 1

/* Define to 1 if you have the <net/if.h> header file. */
#cmakedefine HAVE_NET_IF_H 1

/* Define to 1 if NI_WITHSCOPEID exists and works. */
#cmakedefine HAVE_NI_WITHSCOPEID 1

/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE */
#cmakedefine HAVE_OLD_GSSMIT 1

/* Define to 1 if you have the <openssl/crypto.h> header file. */
#cmakedefine HAVE_OPENSSL_CRYPTO_H 1

/* Define to 1 if you have the <openssl/err.h> header file. */
#cmakedefine HAVE_OPENSSL_ERR_H 1

/* Define to 1 if you have the <openssl/pem.h> header file. */
#cmakedefine HAVE_OPENSSL_PEM_H 1

/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
#cmakedefine HAVE_OPENSSL_PKCS12_H 1

/* Define to 1 if you have the <openssl/rsa.h> header file. */
#cmakedefine HAVE_OPENSSL_RSA_H 1

/* Define to 1 if you have the <openssl/ssl.h> header file. */
#cmakedefine HAVE_OPENSSL_SSL_H 1

/* Define to 1 if you have the <openssl/x509.h> header file. */
#cmakedefine HAVE_OPENSSL_X509_H 1

/* Define to 1 if you have the <pem.h> header file. */
#cmakedefine HAVE_PEM_H 1

/* Define to 1 if you have the `pipe' function. */
#cmakedefine HAVE_PIPE 1

/* Define to 1 if you have a working poll function. */
#cmakedefine HAVE_POLL 1

/* If you have a fine poll */
#cmakedefine HAVE_POLL_FINE 1

/* Define to 1 if you have the <poll.h> header file. */
#cmakedefine HAVE_POLL_H 1

/* Define to 1 if you have a working POSIX-style strerror_r function. */
#cmakedefine HAVE_POSIX_STRERROR_R 1

/* Define to 1 if you have the <pthread.h> header file */
#cmakedefine HAVE_PTHREAD_H 1

/* Define to 1 if you have the <pwd.h> header file. */
#cmakedefine HAVE_PWD_H 1

/* Define to 1 if you have the `RAND_egd' function. */
#cmakedefine HAVE_RAND_EGD 1

/* Define to 1 if you have the `RAND_screen' function. */
#cmakedefine HAVE_RAND_SCREEN 1

/* Define to 1 if you have the `RAND_status' function. */
#cmakedefine HAVE_RAND_STATUS 1

/* Define to 1 if you have the recv function. */
#cmakedefine HAVE_RECV 1

/* Define to 1 if you have the recvfrom function. */
#cmakedefine HAVE_RECVFROM 1

/* Define to 1 if you have the select function. */
#cmakedefine HAVE_SELECT 1

/* Define to 1 if you have the send function. */
#cmakedefine HAVE_SEND 1

/* Define to 1 if you have the 'fsetxattr' function. */







<
<
<



<
<
<



<
<
<
<
<
<


















<
<
<



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



<
<
<


















<
<
<
<
<
<



<
<
<







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

/* if brotli is available */
#cmakedefine HAVE_BROTLI 1

/* if zstd is available */
#cmakedefine HAVE_ZSTD 1




/* Define to 1 if you have the <locale.h> header file. */
#cmakedefine HAVE_LOCALE_H 1




/* Define to 1 if the compiler supports the 'long long' data type. */
#cmakedefine HAVE_LONGLONG 1







/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#cmakedefine HAVE_MSG_NOSIGNAL 1

/* Define to 1 if you have the <netdb.h> header file. */
#cmakedefine HAVE_NETDB_H 1

/* Define to 1 if you have the <netinet/in.h> header file. */
#cmakedefine HAVE_NETINET_IN_H 1

/* Define to 1 if you have the <netinet/tcp.h> header file. */
#cmakedefine HAVE_NETINET_TCP_H 1

/* Define to 1 if you have the <linux/tcp.h> header file. */
#cmakedefine HAVE_LINUX_TCP_H 1

/* Define to 1 if you have the <net/if.h> header file. */
#cmakedefine HAVE_NET_IF_H 1




/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE */
#cmakedefine HAVE_OLD_GSSMIT 1

























/* Define to 1 if you have the `pipe' function. */
#cmakedefine HAVE_PIPE 1




/* If you have a fine poll */
#cmakedefine HAVE_POLL_FINE 1

/* Define to 1 if you have the <poll.h> header file. */
#cmakedefine HAVE_POLL_H 1

/* Define to 1 if you have a working POSIX-style strerror_r function. */
#cmakedefine HAVE_POSIX_STRERROR_R 1

/* Define to 1 if you have the <pthread.h> header file */
#cmakedefine HAVE_PTHREAD_H 1

/* Define to 1 if you have the <pwd.h> header file. */
#cmakedefine HAVE_PWD_H 1

/* Define to 1 if you have the `RAND_egd' function. */
#cmakedefine HAVE_RAND_EGD 1







/* Define to 1 if you have the recv function. */
#cmakedefine HAVE_RECV 1




/* Define to 1 if you have the select function. */
#cmakedefine HAVE_SELECT 1

/* Define to 1 if you have the send function. */
#cmakedefine HAVE_SEND 1

/* Define to 1 if you have the 'fsetxattr' function. */
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553

/* Define to 1 if you have the `setmode' function. */
#cmakedefine HAVE_SETMODE 1

/* Define to 1 if you have the `setrlimit' function. */
#cmakedefine HAVE_SETRLIMIT 1

/* Define to 1 if you have the setsockopt function. */
#cmakedefine HAVE_SETSOCKOPT 1

/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
#cmakedefine HAVE_SETSOCKOPT_SO_NONBLOCK 1

/* Define to 1 if you have the sigaction function. */
#cmakedefine HAVE_SIGACTION 1

/* Define to 1 if you have the siginterrupt function. */







<
<
<







444
445
446
447
448
449
450



451
452
453
454
455
456
457

/* Define to 1 if you have the `setmode' function. */
#cmakedefine HAVE_SETMODE 1

/* Define to 1 if you have the `setrlimit' function. */
#cmakedefine HAVE_SETRLIMIT 1




/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
#cmakedefine HAVE_SETSOCKOPT_SO_NONBLOCK 1

/* Define to 1 if you have the sigaction function. */
#cmakedefine HAVE_SIGACTION 1

/* Define to 1 if you have the siginterrupt function. */
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
#cmakedefine HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* Define to 1 if you have the `socket' function. */
#cmakedefine HAVE_SOCKET 1

/* Define to 1 if you have the <ssl.h> header file. */
#cmakedefine HAVE_SSL_H 1




/* Define to 1 if you have the <stdbool.h> header file. */
#cmakedefine HAVE_STDBOOL_H 1

/* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H 1

/* Define to 1 if you have the <stdio.h> header file. */
#cmakedefine HAVE_STDIO_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H 1

/* Define to 1 if you have the strcasecmp function. */
#cmakedefine HAVE_STRCASECMP 1

/* Define to 1 if you have the strcasestr function. */
#cmakedefine HAVE_STRCASESTR 1

/* Define to 1 if you have the strcmpi function. */
#cmakedefine HAVE_STRCMPI 1

/* Define to 1 if you have the strdup function. */
#cmakedefine HAVE_STRDUP 1

/* Define to 1 if you have the strerror_r function. */
#cmakedefine HAVE_STRERROR_R 1

/* Define to 1 if you have the stricmp function. */
#cmakedefine HAVE_STRICMP 1

/* Define to 1 if you have the <strings.h> header file. */
#cmakedefine HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H 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. */
#cmakedefine HAVE_STROPTS_H 1

/* Define to 1 if you have the strstr function. */
#cmakedefine HAVE_STRSTR 1

/* Define to 1 if you have the strtok_r function. */
#cmakedefine HAVE_STRTOK_R 1

/* Define to 1 if you have the strtoll function. */
#cmakedefine HAVE_STRTOLL 1

/* if struct sockaddr_storage is defined */







>
>
>







<
<
<






<
<
<


















<
<
<
<
<
<



<
<
<







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
#cmakedefine HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* Define to 1 if you have the `socket' function. */
#cmakedefine HAVE_SOCKET 1

/* Define to 1 if you have the <ssl.h> header file. */
#cmakedefine HAVE_SSL_H 1

/* Define to 1 if you have the <stdatomic.h> header file. */
#cmakedefine HAVE_STDATOMIC_H 1

/* Define to 1 if you have the <stdbool.h> header file. */
#cmakedefine HAVE_STDBOOL_H 1

/* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H 1




/* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H 1

/* Define to 1 if you have the strcasecmp function. */
#cmakedefine HAVE_STRCASECMP 1




/* Define to 1 if you have the strcmpi function. */
#cmakedefine HAVE_STRCMPI 1

/* Define to 1 if you have the strdup function. */
#cmakedefine HAVE_STRDUP 1

/* Define to 1 if you have the strerror_r function. */
#cmakedefine HAVE_STRERROR_R 1

/* Define to 1 if you have the stricmp function. */
#cmakedefine HAVE_STRICMP 1

/* Define to 1 if you have the <strings.h> header file. */
#cmakedefine HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H 1







/* Define to 1 if you have the <stropts.h> header file. */
#cmakedefine HAVE_STROPTS_H 1




/* Define to 1 if you have the strtok_r function. */
#cmakedefine HAVE_STRTOK_R 1

/* Define to 1 if you have the strtoll function. */
#cmakedefine HAVE_STRTOLL 1

/* if struct sockaddr_storage is defined */
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

/* Define to 1 if you have the <sys/time.h> header file. */
#cmakedefine HAVE_SYS_TIME_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the <sys/uio.h> header file. */
#cmakedefine HAVE_SYS_UIO_H 1

/* Define to 1 if you have the <sys/un.h> header file. */
#cmakedefine HAVE_SYS_UN_H 1

/* Define to 1 if you have the <sys/utime.h> header file. */
#cmakedefine HAVE_SYS_UTIME_H 1

/* Define to 1 if you have the <termios.h> header file. */
#cmakedefine HAVE_TERMIOS_H 1

/* Define to 1 if you have the <termio.h> header file. */
#cmakedefine HAVE_TERMIO_H 1

/* Define to 1 if you have the <time.h> header file. */
#cmakedefine HAVE_TIME_H 1

/* Define to 1 if you have the <tld.h> header file. */
#cmakedefine HAVE_TLD_H 1

/* Define to 1 if you have the `tld_strerror' function. */
#cmakedefine HAVE_TLD_STRERROR 1

/* Define to 1 if you have the `uname' function. */
#cmakedefine HAVE_UNAME 1

/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H 1

/* Define to 1 if you have the `utime' function. */
#cmakedefine HAVE_UTIME 1

/* Define to 1 if you have the `utimes' function. */
#cmakedefine HAVE_UTIMES 1

/* Define to 1 if you have the <utime.h> header file. */
#cmakedefine HAVE_UTIME_H 1

/* Define to 1 if compiler supports C99 variadic macro style. */
#cmakedefine HAVE_VARIADIC_MACROS_C99 1

/* Define to 1 if compiler supports old gcc variadic macro style. */
#cmakedefine HAVE_VARIADIC_MACROS_GCC 1

/* Define to 1 if you have the winber.h header file. */
#cmakedefine HAVE_WINBER_H 1

/* Define to 1 if you have the windows.h header file. */
#cmakedefine HAVE_WINDOWS_H 1

/* Define to 1 if you have the winldap.h header file. */
#cmakedefine HAVE_WINLDAP_H 1

/* Define to 1 if you have the winsock2.h header file. */
#cmakedefine HAVE_WINSOCK2_H 1

/* Define this symbol if your OS supports changing the contents of argv */
#cmakedefine HAVE_WRITABLE_ARGV 1

/* Define to 1 if you have the writev function. */
#cmakedefine HAVE_WRITEV 1

/* Define to 1 if you have the ws2tcpip.h header file. */
#cmakedefine HAVE_WS2TCPIP_H 1

/* Define to 1 if you have the <x509.h> header file. */
#cmakedefine HAVE_X509_H 1

/* Define if you have the <process.h> header file. */
#cmakedefine HAVE_PROCESS_H 1

/* if you have the zlib.h header file */
#cmakedefine HAVE_ZLIB_H 1

/* Define to the sub-directory in which libtool stores uninstalled libraries.
   */
#cmakedefine LT_OBJDIR ${LT_OBJDIR}

/* If you lack a fine basename() prototype */
#cmakedefine NEED_BASENAME_PROTO 1

/* Define to 1 if you need the lber.h header file even with ldap.h */
#cmakedefine NEED_LBER_H 1

/* Define to 1 if you need the malloc.h header file even with stdlib.h */
#cmakedefine NEED_MALLOC_H 1

/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */







<
<
<















<
<
<
<
<
<
<
<
<


















<
<
<












<
<
<



<
<
<






<
<
<
<
<
<
<







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

/* Define to 1 if you have the <sys/time.h> header file. */
#cmakedefine HAVE_SYS_TIME_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H 1




/* Define to 1 if you have the <sys/un.h> header file. */
#cmakedefine HAVE_SYS_UN_H 1

/* Define to 1 if you have the <sys/utime.h> header file. */
#cmakedefine HAVE_SYS_UTIME_H 1

/* Define to 1 if you have the <termios.h> header file. */
#cmakedefine HAVE_TERMIOS_H 1

/* Define to 1 if you have the <termio.h> header file. */
#cmakedefine HAVE_TERMIO_H 1

/* Define to 1 if you have the <time.h> header file. */
#cmakedefine HAVE_TIME_H 1










/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H 1

/* Define to 1 if you have the `utime' function. */
#cmakedefine HAVE_UTIME 1

/* Define to 1 if you have the `utimes' function. */
#cmakedefine HAVE_UTIMES 1

/* Define to 1 if you have the <utime.h> header file. */
#cmakedefine HAVE_UTIME_H 1

/* Define to 1 if compiler supports C99 variadic macro style. */
#cmakedefine HAVE_VARIADIC_MACROS_C99 1

/* Define to 1 if compiler supports old gcc variadic macro style. */
#cmakedefine HAVE_VARIADIC_MACROS_GCC 1




/* Define to 1 if you have the windows.h header file. */
#cmakedefine HAVE_WINDOWS_H 1

/* Define to 1 if you have the winldap.h header file. */
#cmakedefine HAVE_WINLDAP_H 1

/* Define to 1 if you have the winsock2.h header file. */
#cmakedefine HAVE_WINSOCK2_H 1

/* Define this symbol if your OS supports changing the contents of argv */
#cmakedefine HAVE_WRITABLE_ARGV 1




/* Define to 1 if you have the ws2tcpip.h header file. */
#cmakedefine HAVE_WS2TCPIP_H 1




/* Define if you have the <process.h> header file. */
#cmakedefine HAVE_PROCESS_H 1

/* if you have the zlib.h header file */
#cmakedefine HAVE_ZLIB_H 1








/* Define to 1 if you need the lber.h header file even with ldap.h */
#cmakedefine NEED_LBER_H 1

/* Define to 1 if you need the malloc.h header file even with stdlib.h */
#cmakedefine NEED_MALLOC_H 1

/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
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

/* Define to the version of this package. */
#cmakedefine PACKAGE_VERSION ${PACKAGE_VERSION}

/* a suitable file to read random data from */
#cmakedefine RANDOM_FILE "${RANDOM_FILE}"

/* Define to the type of arg 1 for recvfrom. */
#cmakedefine RECVFROM_TYPE_ARG1 ${RECVFROM_TYPE_ARG1}

/* Define to the type pointed by arg 2 for recvfrom. */
#cmakedefine RECVFROM_TYPE_ARG2 ${RECVFROM_TYPE_ARG2}

/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
#cmakedefine RECVFROM_TYPE_ARG2_IS_VOID 1

/* Define to the type of arg 3 for recvfrom. */
#cmakedefine RECVFROM_TYPE_ARG3 ${RECVFROM_TYPE_ARG3}

/* Define to the type of arg 4 for recvfrom. */
#cmakedefine RECVFROM_TYPE_ARG4 ${RECVFROM_TYPE_ARG4}

/* Define to the type pointed by arg 5 for recvfrom. */
#cmakedefine RECVFROM_TYPE_ARG5 ${RECVFROM_TYPE_ARG5}

/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
#cmakedefine RECVFROM_TYPE_ARG5_IS_VOID 1

/* Define to the type pointed by arg 6 for recvfrom. */
#cmakedefine RECVFROM_TYPE_ARG6 ${RECVFROM_TYPE_ARG6}

/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
#cmakedefine RECVFROM_TYPE_ARG6_IS_VOID 1

/* Define to the function return type for recvfrom. */
#cmakedefine RECVFROM_TYPE_RETV ${RECVFROM_TYPE_RETV}

/* Define to the type of arg 1 for recv. */
#cmakedefine RECV_TYPE_ARG1 ${RECV_TYPE_ARG1}

/* Define to the type of arg 2 for recv. */
#cmakedefine RECV_TYPE_ARG2 ${RECV_TYPE_ARG2}

/* Define to the type of arg 3 for recv. */







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







639
640
641
642
643
644
645






























646
647
648
649
650
651
652

/* Define to the version of this package. */
#cmakedefine PACKAGE_VERSION ${PACKAGE_VERSION}

/* a suitable file to read random data from */
#cmakedefine RANDOM_FILE "${RANDOM_FILE}"































/* Define to the type of arg 1 for recv. */
#cmakedefine RECV_TYPE_ARG1 ${RECV_TYPE_ARG1}

/* Define to the type of arg 2 for recv. */
#cmakedefine RECV_TYPE_ARG2 ${RECV_TYPE_ARG2}

/* Define to the type of arg 3 for recv. */
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

 Reference: https://cmake.org/cmake/help/latest/module/CheckTypeSize.html
*/

/* The size of `int', as computed by sizeof. */
${SIZEOF_INT_CODE}

/* The size of `short', as computed by sizeof. */
${SIZEOF_SHORT_CODE}

/* The size of `long', as computed by sizeof. */
${SIZEOF_LONG_CODE}

/* The size of `off_t', as computed by sizeof. */
${SIZEOF_OFF_T_CODE}

/* The size of `curl_off_t', as computed by sizeof. */
${SIZEOF_CURL_OFF_T_CODE}

/* The size of `size_t', as computed by sizeof. */
${SIZEOF_SIZE_T_CODE}

/* The size of `time_t', as computed by sizeof. */
${SIZEOF_TIME_T_CODE}

/* Define to 1 if you have the ANSI C header files. */
#cmakedefine STDC_HEADERS 1

/* Define to the type of arg 3 for strerror_r. */
#cmakedefine STRERROR_R_TYPE_ARG3 ${STRERROR_R_TYPE_ARG3}

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#cmakedefine TIME_WITH_SYS_TIME 1

/* Define if you want to enable c-ares support */
#cmakedefine USE_ARES 1

/* Define if you want to enable POSIX threaded DNS lookup */







<
<
<


















<
<
<







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

 Reference: https://cmake.org/cmake/help/latest/module/CheckTypeSize.html
*/

/* The size of `int', as computed by sizeof. */
${SIZEOF_INT_CODE}




/* The size of `long', as computed by sizeof. */
${SIZEOF_LONG_CODE}

/* The size of `off_t', as computed by sizeof. */
${SIZEOF_OFF_T_CODE}

/* The size of `curl_off_t', as computed by sizeof. */
${SIZEOF_CURL_OFF_T_CODE}

/* The size of `size_t', as computed by sizeof. */
${SIZEOF_SIZE_T_CODE}

/* The size of `time_t', as computed by sizeof. */
${SIZEOF_TIME_T_CODE}

/* Define to 1 if you have the ANSI C header files. */
#cmakedefine STDC_HEADERS 1




/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#cmakedefine TIME_WITH_SYS_TIME 1

/* Define if you want to enable c-ares support */
#cmakedefine USE_ARES 1

/* Define if you want to enable POSIX threaded DNS lookup */
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993

/* to enable Windows SSL  */
#cmakedefine USE_SCHANNEL 1

/* enable multiple SSL backends */
#cmakedefine CURL_WITH_MULTI_SSL 1

/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
#cmakedefine USE_YASSLEMUL 1

/* Version number of package */
#cmakedefine VERSION ${VERSION}

/* Define to 1 if OS is AIX. */
#ifndef _ALL_SOURCE
#  undef _ALL_SOURCE
#endif







<
<
<







805
806
807
808
809
810
811



812
813
814
815
816
817
818

/* to enable Windows SSL  */
#cmakedefine USE_SCHANNEL 1

/* enable multiple SSL backends */
#cmakedefine CURL_WITH_MULTI_SSL 1




/* Version number of package */
#cmakedefine VERSION ${VERSION}

/* Define to 1 if OS is AIX. */
#ifndef _ALL_SOURCE
#  undef _ALL_SOURCE
#endif
Changes to jni/curl/lib/curl_config.h.in.
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153

/* Define to the type of arg 2 for gethostname. */
#undef GETHOSTNAME_TYPE_ARG2

/* Define to 1 if you have the alarm function. */
#undef HAVE_ALARM

/* Define to 1 if you have the <alloca.h> header file. */
#undef HAVE_ALLOCA_H

/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H

/* Define to 1 if you have the <arpa/tftp.h> header file. */
#undef HAVE_ARPA_TFTP_H

/* Define to 1 if you have the <assert.h> header file. */







<
<
<







137
138
139
140
141
142
143



144
145
146
147
148
149
150

/* Define to the type of arg 2 for gethostname. */
#undef GETHOSTNAME_TYPE_ARG2

/* Define to 1 if you have the alarm function. */
#undef HAVE_ALARM




/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H

/* Define to 1 if you have the <arpa/tftp.h> header file. */
#undef HAVE_ARPA_TFTP_H

/* Define to 1 if you have the <assert.h> header file. */
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

/* Define to 1 if you have a IPv6 capable working inet_pton function. */
#undef HAVE_INET_PTON

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define to 1 if you have the ioctl function. */
#undef HAVE_IOCTL

/* Define to 1 if you have the ioctlsocket function. */
#undef HAVE_IOCTLSOCKET

/* Define to 1 if you have the IoctlSocket camel case function. */
#undef HAVE_IOCTLSOCKET_CAMEL

/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
   */
#undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO

/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
#undef HAVE_IOCTLSOCKET_FIONBIO

/* Define to 1 if you have a working ioctl FIONBIO function. */
#undef HAVE_IOCTL_FIONBIO

/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
#undef HAVE_IOCTL_SIOCGIFADDR

/* Define to 1 if you have the <io.h> header file. */
#undef HAVE_IO_H

/* Define to 1 if you have the lber.h header file. */
#undef HAVE_LBER_H

/* Define to 1 if you have the ldapssl.h header file. */
#undef HAVE_LDAPSSL_H

/* Define to 1 if you have the ldap.h header file. */
#undef HAVE_LDAP_H

/* Define to 1 if you have the `ldap_init_fd' function. */
#undef HAVE_LDAP_INIT_FD

/* Use LDAPS implementation */
#undef HAVE_LDAP_SSL

/* Define to 1 if you have the ldap_ssl.h header file. */
#undef HAVE_LDAP_SSL_H

/* Define to 1 if you have the `ldap_url_parse' function. */







<
<
<













<
<
<
<
<
<






<
<
<



<
<
<







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 to 1 if you have a IPv6 capable working inet_pton function. */
#undef HAVE_INET_PTON

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H




/* Define to 1 if you have the ioctlsocket function. */
#undef HAVE_IOCTLSOCKET

/* Define to 1 if you have the IoctlSocket camel case function. */
#undef HAVE_IOCTLSOCKET_CAMEL

/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
   */
#undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO

/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
#undef HAVE_IOCTLSOCKET_FIONBIO







/* Define to 1 if you have the <io.h> header file. */
#undef HAVE_IO_H

/* Define to 1 if you have the lber.h header file. */
#undef HAVE_LBER_H




/* Define to 1 if you have the ldap.h header file. */
#undef HAVE_LDAP_H




/* Use LDAPS implementation */
#undef HAVE_LDAP_SSL

/* Define to 1 if you have the ldap_ssl.h header file. */
#undef HAVE_LDAP_SSL_H

/* Define to 1 if you have the `ldap_url_parse' function. */
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

/* Define to 1 if you have the `zstd' library (-lzstd). */
#undef HAVE_LIBZSTD

/* Define to 1 if you have the <linux/tcp.h> header file. */
#undef HAVE_LINUX_TCP_H

/* if your compiler supports LL */
#undef HAVE_LL

/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H

/* Define to 1 if you have a working localtime_r function. */
#undef HAVE_LOCALTIME_R

/* Define to 1 if the compiler supports the 'long long' data type. */
#undef HAVE_LONGLONG

/* Define to 1 if you have the `mach_absolute_time' function. */
#undef HAVE_MACH_ABSOLUTE_TIME

/* Define to 1 if you have the malloc.h header file. */
#undef HAVE_MALLOC_H

/* Define to 1 if you have the memory.h header file. */
#undef HAVE_MEMORY_H

/* Define to 1 if you have the memrchr function or macro. */
#undef HAVE_MEMRCHR

/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#undef HAVE_MSG_NOSIGNAL

/* Define to 1 if you have the <msh3.h> header file. */







<
<
<



<
<
<






<
<
<
<
<
<







406
407
408
409
410
411
412



413
414
415



416
417
418
419
420
421






422
423
424
425
426
427
428

/* Define to 1 if you have the `zstd' library (-lzstd). */
#undef HAVE_LIBZSTD

/* Define to 1 if you have the <linux/tcp.h> header file. */
#undef HAVE_LINUX_TCP_H




/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H




/* Define to 1 if the compiler supports the 'long long' data type. */
#undef HAVE_LONGLONG

/* Define to 1 if you have the `mach_absolute_time' function. */
#undef HAVE_MACH_ABSOLUTE_TIME







/* Define to 1 if you have the memrchr function or macro. */
#undef HAVE_MEMRCHR

/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#undef HAVE_MSG_NOSIGNAL

/* Define to 1 if you have the <msh3.h> header file. */
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538

/* Define to 1 if you have the `pipe' function. */
#undef HAVE_PIPE

/* if you have the PK11_CreateManagedGenericObject function */
#undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT

/* Define to 1 if you have a working poll function. */
#undef HAVE_POLL

/* If you have a fine poll */
#undef HAVE_POLL_FINE

/* Define to 1 if you have the <poll.h> header file. */
#undef HAVE_POLL_H

/* Define to 1 if you have a working POSIX-style strerror_r function. */







<
<
<







492
493
494
495
496
497
498



499
500
501
502
503
504
505

/* Define to 1 if you have the `pipe' function. */
#undef HAVE_PIPE

/* if you have the PK11_CreateManagedGenericObject function */
#undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT




/* If you have a fine poll */
#undef HAVE_POLL_FINE

/* Define to 1 if you have the <poll.h> header file. */
#undef HAVE_POLL_H

/* Define to 1 if you have a working POSIX-style strerror_r function. */
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601

/* Define to 1 if you have the `setmode' function. */
#undef HAVE_SETMODE

/* Define to 1 if you have the `setrlimit' function. */
#undef HAVE_SETRLIMIT

/* Define to 1 if you have the setsockopt function. */
#undef HAVE_SETSOCKOPT

/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
#undef HAVE_SETSOCKOPT_SO_NONBLOCK

/* Define to 1 if you have the sigaction function. */
#undef HAVE_SIGACTION

/* Define to 1 if you have the siginterrupt function. */
#undef HAVE_SIGINTERRUPT

/* Define to 1 if you have the signal function. */







<
<
<
<
<
<







549
550
551
552
553
554
555






556
557
558
559
560
561
562

/* Define to 1 if you have the `setmode' function. */
#undef HAVE_SETMODE

/* Define to 1 if you have the `setrlimit' function. */
#undef HAVE_SETRLIMIT







/* Define to 1 if you have the sigaction function. */
#undef HAVE_SIGACTION

/* Define to 1 if you have the siginterrupt function. */
#undef HAVE_SIGINTERRUPT

/* Define to 1 if you have the signal function. */
620
621
622
623
624
625
626



627
628
629
630
631
632
633
#undef HAVE_SOCKET_H

/* Define to 1 if you have the `SSL_get_ech_status' function. */
#undef HAVE_SSL_GET_ECH_STATUS

/* Define to 1 if you have the <ssl.h> header file. */
#undef HAVE_SSL_H




/* Define to 1 if you have the <stdbool.h> header file. */
#undef HAVE_STDBOOL_H

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H








>
>
>







581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
#undef HAVE_SOCKET_H

/* Define to 1 if you have the `SSL_get_ech_status' function. */
#undef HAVE_SSL_GET_ECH_STATUS

/* Define to 1 if you have the <ssl.h> header file. */
#undef HAVE_SSL_H

/* Define to 1 if you have the <stdatomic.h> header file. */
#undef HAVE_STDATOMIC_H

/* Define to 1 if you have the <stdbool.h> header file. */
#undef HAVE_STDBOOL_H

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

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

/* 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. */
#undef HAVE_STROPTS_H

/* Define to 1 if you have the strstr function. */
#undef HAVE_STRSTR

/* Define to 1 if you have the strtok_r function. */
#undef HAVE_STRTOK_R

/* Define to 1 if you have the strtoll function. */
#undef HAVE_STRTOLL

/* if struct sockaddr_storage is defined */







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







618
619
620
621
622
623
624












625
626
627
628
629
630
631

/* 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 strtok_r function. */
#undef HAVE_STRTOK_R

/* Define to 1 if you have the strtoll function. */
#undef HAVE_STRTOLL

/* if struct sockaddr_storage is defined */
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

/* Define this if time_t is unsigned */
#undef HAVE_TIME_T_UNSIGNED

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define to 1 if you have the `usleep' function. */
#undef HAVE_USLEEP

/* Define to 1 if you have the `utime' function. */
#undef HAVE_UTIME

/* Define to 1 if you have the `utimes' function. */
#undef HAVE_UTIMES

/* Define to 1 if you have the <utime.h> header file. */
#undef HAVE_UTIME_H

/* Define to 1 if compiler supports C99 variadic macro style. */
#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. */







<
<
<















<
<
<







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

/* Define this if time_t is unsigned */
#undef HAVE_TIME_T_UNSIGNED

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H




/* Define to 1 if you have the `utime' function. */
#undef HAVE_UTIME

/* Define to 1 if you have the `utimes' function. */
#undef HAVE_UTIMES

/* Define to 1 if you have the <utime.h> header file. */
#undef HAVE_UTIME_H

/* Define to 1 if compiler supports C99 variadic macro style. */
#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 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. */
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805

/* Define to 1 if you have the `wolfSSL_UseALPN' function. */
#undef HAVE_WOLFSSL_USEALPN

/* Define this symbol if your OS supports changing the contents of argv */
#undef HAVE_WRITABLE_ARGV

/* Define to 1 if you have the writev function. */
#undef HAVE_WRITEV

/* Define to 1 if you have the ws2tcpip.h header file. */
#undef HAVE_WS2TCPIP_H

/* Define to 1 if you have the <x509.h> header file. */
#undef HAVE_X509_H

/* if you have the zlib.h header file */







<
<
<







735
736
737
738
739
740
741



742
743
744
745
746
747
748

/* Define to 1 if you have the `wolfSSL_UseALPN' function. */
#undef HAVE_WOLFSSL_USEALPN

/* Define this symbol if your OS supports changing the contents of argv */
#undef HAVE_WRITABLE_ARGV




/* Define to 1 if you have the ws2tcpip.h header file. */
#undef HAVE_WS2TCPIP_H

/* Define to 1 if you have the <x509.h> header file. */
#undef HAVE_X509_H

/* if you have the zlib.h header file */
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832

/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR

/* Define to 1 if you need the lber.h header file even with ldap.h */
#undef NEED_LBER_H

/* Define to 1 if you need the malloc.h header file even with stdlib.h */
#undef NEED_MALLOC_H

/* Define to 1 if you need the memory.h header file even with stdlib.h */
#undef NEED_MEMORY_H

/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
#undef NEED_REENTRANT

/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
#undef NEED_THREAD_SAFE

/* Define to enable NTLM delegation to winbind's ntlm_auth helper. */







<
<
<
<
<
<







756
757
758
759
760
761
762






763
764
765
766
767
768
769

/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR

/* Define to 1 if you need the lber.h header file even with ldap.h */
#undef NEED_LBER_H







/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
#undef NEED_REENTRANT

/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
#undef NEED_THREAD_SAFE

/* Define to enable NTLM delegation to winbind's ntlm_auth helper. */
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

/* Define to the type of arg 4 for send. */
#undef SEND_TYPE_ARG4

/* Define to the function return type for send. */
#undef SEND_TYPE_RETV

/* The number of bytes in type curl_off_t */
#undef SIZEOF_CURL_OFF_T

/* The number of bytes in type int */
#undef SIZEOF_INT

/* The number of bytes in type long */
#undef SIZEOF_LONG

/* The number of bytes in type long long */
#undef SIZEOF_LONG_LONG

/* The number of bytes in type off_t */
#undef SIZEOF_OFF_T

/* The number of bytes in type short */
#undef SIZEOF_SHORT

/* The number of bytes in type size_t */
#undef SIZEOF_SIZE_T

/* The number of bytes in type time_t */
#undef SIZEOF_TIME_T

/* Define to 1 if all of the C90 standard headers exist (not just the ones
   required in a freestanding environment). This macro is provided for
   backward compatibility; new code need not use it. */
#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 */







|


|


|


|


|


|
<
<
<


|







<
<
<







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

/* Define to the type of arg 4 for send. */
#undef SEND_TYPE_ARG4

/* Define to the function return type for send. */
#undef SEND_TYPE_RETV

/* Size of curl_off_t in number of bytes */
#undef SIZEOF_CURL_OFF_T

/* Size of int in number of bytes */
#undef SIZEOF_INT

/* Size of long in number of bytes */
#undef SIZEOF_LONG

/* Size of long long in number of bytes */
#undef SIZEOF_LONG_LONG

/* Size of off_t in number of bytes */
#undef SIZEOF_OFF_T

/* Size of size_t in number of bytes */



#undef SIZEOF_SIZE_T

/* Size of time_t in number of bytes */
#undef SIZEOF_TIME_T

/* Define to 1 if all of the C90 standard headers exist (not just the ones
   required in a freestanding environment). This macro is provided for
   backward compatibility; new code need not use it. */
#undef STDC_HEADERS




/* if AmiSSL is in use */
#undef USE_AMISSL

/* Define to enable c-ares support */
#undef USE_ARES

/* if BearSSL is enabled */
994
995
996
997
998
999
1000



1001
1002
1003
1004
1005
1006
1007
#undef USE_NGTCP2

/* if ngtcp2_crypto_gnutls is in use */
#undef USE_NGTCP2_CRYPTO_GNUTLS

/* if ngtcp2_crypto_openssl is in use */
#undef USE_NGTCP2_CRYPTO_OPENSSL




/* if NSS is enabled */
#undef USE_NSS

/* Use OpenLDAP-specific code */
#undef USE_OPENLDAP








>
>
>







925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
#undef USE_NGTCP2

/* if ngtcp2_crypto_gnutls is in use */
#undef USE_NGTCP2_CRYPTO_GNUTLS

/* if ngtcp2_crypto_openssl is in use */
#undef USE_NGTCP2_CRYPTO_OPENSSL

/* if ngtcp2_crypto_wolfssl is in use */
#undef USE_NGTCP2_CRYPTO_WOLFSSL

/* if NSS is enabled */
#undef USE_NSS

/* Use OpenLDAP-specific code */
#undef USE_OPENLDAP

Changes to jni/curl/lib/curl_ntlm_core.c.
56
57
58
59
60
61
62
63





64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  #if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_DEPRECATED_3_0)
    #define USE_OPENSSL_DES
  #endif
#endif

#if defined(USE_OPENSSL_DES) || defined(USE_WOLFSSL)

#ifdef USE_WOLFSSL





#  include <wolfssl/options.h>
#  include <wolfssl/openssl/des.h>
#  include <wolfssl/openssl/md5.h>
#  include <wolfssl/openssl/ssl.h>
#  include <wolfssl/openssl/rand.h>
#else
#  include <openssl/des.h>
#  include <openssl/md5.h>
#  include <openssl/ssl.h>
#  include <openssl/rand.h>
#endif

#  if (defined(OPENSSL_VERSION_NUMBER) && \
       (OPENSSL_VERSION_NUMBER < 0x00907001L)) && !defined(USE_WOLFSSL)
#    define DES_key_schedule des_key_schedule
#    define DES_cblock des_cblock
#    define DES_set_odd_parity des_set_odd_parity







|
>
>
>
>
>





<
<
<
<
<







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73





74
75
76
77
78
79
80
  #if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_DEPRECATED_3_0)
    #define USE_OPENSSL_DES
  #endif
#endif

#if defined(USE_OPENSSL_DES) || defined(USE_WOLFSSL)

#if defined(USE_OPENSSL)
#  include <openssl/des.h>
#  include <openssl/md5.h>
#  include <openssl/ssl.h>
#  include <openssl/rand.h>
#else
#  include <wolfssl/options.h>
#  include <wolfssl/openssl/des.h>
#  include <wolfssl/openssl/md5.h>
#  include <wolfssl/openssl/ssl.h>
#  include <wolfssl/openssl/rand.h>





#endif

#  if (defined(OPENSSL_VERSION_NUMBER) && \
       (OPENSSL_VERSION_NUMBER < 0x00907001L)) && !defined(USE_WOLFSSL)
#    define DES_key_schedule des_key_schedule
#    define DES_cblock des_cblock
#    define DES_set_odd_parity des_set_odd_parity
Changes to jni/curl/lib/curl_path.c.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 * 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.
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/

#include "curl_setup.h"

#if defined(USE_SSH)








|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 * 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.
 *
 * SPDX-License-Identifier: curl AND ISC
 *
 ***************************************************************************/

#include "curl_setup.h"

#if defined(USE_SSH)

Changes to jni/curl/lib/curl_setup.h.
270
271
272
273
274
275
276












277
278
279
280
281
282


283





284








285
286
287
288
289
290
291
#endif

#ifdef HAVE_EXTRA_STRDUP_H
#  include <extra/strdup.h>
#endif

#ifdef __AMIGA__












#  include <exec/types.h>
#  include <exec/execbase.h>
#  include <proto/exec.h>
#  include <proto/dos.h>
#  include <unistd.h>
#  ifdef HAVE_PROTO_BSDSOCKET_H


#    include <proto/bsdsocket.h> /* ensure bsdsocket.library use */





#    define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)








#  endif
/*
 * In clib2 arpa/inet.h warns that some prototypes may clash
 * with bsdsocket.library. This avoids the definition of those.
 */
#  define __NO_NET_API
#endif







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





|
>
>
|
>
>
>
>
>
|
>
>
>
>
>
>
>
>







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
#endif

#ifdef HAVE_EXTRA_STRDUP_H
#  include <extra/strdup.h>
#endif

#ifdef __AMIGA__
#  ifdef __amigaos4__
#    define __USE_INLINE__
     /* use our own resolver which uses runtime feature detection */
#    define CURLRES_AMIGA
     /* getaddrinfo() currently crashes bsdsocket.library, so disable */
#    undef HAVE_GETADDRINFO
#    if !(defined(__NEWLIB__) || \
          (defined(__CLIB2__) && defined(__THREAD_SAFE)))
       /* disable threaded resolver with clib2 - requires newlib or clib-ts */
#      undef USE_THREADS_POSIX
#    endif
#  endif
#  include <exec/types.h>
#  include <exec/execbase.h>
#  include <proto/exec.h>
#  include <proto/dos.h>
#  include <unistd.h>
#  if defined(HAVE_PROTO_BSDSOCKET_H) && \
    (!defined(__amigaos4__) || defined(USE_AMISSL))
     /* use bsdsocket.library directly, instead of libc networking functions */
#    include <proto/bsdsocket.h>
#    ifdef __amigaos4__
       int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
                             fd_set *errorfds, struct timeval *timeout);
#      define select(a,b,c,d,e) Curl_amiga_select(a,b,c,d,e)
#    else
#      define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#    endif
     /* must not use libc's fcntl() on bsdsocket.library sockfds! */
#    undef HAVE_FCNTL
#    undef HAVE_FCNTL_O_NONBLOCK
#  else
     /* use libc networking and hence close() and fnctl() */
#    undef HAVE_CLOSESOCKET_CAMEL
#    undef HAVE_IOCTLSOCKET_CAMEL
#  endif
/*
 * In clib2 arpa/inet.h warns that some prototypes may clash
 * with bsdsocket.library. This avoids the definition of those.
 */
#  define __NO_NET_API
#endif
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573

#ifdef USE_ARES
#  define CURLRES_ASYNCH
#  define CURLRES_ARES
/* now undef the stock libc functions just to avoid them being used */
#  undef HAVE_GETADDRINFO
#  undef HAVE_FREEADDRINFO
#  undef HAVE_GETHOSTBYNAME
#elif defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
#  define CURLRES_ASYNCH
#  define CURLRES_THREADED
#else
#  define CURLRES_SYNCH
#endif








<







586
587
588
589
590
591
592

593
594
595
596
597
598
599

#ifdef USE_ARES
#  define CURLRES_ASYNCH
#  define CURLRES_ARES
/* now undef the stock libc functions just to avoid them being used */
#  undef HAVE_GETADDRINFO
#  undef HAVE_FREEADDRINFO

#elif defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
#  define CURLRES_ASYNCH
#  define CURLRES_THREADED
#else
#  define CURLRES_SYNCH
#endif

Changes to jni/curl/lib/curl_setup_once.h.
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
#ifndef swrite
  /* */
  Error Missing_definition_of_macro_swrite
  /* */
#endif
#endif /* HAVE_SEND */


#if 0
#if defined(HAVE_RECVFROM)
/*
 * Currently recvfrom is only used on udp sockets.
 */
#if !defined(RECVFROM_TYPE_ARG1) || \
    !defined(RECVFROM_TYPE_ARG2) || \
    !defined(RECVFROM_TYPE_ARG3) || \
    !defined(RECVFROM_TYPE_ARG4) || \
    !defined(RECVFROM_TYPE_ARG5) || \
    !defined(RECVFROM_TYPE_ARG6) || \
    !defined(RECVFROM_TYPE_RETV)
  /* */
  Error Missing_definition_of_return_and_arguments_types_of_recvfrom
  /* */
#else
#define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1)  (s),  \
                                                 (RECVFROM_TYPE_ARG2 *)(b),  \
                                                 (RECVFROM_TYPE_ARG3)  (bl), \
                                                 (RECVFROM_TYPE_ARG4)  (0),  \
                                                 (RECVFROM_TYPE_ARG5 *)(f),  \
                                                 (RECVFROM_TYPE_ARG6 *)(fl))
#endif
#else /* HAVE_RECVFROM */
#ifndef sreadfrom
  /* */
  Error Missing_definition_of_macro_sreadfrom
  /* */
#endif
#endif /* HAVE_RECVFROM */


#ifdef RECVFROM_TYPE_ARG6_IS_VOID
#  define RECVFROM_ARG6_T int
#else
#  define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
#endif
#endif /* if 0 */


/*
 * Function-like macro definition used to close a socket.
 */

#if defined(HAVE_CLOSESOCKET)
#  define sclose(x)  closesocket((x))







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







199
200
201
202
203
204
205








































206
207
208
209
210
211
212
#ifndef swrite
  /* */
  Error Missing_definition_of_macro_swrite
  /* */
#endif
#endif /* HAVE_SEND */










































/*
 * Function-like macro definition used to close a socket.
 */

#if defined(HAVE_CLOSESOCKET)
#  define sclose(x)  closesocket((x))
Changes to jni/curl/lib/doh.c.
239
240
241
242
243
244
245

246
247
248
249
250
251
252
  /* Curl_open() is the internal version of curl_easy_init() */
  result = Curl_open(&doh);
  if(!result) {
    /* pass in the struct pointer via a local variable to please coverity and
       the gcc typecheck helpers */
    struct dynbuf *resp = &p->serverdoh;
    ERROR_CHECK_SETOPT(CURLOPT_URL, url);

    ERROR_CHECK_SETOPT(CURLOPT_WRITEFUNCTION, doh_write_cb);
    ERROR_CHECK_SETOPT(CURLOPT_WRITEDATA, resp);
    ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDS, p->dohbuffer);
    ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDSIZE, (long)p->dohlen);
    ERROR_CHECK_SETOPT(CURLOPT_HTTPHEADER, headers);
#ifdef USE_HTTP2
    ERROR_CHECK_SETOPT(CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);







>







239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
  /* Curl_open() is the internal version of curl_easy_init() */
  result = Curl_open(&doh);
  if(!result) {
    /* pass in the struct pointer via a local variable to please coverity and
       the gcc typecheck helpers */
    struct dynbuf *resp = &p->serverdoh;
    ERROR_CHECK_SETOPT(CURLOPT_URL, url);
    ERROR_CHECK_SETOPT(CURLOPT_DEFAULT_PROTOCOL, "https");
    ERROR_CHECK_SETOPT(CURLOPT_WRITEFUNCTION, doh_write_cb);
    ERROR_CHECK_SETOPT(CURLOPT_WRITEDATA, resp);
    ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDS, p->dohbuffer);
    ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDSIZE, (long)p->dohlen);
    ERROR_CHECK_SETOPT(CURLOPT_HTTPHEADER, headers);
#ifdef USE_HTTP2
    ERROR_CHECK_SETOPT(CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
Changes to jni/curl/lib/doh.h.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 ***************************************************************************/

#include "urldata.h"
#include "curl_addrinfo.h"

#ifndef CURL_DISABLE_DOH

/*
 * Curl_doh() resolve a name using DoH (DNS-over-HTTPS). It resolves a name
 * and returns a 'Curl_addrinfo *' with the address information.
 */

struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
                               const char *hostname,
                               int port,
                               int *waitp);

CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
                              struct Curl_dns_entry **dns);

int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks);

typedef enum {
  DOH_OK,
  DOH_DNS_BAD_LABEL,    /* 1 */
  DOH_DNS_OUT_OF_RANGE, /* 2 */
  DOH_DNS_LABEL_LOOP,   /* 3 */
  DOH_TOO_SMALL_BUFFER, /* 4 */
  DOH_OUT_OF_MEM,       /* 5 */







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







25
26
27
28
29
30
31















32
33
34
35
36
37
38
 ***************************************************************************/

#include "urldata.h"
#include "curl_addrinfo.h"

#ifndef CURL_DISABLE_DOH
















typedef enum {
  DOH_OK,
  DOH_DNS_BAD_LABEL,    /* 1 */
  DOH_DNS_OUT_OF_RANGE, /* 2 */
  DOH_DNS_LABEL_LOOP,   /* 3 */
  DOH_TOO_SMALL_BUFFER, /* 4 */
  DOH_OUT_OF_MEM,       /* 5 */
65
66
67
68
69
70
71
































72
73
74
75
76
77
78
  DNS_TYPE_A = 1,
  DNS_TYPE_NS = 2,
  DNS_TYPE_CNAME = 5,
  DNS_TYPE_AAAA = 28,
  DNS_TYPE_DNAME = 39           /* RFC6672 */
} DNStype;

































#define DOH_MAX_ADDR 24
#define DOH_MAX_CNAME 4

struct dohaddr {
  int type;
  union {
    unsigned char v4[4]; /* network byte order */







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







50
51
52
53
54
55
56
57
58
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
  DNS_TYPE_A = 1,
  DNS_TYPE_NS = 2,
  DNS_TYPE_CNAME = 5,
  DNS_TYPE_AAAA = 28,
  DNS_TYPE_DNAME = 39           /* RFC6672 */
} DNStype;

/* one of these for each DoH request */
struct dnsprobe {
  CURL *easy;
  DNStype dnstype;
  unsigned char dohbuffer[512];
  size_t dohlen;
  struct dynbuf serverdoh;
};

struct dohdata {
  struct curl_slist *headers;
  struct dnsprobe probe[DOH_PROBE_SLOTS];
  unsigned int pending; /* still outstanding requests */
  int port;
  const char *host;
};

/*
 * Curl_doh() resolve a name using DoH (DNS-over-HTTPS). It resolves a name
 * and returns a 'Curl_addrinfo *' with the address information.
 */

struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
                               const char *hostname,
                               int port,
                               int *waitp);

CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
                              struct Curl_dns_entry **dns);

int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks);

#define DOH_MAX_ADDR 24
#define DOH_MAX_CNAME 4

struct dohaddr {
  int type;
  union {
    unsigned char v4[4]; /* network byte order */
Changes to jni/curl/lib/easy.c.
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
  if(Curl_win32_init(flags)) {
    DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
    goto fail;
  }
#endif

#ifdef __AMIGA__
  if(!Curl_amiga_init()) {
    DEBUGF(fprintf(stderr, "Error: Curl_amiga_init failed\n"));
    goto fail;
  }
#endif

  if(Curl_resolver_global_init()) {
    DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));







|







173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
  if(Curl_win32_init(flags)) {
    DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
    goto fail;
  }
#endif

#ifdef __AMIGA__
  if(Curl_amiga_init()) {
    DEBUGF(fprintf(stderr, "Error: Curl_amiga_init failed\n"));
    goto fail;
  }
#endif

  if(Curl_resolver_global_init()) {
    DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
  }

  if(data->multi_easy)
    multi = data->multi_easy;
  else {
    /* this multi handle will only ever have a single easy handled attached
       to it, so make it use minimal hashes */
    multi = Curl_multi_handle(1, 3);
    if(!multi)
      return CURLE_OUT_OF_MEMORY;
    data->multi_easy = multi;
  }

  if(multi->in_callback)
    return CURLE_RECURSIVE_API_CALL;







|







721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
  }

  if(data->multi_easy)
    multi = data->multi_easy;
  else {
    /* this multi handle will only ever have a single easy handled attached
       to it, so make it use minimal hashes */
    multi = Curl_multi_handle(1, 3, 7);
    if(!multi)
      return CURLE_OUT_OF_MEMORY;
    data->multi_easy = multi;
  }

  if(multi->in_callback)
    return CURLE_RECURSIVE_API_CALL;
1127
1128
1129
1130
1131
1132
1133










1134
1135
1136
1137
1138
1139
1140
        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 */
  if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
     (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) {
    Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */








>
>
>
>
>
>
>
>
>
>







1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
        Curl_dyn_free(&writebuf[i].b);
      }

      if(result)
        return result;
    }
  }

#ifdef USE_HYPER
  if(!(newstate & KEEP_SEND_PAUSE)) {
    /* need to wake the send body waker */
    if(data->hyp.send_body_waker) {
      hyper_waker_wake(data->hyp.send_body_waker);
      data->hyp.send_body_waker = NULL;
    }
  }
#endif

  /* if there's no error and we're not pausing both directions, we want
     to have this handle checked soon */
  if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
     (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) {
    Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */

Changes to jni/curl/lib/easyoptions.c.
103
104
105
106
107
108
109
110

111
112
113
114
115
116
117
  {"FTPSSLAUTH", CURLOPT_FTPSSLAUTH, CURLOT_VALUES, 0},
  {"FTP_ACCOUNT", CURLOPT_FTP_ACCOUNT, CURLOT_STRING, 0},
  {"FTP_ALTERNATIVE_TO_USER", CURLOPT_FTP_ALTERNATIVE_TO_USER,
   CURLOT_STRING, 0},
  {"FTP_CREATE_MISSING_DIRS", CURLOPT_FTP_CREATE_MISSING_DIRS,
   CURLOT_LONG, 0},
  {"FTP_FILEMETHOD", CURLOPT_FTP_FILEMETHOD, CURLOT_VALUES, 0},
  {"FTP_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOT_LONG, 0},

  {"FTP_SKIP_PASV_IP", CURLOPT_FTP_SKIP_PASV_IP, CURLOT_LONG, 0},
  {"FTP_SSL", CURLOPT_USE_SSL, CURLOT_VALUES, CURLOT_FLAG_ALIAS},
  {"FTP_SSL_CCC", CURLOPT_FTP_SSL_CCC, CURLOT_LONG, 0},
  {"FTP_USE_EPRT", CURLOPT_FTP_USE_EPRT, CURLOT_LONG, 0},
  {"FTP_USE_EPSV", CURLOPT_FTP_USE_EPSV, CURLOT_LONG, 0},
  {"FTP_USE_PRET", CURLOPT_FTP_USE_PRET, CURLOT_LONG, 0},
  {"GSSAPI_DELEGATION", CURLOPT_GSSAPI_DELEGATION, CURLOT_VALUES, 0},







|
>







103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  {"FTPSSLAUTH", CURLOPT_FTPSSLAUTH, CURLOT_VALUES, 0},
  {"FTP_ACCOUNT", CURLOPT_FTP_ACCOUNT, CURLOT_STRING, 0},
  {"FTP_ALTERNATIVE_TO_USER", CURLOPT_FTP_ALTERNATIVE_TO_USER,
   CURLOT_STRING, 0},
  {"FTP_CREATE_MISSING_DIRS", CURLOPT_FTP_CREATE_MISSING_DIRS,
   CURLOT_LONG, 0},
  {"FTP_FILEMETHOD", CURLOPT_FTP_FILEMETHOD, CURLOT_VALUES, 0},
  {"FTP_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT,
   CURLOT_LONG, CURLOT_FLAG_ALIAS},
  {"FTP_SKIP_PASV_IP", CURLOPT_FTP_SKIP_PASV_IP, CURLOT_LONG, 0},
  {"FTP_SSL", CURLOPT_USE_SSL, CURLOT_VALUES, CURLOT_FLAG_ALIAS},
  {"FTP_SSL_CCC", CURLOPT_FTP_SSL_CCC, CURLOT_LONG, 0},
  {"FTP_USE_EPRT", CURLOPT_FTP_USE_EPRT, CURLOT_LONG, 0},
  {"FTP_USE_EPSV", CURLOPT_FTP_USE_EPSV, CURLOT_LONG, 0},
  {"FTP_USE_PRET", CURLOPT_FTP_USE_PRET, CURLOT_LONG, 0},
  {"GSSAPI_DELEGATION", CURLOPT_GSSAPI_DELEGATION, CURLOT_VALUES, 0},
199
200
201
202
203
204
205

206
207
208
209
210
211
212
  {"PREREQDATA", CURLOPT_PREREQDATA, CURLOT_CBPTR, 0},
  {"PREREQFUNCTION", CURLOPT_PREREQFUNCTION, CURLOT_FUNCTION, 0},
  {"PRE_PROXY", CURLOPT_PRE_PROXY, CURLOT_STRING, 0},
  {"PRIVATE", CURLOPT_PRIVATE, CURLOT_OBJECT, 0},
  {"PROGRESSDATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
  {"PROGRESSFUNCTION", CURLOPT_PROGRESSFUNCTION, CURLOT_FUNCTION, 0},
  {"PROTOCOLS", CURLOPT_PROTOCOLS, CURLOT_LONG, 0},

  {"PROXY", CURLOPT_PROXY, CURLOT_STRING, 0},
  {"PROXYAUTH", CURLOPT_PROXYAUTH, CURLOT_VALUES, 0},
  {"PROXYHEADER", CURLOPT_PROXYHEADER, CURLOT_SLIST, 0},
  {"PROXYPASSWORD", CURLOPT_PROXYPASSWORD, CURLOT_STRING, 0},
  {"PROXYPORT", CURLOPT_PROXYPORT, CURLOT_LONG, 0},
  {"PROXYTYPE", CURLOPT_PROXYTYPE, CURLOT_VALUES, 0},
  {"PROXYUSERNAME", CURLOPT_PROXYUSERNAME, CURLOT_STRING, 0},







>







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
  {"PREREQDATA", CURLOPT_PREREQDATA, CURLOT_CBPTR, 0},
  {"PREREQFUNCTION", CURLOPT_PREREQFUNCTION, CURLOT_FUNCTION, 0},
  {"PRE_PROXY", CURLOPT_PRE_PROXY, CURLOT_STRING, 0},
  {"PRIVATE", CURLOPT_PRIVATE, CURLOT_OBJECT, 0},
  {"PROGRESSDATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
  {"PROGRESSFUNCTION", CURLOPT_PROGRESSFUNCTION, CURLOT_FUNCTION, 0},
  {"PROTOCOLS", CURLOPT_PROTOCOLS, CURLOT_LONG, 0},
  {"PROTOCOLS_STR", CURLOPT_PROTOCOLS_STR, CURLOT_STRING, 0},
  {"PROXY", CURLOPT_PROXY, CURLOT_STRING, 0},
  {"PROXYAUTH", CURLOPT_PROXYAUTH, CURLOT_VALUES, 0},
  {"PROXYHEADER", CURLOPT_PROXYHEADER, CURLOT_SLIST, 0},
  {"PROXYPASSWORD", CURLOPT_PROXYPASSWORD, CURLOT_STRING, 0},
  {"PROXYPORT", CURLOPT_PROXYPORT, CURLOT_LONG, 0},
  {"PROXYTYPE", CURLOPT_PROXYTYPE, CURLOT_VALUES, 0},
  {"PROXYUSERNAME", CURLOPT_PROXYUSERNAME, CURLOT_STRING, 0},
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
  {"PUT", CURLOPT_PUT, CURLOT_LONG, 0},
  {"QUOTE", CURLOPT_QUOTE, CURLOT_SLIST, 0},
  {"RANDOM_FILE", CURLOPT_RANDOM_FILE, CURLOT_STRING, 0},
  {"RANGE", CURLOPT_RANGE, CURLOT_STRING, 0},
  {"READDATA", CURLOPT_READDATA, CURLOT_CBPTR, 0},
  {"READFUNCTION", CURLOPT_READFUNCTION, CURLOT_FUNCTION, 0},
  {"REDIR_PROTOCOLS", CURLOPT_REDIR_PROTOCOLS, CURLOT_LONG, 0},

  {"REFERER", CURLOPT_REFERER, CURLOT_STRING, 0},
  {"REQUEST_TARGET", CURLOPT_REQUEST_TARGET, CURLOT_STRING, 0},
  {"RESOLVE", CURLOPT_RESOLVE, CURLOT_SLIST, 0},
  {"RESOLVER_START_DATA", CURLOPT_RESOLVER_START_DATA, CURLOT_CBPTR, 0},
  {"RESOLVER_START_FUNCTION", CURLOPT_RESOLVER_START_FUNCTION,
   CURLOT_FUNCTION, 0},
  {"RESUME_FROM", CURLOPT_RESUME_FROM, CURLOT_LONG, 0},
  {"RESUME_FROM_LARGE", CURLOPT_RESUME_FROM_LARGE, CURLOT_OFF_T, 0},
  {"RTSPHEADER", CURLOPT_HTTPHEADER, CURLOT_SLIST, CURLOT_FLAG_ALIAS},
  {"RTSP_CLIENT_CSEQ", CURLOPT_RTSP_CLIENT_CSEQ, CURLOT_LONG, 0},
  {"RTSP_REQUEST", CURLOPT_RTSP_REQUEST, CURLOT_VALUES, 0},
  {"RTSP_SERVER_CSEQ", CURLOPT_RTSP_SERVER_CSEQ, CURLOT_LONG, 0},
  {"RTSP_SESSION_ID", CURLOPT_RTSP_SESSION_ID, CURLOT_STRING, 0},
  {"RTSP_STREAM_URI", CURLOPT_RTSP_STREAM_URI, CURLOT_STRING, 0},
  {"RTSP_TRANSPORT", CURLOPT_RTSP_TRANSPORT, CURLOT_STRING, 0},
  {"SASL_AUTHZID", CURLOPT_SASL_AUTHZID, CURLOT_STRING, 0},
  {"SASL_IR", CURLOPT_SASL_IR, CURLOT_LONG, 0},
  {"SEEKDATA", CURLOPT_SEEKDATA, CURLOT_CBPTR, 0},
  {"SEEKFUNCTION", CURLOPT_SEEKFUNCTION, CURLOT_FUNCTION, 0},
  {"SERVER_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT,
   CURLOT_LONG, CURLOT_FLAG_ALIAS},
  {"SERVICE_NAME", CURLOPT_SERVICE_NAME, CURLOT_STRING, 0},
  {"SHARE", CURLOPT_SHARE, CURLOT_OBJECT, 0},
  {"SOCKOPTDATA", CURLOPT_SOCKOPTDATA, CURLOT_CBPTR, 0},
  {"SOCKOPTFUNCTION", CURLOPT_SOCKOPTFUNCTION, CURLOT_FUNCTION, 0},
  {"SOCKS5_AUTH", CURLOPT_SOCKS5_AUTH, CURLOT_LONG, 0},
  {"SOCKS5_GSSAPI_NEC", CURLOPT_SOCKS5_GSSAPI_NEC, CURLOT_LONG, 0},
  {"SOCKS5_GSSAPI_SERVICE", CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOT_STRING, 0},
  {"SSH_AUTH_TYPES", CURLOPT_SSH_AUTH_TYPES, CURLOT_VALUES, 0},
  {"SSH_COMPRESSION", CURLOPT_SSH_COMPRESSION, CURLOT_LONG, 0},


  {"SSH_HOST_PUBLIC_KEY_MD5", CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
   CURLOT_STRING, 0},
  {"SSH_HOST_PUBLIC_KEY_SHA256", CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256,
   CURLOT_STRING, 0},
  {"SSH_KEYDATA", CURLOPT_SSH_KEYDATA, CURLOT_CBPTR, 0},
  {"SSH_KEYFUNCTION", CURLOPT_SSH_KEYFUNCTION, CURLOT_FUNCTION, 0},
  {"SSH_HOSTKEYDATA", CURLOPT_SSH_HOSTKEYDATA, CURLOT_CBPTR, 0},
  {"SSH_HOSTKEYFUNCTION", CURLOPT_SSH_HOSTKEYFUNCTION, CURLOT_FUNCTION, 0},
  {"SSH_KNOWNHOSTS", CURLOPT_SSH_KNOWNHOSTS, CURLOT_STRING, 0},
  {"SSH_PRIVATE_KEYFILE", CURLOPT_SSH_PRIVATE_KEYFILE, CURLOT_STRING, 0},
  {"SSH_PUBLIC_KEYFILE", CURLOPT_SSH_PUBLIC_KEYFILE, CURLOT_STRING, 0},
  {"SSLCERT", CURLOPT_SSLCERT, CURLOT_STRING, 0},
  {"SSLCERTPASSWD", CURLOPT_KEYPASSWD, CURLOT_STRING, CURLOT_FLAG_ALIAS},
  {"SSLCERTTYPE", CURLOPT_SSLCERTTYPE, CURLOT_STRING, 0},
  {"SSLCERT_BLOB", CURLOPT_SSLCERT_BLOB, CURLOT_BLOB, 0},







>



















|
|









>
>






<
<







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
  {"PUT", CURLOPT_PUT, CURLOT_LONG, 0},
  {"QUOTE", CURLOPT_QUOTE, CURLOT_SLIST, 0},
  {"RANDOM_FILE", CURLOPT_RANDOM_FILE, CURLOT_STRING, 0},
  {"RANGE", CURLOPT_RANGE, CURLOT_STRING, 0},
  {"READDATA", CURLOPT_READDATA, CURLOT_CBPTR, 0},
  {"READFUNCTION", CURLOPT_READFUNCTION, CURLOT_FUNCTION, 0},
  {"REDIR_PROTOCOLS", CURLOPT_REDIR_PROTOCOLS, CURLOT_LONG, 0},
  {"REDIR_PROTOCOLS_STR", CURLOPT_REDIR_PROTOCOLS_STR, CURLOT_STRING, 0},
  {"REFERER", CURLOPT_REFERER, CURLOT_STRING, 0},
  {"REQUEST_TARGET", CURLOPT_REQUEST_TARGET, CURLOT_STRING, 0},
  {"RESOLVE", CURLOPT_RESOLVE, CURLOT_SLIST, 0},
  {"RESOLVER_START_DATA", CURLOPT_RESOLVER_START_DATA, CURLOT_CBPTR, 0},
  {"RESOLVER_START_FUNCTION", CURLOPT_RESOLVER_START_FUNCTION,
   CURLOT_FUNCTION, 0},
  {"RESUME_FROM", CURLOPT_RESUME_FROM, CURLOT_LONG, 0},
  {"RESUME_FROM_LARGE", CURLOPT_RESUME_FROM_LARGE, CURLOT_OFF_T, 0},
  {"RTSPHEADER", CURLOPT_HTTPHEADER, CURLOT_SLIST, CURLOT_FLAG_ALIAS},
  {"RTSP_CLIENT_CSEQ", CURLOPT_RTSP_CLIENT_CSEQ, CURLOT_LONG, 0},
  {"RTSP_REQUEST", CURLOPT_RTSP_REQUEST, CURLOT_VALUES, 0},
  {"RTSP_SERVER_CSEQ", CURLOPT_RTSP_SERVER_CSEQ, CURLOT_LONG, 0},
  {"RTSP_SESSION_ID", CURLOPT_RTSP_SESSION_ID, CURLOT_STRING, 0},
  {"RTSP_STREAM_URI", CURLOPT_RTSP_STREAM_URI, CURLOT_STRING, 0},
  {"RTSP_TRANSPORT", CURLOPT_RTSP_TRANSPORT, CURLOT_STRING, 0},
  {"SASL_AUTHZID", CURLOPT_SASL_AUTHZID, CURLOT_STRING, 0},
  {"SASL_IR", CURLOPT_SASL_IR, CURLOT_LONG, 0},
  {"SEEKDATA", CURLOPT_SEEKDATA, CURLOT_CBPTR, 0},
  {"SEEKFUNCTION", CURLOPT_SEEKFUNCTION, CURLOT_FUNCTION, 0},
  {"SERVER_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT,
   CURLOT_LONG, 0},
  {"SERVICE_NAME", CURLOPT_SERVICE_NAME, CURLOT_STRING, 0},
  {"SHARE", CURLOPT_SHARE, CURLOT_OBJECT, 0},
  {"SOCKOPTDATA", CURLOPT_SOCKOPTDATA, CURLOT_CBPTR, 0},
  {"SOCKOPTFUNCTION", CURLOPT_SOCKOPTFUNCTION, CURLOT_FUNCTION, 0},
  {"SOCKS5_AUTH", CURLOPT_SOCKS5_AUTH, CURLOT_LONG, 0},
  {"SOCKS5_GSSAPI_NEC", CURLOPT_SOCKS5_GSSAPI_NEC, CURLOT_LONG, 0},
  {"SOCKS5_GSSAPI_SERVICE", CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOT_STRING, 0},
  {"SSH_AUTH_TYPES", CURLOPT_SSH_AUTH_TYPES, CURLOT_VALUES, 0},
  {"SSH_COMPRESSION", CURLOPT_SSH_COMPRESSION, CURLOT_LONG, 0},
  {"SSH_HOSTKEYDATA", CURLOPT_SSH_HOSTKEYDATA, CURLOT_CBPTR, 0},
  {"SSH_HOSTKEYFUNCTION", CURLOPT_SSH_HOSTKEYFUNCTION, CURLOT_FUNCTION, 0},
  {"SSH_HOST_PUBLIC_KEY_MD5", CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
   CURLOT_STRING, 0},
  {"SSH_HOST_PUBLIC_KEY_SHA256", CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256,
   CURLOT_STRING, 0},
  {"SSH_KEYDATA", CURLOPT_SSH_KEYDATA, CURLOT_CBPTR, 0},
  {"SSH_KEYFUNCTION", CURLOPT_SSH_KEYFUNCTION, CURLOT_FUNCTION, 0},


  {"SSH_KNOWNHOSTS", CURLOPT_SSH_KNOWNHOSTS, CURLOT_STRING, 0},
  {"SSH_PRIVATE_KEYFILE", CURLOPT_SSH_PRIVATE_KEYFILE, CURLOT_STRING, 0},
  {"SSH_PUBLIC_KEYFILE", CURLOPT_SSH_PUBLIC_KEYFILE, CURLOT_STRING, 0},
  {"SSLCERT", CURLOPT_SSLCERT, CURLOT_STRING, 0},
  {"SSLCERTPASSWD", CURLOPT_KEYPASSWD, CURLOT_STRING, CURLOT_FLAG_ALIAS},
  {"SSLCERTTYPE", CURLOPT_SSLCERTTYPE, CURLOT_STRING, 0},
  {"SSLCERT_BLOB", CURLOPT_SSLCERT_BLOB, CURLOT_BLOB, 0},
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
  {"WILDCARDMATCH", CURLOPT_WILDCARDMATCH, CURLOT_LONG, 0},
  {"WRITEDATA", CURLOPT_WRITEDATA, CURLOT_CBPTR, 0},
  {"WRITEFUNCTION", CURLOPT_WRITEFUNCTION, CURLOT_FUNCTION, 0},
  {"WRITEHEADER", CURLOPT_HEADERDATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
  {"XFERINFODATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, 0},
  {"XFERINFOFUNCTION", CURLOPT_XFERINFOFUNCTION, CURLOT_FUNCTION, 0},
  {"XOAUTH2_BEARER", CURLOPT_XOAUTH2_BEARER, CURLOT_STRING, 0},
  {NULL, CURLOPT_LASTENTRY, 0, 0} /* end of table */
};

#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) != (317 + 1));
}
#endif







|









|


353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
  {"WILDCARDMATCH", CURLOPT_WILDCARDMATCH, CURLOT_LONG, 0},
  {"WRITEDATA", CURLOPT_WRITEDATA, CURLOT_CBPTR, 0},
  {"WRITEFUNCTION", CURLOPT_WRITEFUNCTION, CURLOT_FUNCTION, 0},
  {"WRITEHEADER", CURLOPT_HEADERDATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
  {"XFERINFODATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, 0},
  {"XFERINFOFUNCTION", CURLOPT_XFERINFOFUNCTION, CURLOT_FUNCTION, 0},
  {"XOAUTH2_BEARER", CURLOPT_XOAUTH2_BEARER, CURLOT_STRING, 0},
  {NULL, CURLOPT_LASTENTRY, CURLOT_LONG, 0} /* end of table */
};

#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) != (319 + 1));
}
#endif
Changes to jni/curl/lib/escape.c.
73
74
75
76
77
78
79



80
81
82
83
84
85
86

/* for ABI-compatibility with previous versions */
char *curl_unescape(const char *string, int length)
{
  return curl_easy_unescape(NULL, string, length, NULL);
}




char *curl_easy_escape(struct Curl_easy *data, const char *string,
                       int inlength)
{
  size_t length;
  struct dynbuf d;
  (void)data;








>
>
>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

/* for ABI-compatibility with previous versions */
char *curl_unescape(const char *string, int length)
{
  return curl_easy_unescape(NULL, string, length, NULL);
}

/* Escapes for URL the given unescaped string of given length.
 * 'data' is ignored since 7.82.0.
 */
char *curl_easy_escape(struct Curl_easy *data, const char *string,
                       int inlength)
{
  size_t length;
  struct dynbuf d;
  (void)data;

114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

/*
 * Curl_urldecode() URL decodes the given string.
 *
 * Returns a pointer to a malloced string in *ostring with length given in
 * *olen. If length == 0, the length is assumed to be strlen(string).
 *
 * 'data' can be set to NULL
 *
 * ctrl options:
 * - REJECT_NADA: accept everything
 * - REJECT_CTRL: rejects control characters (byte codes lower than 32) in
 *                the data
 * - REJECT_ZERO: rejects decoded zero bytes
 *
 * The values for the enum starts at 2, to make the assert detect legacy







<
<







117
118
119
120
121
122
123


124
125
126
127
128
129
130

/*
 * Curl_urldecode() URL decodes the given string.
 *
 * Returns a pointer to a malloced string in *ostring with length given in
 * *olen. If length == 0, the length is assumed to be strlen(string).
 *


 * ctrl options:
 * - REJECT_NADA: accept everything
 * - REJECT_CTRL: rejects control characters (byte codes lower than 32) in
 *                the data
 * - REJECT_ZERO: rejects decoded zero bytes
 *
 * The values for the enum starts at 2, to make the assert detect legacy
189
190
191
192
193
194
195

196
197
198
199
200
201
202
}

/*
 * Unescapes the given URL escaped string of given length. Returns a
 * pointer to a malloced string with length given in *olen.
 * If length == 0, the length is assumed to be strlen(string).
 * If olen == NULL, no output length is stored.

 */
char *curl_easy_unescape(struct Curl_easy *data, const char *string,
                         int length, int *olen)
{
  char *str = NULL;
  (void)data;
  if(length >= 0) {







>







190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
}

/*
 * Unescapes the given URL escaped string of given length. Returns a
 * pointer to a malloced string with length given in *olen.
 * If length == 0, the length is assumed to be strlen(string).
 * If olen == NULL, no output length is stored.
 * 'data' is ignored since 7.82.0.
 */
char *curl_easy_unescape(struct Curl_easy *data, const char *string,
                         int length, int *olen)
{
  char *str = NULL;
  (void)data;
  if(length >= 0) {
Changes to jni/curl/lib/file.c.
67
68
69
70
71
72
73


74
75
76
77
78
79
80
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#if defined(WIN32) || defined(MSDOS) || defined(__EMX__)
#define DOS_FILESYSTEM 1


#endif

#ifdef OPEN_NEEDS_ARG3
#  define open_readonly(p,f) open((p),(f),(0))
#else
#  define open_readonly(p,f) open((p),(f))
#endif







>
>







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#if defined(WIN32) || defined(MSDOS) || defined(__EMX__)
#define DOS_FILESYSTEM 1
#elif defined(__amigaos4__)
#define AMIGA_FILESYSTEM 1
#endif

#ifdef OPEN_NEEDS_ARG3
#  define open_readonly(p,f) open((p),(f),(0))
#else
#  define open_readonly(p,f) open((p),(f))
#endif
192
193
194
195
196
197
198




















199




200

201
202
203
204
205
206
207
#else
  if(memchr(real_path, 0, real_path_len)) {
    /* binary zeroes indicate foul play */
    Curl_safefree(real_path);
    return CURLE_URL_MALFORMAT;
  }





















  fd = open_readonly(real_path, O_RDONLY);




  file->path = real_path;

#endif
  file->freepath = real_path; /* free this when done */

  file->fd = fd;
  if(!data->set.upload && (fd == -1)) {
    failf(data, "Couldn't open file %s", data->state.up.path);
    file_done(data, CURLE_FILE_COULDNT_READ_FILE, FALSE);







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>

>







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
#else
  if(memchr(real_path, 0, real_path_len)) {
    /* binary zeroes indicate foul play */
    Curl_safefree(real_path);
    return CURLE_URL_MALFORMAT;
  }

  #ifdef AMIGA_FILESYSTEM
  /*
   * A leading slash in an AmigaDOS path denotes the parent
   * directory, and hence we block this as it is relative.
   * Absolute paths start with 'volumename:', so we check for
   * this first. Failing that, we treat the path as a real unix
   * path, but only if the application was compiled with -lunix.
   */
  fd = -1;
  file->path = real_path;

  if(real_path[0] == '/') {
    extern int __unix_path_semantics;
    if(strchr(real_path + 1, ':')) {
      /* Amiga absolute path */
      fd = open_readonly(real_path + 1, O_RDONLY);
      file->path++;
    }
    else if(__unix_path_semantics) {
      /* -lunix fallback */
      fd = open_readonly(real_path, O_RDONLY);
    }
  }
  #else
  fd = open_readonly(real_path, O_RDONLY);
  file->path = real_path;
  #endif
#endif
  file->freepath = real_path; /* free this when done */

  file->fd = fd;
  if(!data->set.upload && (fd == -1)) {
    failf(data, "Couldn't open file %s", data->state.up.path);
    file_done(data, CURLE_FILE_COULDNT_READ_FILE, FALSE);
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246

static CURLcode file_disconnect(struct Curl_easy *data,
                                struct connectdata *conn,
                                bool dead_connection)
{
  (void)dead_connection; /* not used */
  (void)conn;
  return file_done(data, 0, 0);
}

#ifdef DOS_FILESYSTEM
#define DIRSEP '\\'
#else
#define DIRSEP '/'
#endif







|







259
260
261
262
263
264
265
266
267
268
269
270
271
272
273

static CURLcode file_disconnect(struct Curl_easy *data,
                                struct connectdata *conn,
                                bool dead_connection)
{
  (void)dead_connection; /* not used */
  (void)conn;
  return file_done(data, CURLE_OK, FALSE);
}

#ifdef DOS_FILESYSTEM
#define DIRSEP '\\'
#else
#define DIRSEP '/'
#endif
Changes to jni/curl/lib/ftp.c.
514
515
516
517
518
519
520
521

522
523
524
525
526
527
528
    if(result)
      return result;
  }
  else {
    /* Add timeout to multi handle and break out of the loop */
    if(*connected == FALSE) {
      Curl_expire(data, data->set.accepttimeout > 0 ?
                  data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT, 0);

    }
  }

  return result;
}

/* macro to check for a three-digit ftp status code at the start of the







|
>







514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
    if(result)
      return result;
  }
  else {
    /* Add timeout to multi handle and break out of the loop */
    if(*connected == FALSE) {
      Curl_expire(data, data->set.accepttimeout > 0 ?
                  data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT,
                  EXPIRE_FTP_ACCEPT);
    }
  }

  return result;
}

/* macro to check for a three-digit ftp status code at the start of the
Changes to jni/curl/lib/getinfo.c.
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
  const char **param_charp = NULL;
  struct curl_slist **param_slistp = NULL;
  curl_socket_t *param_socketp = NULL;
  int type;
  CURLcode result = CURLE_UNKNOWN_OPTION;

  if(!data)
    return result;

  va_start(arg, info);

  type = CURLINFO_TYPEMASK & (int)info;
  switch(type) {
  case CURLINFO_STRING:
    param_charp = va_arg(arg, const char **);







|







574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
  const char **param_charp = NULL;
  struct curl_slist **param_slistp = NULL;
  curl_socket_t *param_socketp = NULL;
  int type;
  CURLcode result = CURLE_UNKNOWN_OPTION;

  if(!data)
    return CURLE_BAD_FUNCTION_ARGUMENT;

  va_start(arg, info);

  type = CURLINFO_TYPEMASK & (int)info;
  switch(type) {
  case CURLINFO_STRING:
    param_charp = va_arg(arg, const char **);
Changes to jni/curl/lib/h2h3.c.
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
      nva[i].valuelen = sizeof("trailers") - 1;
      break;
    default:
      nva[i].value = hdbuf;
      nva[i].valuelen = (end - hdbuf);
    }

    nva[i].value = hdbuf;
    nva[i].valuelen = (end - hdbuf);

    ++i;
  }

  /* :authority must come before non-pseudo header fields */
  if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
    struct h2h3pseudo authority = nva[authority_idx];
    for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {







<
<
<







254
255
256
257
258
259
260



261
262
263
264
265
266
267
      nva[i].valuelen = sizeof("trailers") - 1;
      break;
    default:
      nva[i].value = hdbuf;
      nva[i].valuelen = (end - hdbuf);
    }




    ++i;
  }

  /* :authority must come before non-pseudo header fields */
  if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
    struct h2h3pseudo authority = nva[authority_idx];
    for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
Changes to jni/curl/lib/headers.c.
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  struct Curl_llist_element *e_pick = NULL;
  struct Curl_easy *data = easy;
  size_t match = 0;
  size_t amount = 0;
  struct Curl_header_store *hs = NULL;
  struct Curl_header_store *pick = NULL;
  if(!name || !hout || !data ||
     (type > (CURLH_HEADER|CURLH_TRAILER|CURLH_CONNECT|CURLH_1XX)) ||
     !type || (request < -1))
    return CURLHE_BAD_ARGUMENT;
  if(!Curl_llist_count(&data->state.httphdrs))
    return CURLHE_NOHEADERS; /* no headers available */
  if(request > data->state.requests)
    return CURLHE_NOREQUEST;
  if(request == -1)
    request = data->state.requests;







|
|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  struct Curl_llist_element *e_pick = NULL;
  struct Curl_easy *data = easy;
  size_t match = 0;
  size_t amount = 0;
  struct Curl_header_store *hs = NULL;
  struct Curl_header_store *pick = NULL;
  if(!name || !hout || !data ||
     (type > (CURLH_HEADER|CURLH_TRAILER|CURLH_CONNECT|CURLH_1XX|
              CURLH_PSEUDO)) || !type || (request < -1))
    return CURLHE_BAD_ARGUMENT;
  if(!Curl_llist_count(&data->state.httphdrs))
    return CURLHE_NOHEADERS; /* no headers available */
  if(request > data->state.requests)
    return CURLHE_NOREQUEST;
  if(request == -1)
    request = data->state.requests;
Changes to jni/curl/lib/hostip.c.
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474

  dns = dns2;
  dns->inuse++;         /* mark entry as in-use */
  return dns;
}

#ifdef ENABLE_IPV6
/* return a static IPv6 resolve for 'localhost' */
static struct Curl_addrinfo *get_localhost6(int port)
{
  struct Curl_addrinfo *ca;
  const size_t ss_size = sizeof(struct sockaddr_in6);
  const size_t hostlen = strlen("localhost");
  struct sockaddr_in6 sa6;
  unsigned char ipv6[16];
  unsigned short port16 = (unsigned short)(port & 0xffff);
  ca = calloc(sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1, 1);
  if(!ca)
    return NULL;








|
|



|







455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474

  dns = dns2;
  dns->inuse++;         /* mark entry as in-use */
  return dns;
}

#ifdef ENABLE_IPV6
/* return a static IPv6 ::1 for the name */
static struct Curl_addrinfo *get_localhost6(int port, const char *name)
{
  struct Curl_addrinfo *ca;
  const size_t ss_size = sizeof(struct sockaddr_in6);
  const size_t hostlen = strlen(name);
  struct sockaddr_in6 sa6;
  unsigned char ipv6[16];
  unsigned short port16 = (unsigned short)(port & 0xffff);
  ca = calloc(sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1, 1);
  if(!ca)
    return NULL;

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
  ca->ai_socktype  = SOCK_STREAM;
  ca->ai_protocol  = IPPROTO_TCP;
  ca->ai_addrlen   = (curl_socklen_t)ss_size;
  ca->ai_next      = NULL;
  ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
  memcpy(ca->ai_addr, &sa6, ss_size);
  ca->ai_canonname = (char *)ca->ai_addr + ss_size;
  strcpy(ca->ai_canonname, "localhost");
  return ca;
}
#else
#define get_localhost6(x) NULL
#endif

/* return a static IPv4 resolve for 'localhost' */
static struct Curl_addrinfo *get_localhost(int port)
{
  struct Curl_addrinfo *ca;
  const size_t ss_size = sizeof(struct sockaddr_in);
  const size_t hostlen = strlen("localhost");
  struct sockaddr_in sa;
  unsigned int ipv4;
  unsigned short port16 = (unsigned short)(port & 0xffff);

  /* memset to clear the sa.sin_zero field */
  memset(&sa, 0, sizeof(sa));
  sa.sin_family = AF_INET;







|



|


|
|



|







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
  ca->ai_socktype  = SOCK_STREAM;
  ca->ai_protocol  = IPPROTO_TCP;
  ca->ai_addrlen   = (curl_socklen_t)ss_size;
  ca->ai_next      = NULL;
  ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
  memcpy(ca->ai_addr, &sa6, ss_size);
  ca->ai_canonname = (char *)ca->ai_addr + ss_size;
  strcpy(ca->ai_canonname, name);
  return ca;
}
#else
#define get_localhost6(x,y) NULL
#endif

/* return a static IPv4 127.0.0.1 for the given name */
static struct Curl_addrinfo *get_localhost(int port, const char *name)
{
  struct Curl_addrinfo *ca;
  const size_t ss_size = sizeof(struct sockaddr_in);
  const size_t hostlen = strlen(name);
  struct sockaddr_in sa;
  unsigned int ipv4;
  unsigned short port16 = (unsigned short)(port & 0xffff);

  /* memset to clear the sa.sin_zero field */
  memset(&sa, 0, sizeof(sa));
  sa.sin_family = AF_INET;
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
  ca->ai_family    = AF_INET;
  ca->ai_socktype  = SOCK_STREAM;
  ca->ai_protocol  = IPPROTO_TCP;
  ca->ai_addrlen   = (curl_socklen_t)ss_size;
  ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
  memcpy(ca->ai_addr, &sa, ss_size);
  ca->ai_canonname = (char *)ca->ai_addr + ss_size;
  strcpy(ca->ai_canonname, "localhost");
  ca->ai_next = get_localhost6(port);
  return ca;
}

#ifdef ENABLE_IPV6
/*
 * Curl_ipv6works() returns TRUE if IPv6 seems to work.
 */







|
|







521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
  ca->ai_family    = AF_INET;
  ca->ai_socktype  = SOCK_STREAM;
  ca->ai_protocol  = IPPROTO_TCP;
  ca->ai_addrlen   = (curl_socklen_t)ss_size;
  ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
  memcpy(ca->ai_addr, &sa, ss_size);
  ca->ai_canonname = (char *)ca->ai_addr + ss_size;
  strcpy(ca->ai_canonname, name);
  ca->ai_next = get_localhost6(port, name);
  return ca;
}

#ifdef ENABLE_IPV6
/*
 * Curl_ipv6works() returns TRUE if IPv6 seems to work.
 */
575
576
577
578
579
580
581











582
583
584
585
586
587
588
     || Curl_inet_pton(AF_INET6, hostname, &in6) > 0
#endif
    )
    return TRUE;
  return FALSE;
}












/*
 * Curl_resolv() is the main name resolve function within libcurl. It resolves
 * a name and returns a pointer to the entry in the 'entry' argument (if one
 * is provided). This function might return immediately if we're using asynch
 * resolves. See the return codes.
 *
 * The cache entry we return will get its 'inuse' counter increased when this







>
>
>
>
>
>
>
>
>
>
>







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
     || Curl_inet_pton(AF_INET6, hostname, &in6) > 0
#endif
    )
    return TRUE;
  return FALSE;
}


/* return TRUE if 'part' is a case insentive tail of 'full' */
static bool tailmatch(const char *full, const char *part)
{
  size_t plen = strlen(part);
  size_t flen = strlen(full);
  if(plen > flen)
    return FALSE;
  return strncasecompare(part, &full[flen - plen], plen);
}

/*
 * Curl_resolv() is the main name resolve function within libcurl. It resolves
 * a name and returns a pointer to the entry in the 'entry' argument (if one
 * is provided). This function might return immediately if we're using asynch
 * resolves. See the return codes.
 *
 * The cache entry we return will get its 'inuse' counter increased when this
693
694
695
696
697
698
699
700

701
702
703
704
705
706
707
708

#endif /* !USE_RESOLVE_ON_IPS */

    if(!addr) {
      if(conn->ip_version == CURL_IPRESOLVE_V6 && !Curl_ipv6works(data))
        return CURLRESOLV_ERROR;

      if(strcasecompare(hostname, "localhost"))

        addr = get_localhost(port);
#ifndef CURL_DISABLE_DOH
      else if(allowDOH && data->set.doh && !ipnum)
        addr = Curl_doh(data, hostname, port, &respwait);
#endif
      else {
        /* Check what IP specifics the app has requested and if we can provide
         * it. If not, bail out. */







|
>
|







704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720

#endif /* !USE_RESOLVE_ON_IPS */

    if(!addr) {
      if(conn->ip_version == CURL_IPRESOLVE_V6 && !Curl_ipv6works(data))
        return CURLRESOLV_ERROR;

      if(strcasecompare(hostname, "localhost") ||
         tailmatch(hostname, ".localhost"))
        addr = get_localhost(port, hostname);
#ifndef CURL_DISABLE_DOH
      else if(allowDOH && data->set.doh && !ipnum)
        addr = Curl_doh(data, hostname, port, &respwait);
#endif
      else {
        /* Check what IP specifics the app has requested and if we can provide
         * it. If not, bail out. */
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
    free(dns);
  }
}

/*
 * Curl_init_dnscache() inits a new DNS cache.
 */
void Curl_init_dnscache(struct Curl_hash *hash)
{
  Curl_hash_init(hash, 7, Curl_hash_str, Curl_str_key_compare,
                 freednsentry);
}

/*
 * Curl_hostcache_clean()
 *
 * This _can_ be called with 'data' == NULL but then of course no locking







|

|







980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
    free(dns);
  }
}

/*
 * Curl_init_dnscache() inits a new DNS cache.
 */
void Curl_init_dnscache(struct Curl_hash *hash, int size)
{
  Curl_hash_init(hash, size, Curl_hash_str, Curl_str_key_compare,
                 freednsentry);
}

/*
 * Curl_hostcache_clean()
 *
 * This _can_ be called with 'data' == NULL but then of course no locking
Changes to jni/curl/lib/hostip.h.
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142


/* unlock a previously resolved dns entry */
void Curl_resolv_unlock(struct Curl_easy *data,
                        struct Curl_dns_entry *dns);

/* init a new dns cache */
void Curl_init_dnscache(struct Curl_hash *hash);

/* prune old entries from the DNS cache */
void Curl_hostcache_prune(struct Curl_easy *data);

/* Return # of addresses in a Curl_addrinfo struct */
int Curl_num_addresses(const struct Curl_addrinfo *addr);








|







128
129
130
131
132
133
134
135
136
137
138
139
140
141
142


/* unlock a previously resolved dns entry */
void Curl_resolv_unlock(struct Curl_easy *data,
                        struct Curl_dns_entry *dns);

/* init a new dns cache */
void Curl_init_dnscache(struct Curl_hash *hash, int hashsize);

/* prune old entries from the DNS cache */
void Curl_hostcache_prune(struct Curl_easy *data);

/* Return # of addresses in a Curl_addrinfo struct */
int Curl_num_addresses(const struct Curl_addrinfo *addr);

Changes to jni/curl/lib/hostip4.c.
108
109
110
111
112
113
114
115

116
117
118
119
120
121
122
    infof(data, "Curl_ipv4_resolve_r failed for %s", hostname);

  return ai;
}
#endif /* CURLRES_SYNCH */
#endif /* CURLRES_IPV4 */

#if defined(CURLRES_IPV4) && !defined(CURLRES_ARES)


/*
 * Curl_ipv4_resolve_r() - ipv4 threadsafe resolver function.
 *
 * This is used for both synchronous and asynchronous resolver builds,
 * implying that only threadsafe code and function calls may be used.
 *







|
>







108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
    infof(data, "Curl_ipv4_resolve_r failed for %s", hostname);

  return ai;
}
#endif /* CURLRES_SYNCH */
#endif /* CURLRES_IPV4 */

#if defined(CURLRES_IPV4) && \
   !defined(CURLRES_ARES) && !defined(CURLRES_AMIGA)

/*
 * Curl_ipv4_resolve_r() - ipv4 threadsafe resolver function.
 *
 * This is used for both synchronous and asynchronous resolver builds,
 * implying that only threadsafe code and function calls may be used.
 *
293
294
295
296
297
298
299
300


    if(buf) /* used a *_r() function */
      free(buf);
  }

  return ai;
}
#endif /* defined(CURLRES_IPV4) && !defined(CURLRES_ARES) */








|
>
294
295
296
297
298
299
300
301
302

    if(buf) /* used a *_r() function */
      free(buf);
  }

  return ai;
}
#endif /* defined(CURLRES_IPV4) && !defined(CURLRES_ARES) &&
                                   !defined(CURLRES_AMIGA) */
Changes to jni/curl/lib/http.h.
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
                                chunk, points to an allocated send_buffer
                                struct */
#endif
#ifdef USE_NGHTTP2
  /*********** for HTTP/2 we store stream-local data here *************/
  int32_t stream_id; /* stream we are interested in */

  bool bodystarted;
  /* We store non-final and final response headers here, per-stream */
  struct dynbuf header_recvbuf;
  size_t nread_header_recvbuf; /* number of bytes in header_recvbuf fed into
                                  upper layer */
  struct dynbuf trailer_recvbuf;
  int status_code; /* HTTP status code */
  const uint8_t *pausedata; /* pointer to data received in on_data_chunk */
  size_t pauselen; /* the number of bytes left in data */
  bool close_handled; /* TRUE if stream closure is handled by libcurl */

  char **push_headers;       /* allocated array */
  size_t push_headers_used;  /* number of entries filled in */
  size_t push_headers_alloc; /* number of entries allocated */
  uint32_t error; /* HTTP/2 stream error code */
#endif
#if defined(USE_NGHTTP2) || defined(USE_NGHTTP3)


  bool closed; /* TRUE on HTTP2 stream close */
  char *mem;     /* points to a buffer in memory to store received data */
  size_t len;    /* size of the buffer 'mem' points to */
  size_t memlen; /* size of data copied to mem */
#endif
#if defined(USE_NGHTTP2) || defined(ENABLE_QUIC)
  /* fields used by both HTTP/2 and HTTP/3 */
  const uint8_t *upload_mem; /* points to a buffer to read from */
  size_t upload_len; /* size of the buffer 'upload_mem' points to */
  curl_off_t upload_left; /* number of bytes left to upload */
#endif

#ifdef ENABLE_QUIC
#ifndef USE_MSH3
  /*********** for HTTP/3 we store stream-local data here *************/
  int64_t stream3_id; /* stream we are interested in */

  bool firstheader;  /* FALSE until headers arrive */
  bool firstbody;  /* FALSE until body arrives */
  bool h3req;    /* FALSE until request is issued */
#endif
  bool upload_done;
#endif
#ifdef USE_NGHTTP3







<





<










>
>
















>







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
                                chunk, points to an allocated send_buffer
                                struct */
#endif
#ifdef USE_NGHTTP2
  /*********** for HTTP/2 we store stream-local data here *************/
  int32_t stream_id; /* stream we are interested in */


  /* We store non-final and final response headers here, per-stream */
  struct dynbuf header_recvbuf;
  size_t nread_header_recvbuf; /* number of bytes in header_recvbuf fed into
                                  upper layer */
  struct dynbuf trailer_recvbuf;

  const uint8_t *pausedata; /* pointer to data received in on_data_chunk */
  size_t pauselen; /* the number of bytes left in data */
  bool close_handled; /* TRUE if stream closure is handled by libcurl */

  char **push_headers;       /* allocated array */
  size_t push_headers_used;  /* number of entries filled in */
  size_t push_headers_alloc; /* number of entries allocated */
  uint32_t error; /* HTTP/2 stream error code */
#endif
#if defined(USE_NGHTTP2) || defined(USE_NGHTTP3)
  bool bodystarted;
  int status_code; /* HTTP status code */
  bool closed; /* TRUE on HTTP2 stream close */
  char *mem;     /* points to a buffer in memory to store received data */
  size_t len;    /* size of the buffer 'mem' points to */
  size_t memlen; /* size of data copied to mem */
#endif
#if defined(USE_NGHTTP2) || defined(ENABLE_QUIC)
  /* fields used by both HTTP/2 and HTTP/3 */
  const uint8_t *upload_mem; /* points to a buffer to read from */
  size_t upload_len; /* size of the buffer 'upload_mem' points to */
  curl_off_t upload_left; /* number of bytes left to upload */
#endif

#ifdef ENABLE_QUIC
#ifndef USE_MSH3
  /*********** for HTTP/3 we store stream-local data here *************/
  int64_t stream3_id; /* stream we are interested in */
  uint64_t error3; /* HTTP/3 stream error code */
  bool firstheader;  /* FALSE until headers arrive */
  bool firstbody;  /* FALSE until body arrives */
  bool h3req;    /* FALSE until request is issued */
#endif
  bool upload_done;
#endif
#ifdef USE_NGHTTP3
Changes to jni/curl/lib/http_aws_sigv4.c.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "curl_setup.h"

#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH)

#include "urldata.h"
#include "strcase.h"
#include "strdup.h"
#include "vauth/vauth.h"
#include "vauth/digest.h"
#include "http_aws_sigv4.h"
#include "curl_sha256.h"
#include "transfer.h"

#include "strcase.h"
#include "parsedate.h"
#include "sendf.h"







<
<







25
26
27
28
29
30
31


32
33
34
35
36
37
38
#include "curl_setup.h"

#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH)

#include "urldata.h"
#include "strcase.h"
#include "strdup.h"


#include "http_aws_sigv4.h"
#include "curl_sha256.h"
#include "transfer.h"

#include "strcase.h"
#include "parsedate.h"
#include "sendf.h"
Changes to jni/curl/lib/http_chunks.c.
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 *
 * This function always uses ASCII hex values to accommodate non-ASCII hosts.
 * For example, 0x0d and 0x0a are used instead of '\r' and '\n'.
 */
CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
                              char *datap,
                              ssize_t datalen,
                              ssize_t *wrotep,
                              CURLcode *extrap)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct Curl_chunker *ch = &conn->chunk;
  struct SingleRequest *k = &data->req;
  size_t piece;
  curl_off_t length = (curl_off_t)datalen;
  size_t *wrote = (size_t *)wrotep;

  *wrote = 0; /* nothing's written yet */

  /* the original data is written to the client, but we go on with the
     chunk read process, to properly calculate the content length*/
  if(data->set.http_te_skip && !k->ignorebody) {
    result = Curl_client_write(data, CLIENTWRITE_BODY, datap, datalen);







|








<







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

112
113
114
115
116
117
118
 *
 * This function always uses ASCII hex values to accommodate non-ASCII hosts.
 * For example, 0x0d and 0x0a are used instead of '\r' and '\n'.
 */
CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
                              char *datap,
                              ssize_t datalen,
                              ssize_t *wrote,
                              CURLcode *extrap)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;
  struct Curl_chunker *ch = &conn->chunk;
  struct SingleRequest *k = &data->req;
  size_t piece;
  curl_off_t length = (curl_off_t)datalen;


  *wrote = 0; /* nothing's written yet */

  /* the original data is written to the client, but we go on with the
     chunk read process, to properly calculate the content length*/
  if(data->set.http_te_skip && !k->ignorebody) {
    result = Curl_client_write(data, CLIENTWRITE_BODY, datap, datalen);
Changes to jni/curl/lib/http_proxy.c.
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
                            conn->writesockfd,  /* socket to send to */
                            k->upload_fromhere, /* buffer pointer */
                            s->nsend,           /* buffer size */
                            &bytes_written);    /* actually sent */

        if(!result)
          /* send to debug callback! */
          result = Curl_debug(data, CURLINFO_HEADER_OUT,
                              k->upload_fromhere, bytes_written);

        s->nsend -= bytes_written;
        k->upload_fromhere += bytes_written;
        return result;
      }
      http->sending = HTTPSEND_NADA;
      /* if nothing left to send, continue */







|
|







388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
                            conn->writesockfd,  /* socket to send to */
                            k->upload_fromhere, /* buffer pointer */
                            s->nsend,           /* buffer size */
                            &bytes_written);    /* actually sent */

        if(!result)
          /* send to debug callback! */
          Curl_debug(data, CURLINFO_HEADER_OUT,
                     k->upload_fromhere, bytes_written);

        s->nsend -= bytes_written;
        k->upload_fromhere += bytes_written;
        return result;
      }
      http->sending = HTTPSEND_NADA;
      /* if nothing left to send, continue */
Changes to jni/curl/lib/imap.c.
79
80
81
82
83
84
85

86
87
88
89
90
91
92
#include "select.h"
#include "multiif.h"
#include "url.h"
#include "strcase.h"
#include "bufref.h"
#include "curl_sasl.h"
#include "warnless.h"


/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* Local API functions */







>







79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "select.h"
#include "multiif.h"
#include "url.h"
#include "strcase.h"
#include "bufref.h"
#include "curl_sasl.h"
#include "warnless.h"
#include "curl_ctype.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* Local API functions */
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
 * imap_is_bchar()
 *
 * Portable test of whether the specified char is a "bchar" as defined in the
 * grammar of RFC-5092.
 */
static bool imap_is_bchar(char ch)
{





  switch(ch) {
    /* bchar */
    case ':': case '@': case '/':
    /* bchar -> achar */
    case '&': case '=':
    /* bchar -> achar -> uchar -> unreserved */
    case '0': case '1': case '2': case '3': case '4': case '5': case '6':
    case '7': case '8': case '9':
    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
    case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
    case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
    case 'V': case 'W': case 'X': case 'Y': case 'Z':
    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
    case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
    case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
    case 'v': case 'w': case 'x': case 'y': case 'z':
    case '-': case '.': case '_': case '~':
    /* bchar -> achar -> uchar -> sub-delims-sh */
    case '!': case '$': case '\'': case '(': case ')': case '*':
    case '+': case ',':
    /* bchar -> achar -> uchar -> pct-encoded */
    case '%': /* HEXDIG chars are already included above */
      return true;







>
>
>
>
>





|
<
<
<
<
<
<
<
<
<
<







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
 * imap_is_bchar()
 *
 * Portable test of whether the specified char is a "bchar" as defined in the
 * grammar of RFC-5092.
 */
static bool imap_is_bchar(char ch)
{
  /* Peforming the alnum check with this macro is faster because of ASCII
     artihmetic */
  if(ISALNUM(ch))
    return true;

  switch(ch) {
    /* bchar */
    case ':': case '@': case '/':
    /* bchar -> achar */
    case '&': case '=':
    /* bchar -> achar -> uchar -> unreserved (without alphanumeric) */










    case '-': case '.': case '_': case '~':
    /* bchar -> achar -> uchar -> sub-delims-sh */
    case '!': case '$': case '\'': case '(': case ')': case '*':
    case '+': case ',':
    /* bchar -> achar -> uchar -> pct-encoded */
    case '%': /* HEXDIG chars are already included above */
      return true;
Changes to jni/curl/lib/ldap.c.
32
33
34
35
36
37
38












39
40
41
42
43
44
45
 * gets compiled is the code from openldap.c, otherwise the code that gets
 * compiled is the code from ldap.c.
 *
 * When USE_OPENLDAP is defined a recent version of the OpenLDAP library
 * might be required for compilation and runtime. In order to use ancient
 * OpenLDAP library versions, USE_OPENLDAP shall not be defined.
 */













#ifdef USE_WIN32_LDAP           /* Use Windows LDAP implementation. */
# include <winldap.h>
# ifndef LDAP_VENDOR_NAME
#  error Your Platform SDK is NOT sufficient for LDAP support! \
         Update your Platform SDK, or disable LDAP support!
# else







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







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 * gets compiled is the code from openldap.c, otherwise the code that gets
 * compiled is the code from ldap.c.
 *
 * When USE_OPENLDAP is defined a recent version of the OpenLDAP library
 * might be required for compilation and runtime. In order to use ancient
 * OpenLDAP library versions, USE_OPENLDAP shall not be defined.
 */

/* Wincrypt must be included before anything that could include OpenSSL. */
#if defined(USE_WIN32_CRYPTO)
#include <wincrypt.h>
/* Undefine wincrypt conflicting symbols for BoringSSL. */
#undef X509_NAME
#undef X509_EXTENSIONS
#undef PKCS7_ISSUER_AND_SERIAL
#undef PKCS7_SIGNER_INFO
#undef OCSP_REQUEST
#undef OCSP_RESPONSE
#endif

#ifdef USE_WIN32_LDAP           /* Use Windows LDAP implementation. */
# include <winldap.h>
# ifndef LDAP_VENDOR_NAME
#  error Your Platform SDK is NOT sufficient for LDAP support! \
         Update your Platform SDK, or disable LDAP support!
# else
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
#endif
  ldap_set_option(NULL, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);

  if(ldap_ssl) {
#ifdef HAVE_LDAP_SSL
#ifdef USE_WIN32_LDAP
    /* Win32 LDAP SDK doesn't support insecure mode without CA! */
    server = ldap_sslinit(host, (int)conn->port, 1);
    ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
#else
    int ldap_option;
    char *ldap_ca = conn->ssl_config.CAfile;
#if defined(CURL_HAS_NOVELL_LDAPSDK)
    rc = ldapssl_client_init(NULL, NULL);
    if(rc != LDAP_SUCCESS) {







|







352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
#endif
  ldap_set_option(NULL, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);

  if(ldap_ssl) {
#ifdef HAVE_LDAP_SSL
#ifdef USE_WIN32_LDAP
    /* Win32 LDAP SDK doesn't support insecure mode without CA! */
    server = ldap_sslinit(host, conn->port, 1);
    ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
#else
    int ldap_option;
    char *ldap_ca = conn->ssl_config.CAfile;
#if defined(CURL_HAS_NOVELL_LDAPSDK)
    rc = ldapssl_client_init(NULL, NULL);
    if(rc != LDAP_SUCCESS) {
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
    rc = ldapssl_set_verify_mode(ldap_option);
    if(rc != LDAP_SUCCESS) {
      failf(data, "LDAP local: ERROR setting cert verify mode: %s",
              ldap_err2string(rc));
      result = CURLE_SSL_CERTPROBLEM;
      goto quit;
    }
    server = ldapssl_init(host, (int)conn->port, 1);
    if(!server) {
      failf(data, "LDAP local: Cannot connect to %s:%ld",
            conn->host.dispname, conn->port);
      result = CURLE_COULDNT_CONNECT;
      goto quit;
    }
#elif defined(LDAP_OPT_X_TLS)
    if(conn->ssl_config.verifypeer) {
      /* OpenLDAP SDK supports BASE64 files. */







|

|







398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
    rc = ldapssl_set_verify_mode(ldap_option);
    if(rc != LDAP_SUCCESS) {
      failf(data, "LDAP local: ERROR setting cert verify mode: %s",
              ldap_err2string(rc));
      result = CURLE_SSL_CERTPROBLEM;
      goto quit;
    }
    server = ldapssl_init(host, conn->port, 1);
    if(!server) {
      failf(data, "LDAP local: Cannot connect to %s:%u",
            conn->host.dispname, conn->port);
      result = CURLE_COULDNT_CONNECT;
      goto quit;
    }
#elif defined(LDAP_OPT_X_TLS)
    if(conn->ssl_config.verifypeer) {
      /* OpenLDAP SDK supports BASE64 files. */
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
    rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &ldap_option);
    if(rc != LDAP_SUCCESS) {
      failf(data, "LDAP local: ERROR setting cert verify mode: %s",
              ldap_err2string(rc));
      result = CURLE_SSL_CERTPROBLEM;
      goto quit;
    }
    server = ldap_init(host, (int)conn->port);
    if(!server) {
      failf(data, "LDAP local: Cannot connect to %s:%ld",
            conn->host.dispname, conn->port);
      result = CURLE_COULDNT_CONNECT;
      goto quit;
    }
    ldap_option = LDAP_OPT_X_TLS_HARD;
    rc = ldap_set_option(server, LDAP_OPT_X_TLS, &ldap_option);
    if(rc != LDAP_SUCCESS) {







|

|







439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
    rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &ldap_option);
    if(rc != LDAP_SUCCESS) {
      failf(data, "LDAP local: ERROR setting cert verify mode: %s",
              ldap_err2string(rc));
      result = CURLE_SSL_CERTPROBLEM;
      goto quit;
    }
    server = ldap_init(host, conn->port);
    if(!server) {
      failf(data, "LDAP local: Cannot connect to %s:%u",
            conn->host.dispname, conn->port);
      result = CURLE_COULDNT_CONNECT;
      goto quit;
    }
    ldap_option = LDAP_OPT_X_TLS_HARD;
    rc = ldap_set_option(server, LDAP_OPT_X_TLS, &ldap_option);
    if(rc != LDAP_SUCCESS) {
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
  }
  else if(data->set.use_ssl > CURLUSESSL_TRY) {
    failf(data, "LDAP local: explicit TLS not supported");
    result = CURLE_NOT_BUILT_IN;
    goto quit;
  }
  else {
    server = ldap_init(host, (int)conn->port);
    if(!server) {
      failf(data, "LDAP local: Cannot connect to %s:%ld",
            conn->host.dispname, conn->port);
      result = CURLE_COULDNT_CONNECT;
      goto quit;
    }
  }
#ifdef USE_WIN32_LDAP
  ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);







|

|







480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
  }
  else if(data->set.use_ssl > CURLUSESSL_TRY) {
    failf(data, "LDAP local: explicit TLS not supported");
    result = CURLE_NOT_BUILT_IN;
    goto quit;
  }
  else {
    server = ldap_init(host, conn->port);
    if(!server) {
      failf(data, "LDAP local: Cannot connect to %s:%u",
            conn->host.dispname, conn->port);
      result = CURLE_COULDNT_CONNECT;
      goto quit;
    }
  }
#ifdef USE_WIN32_LDAP
  ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);
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.84.0-DEV</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.84.0-DEV</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.84.0-DEV</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.85.0-DEV</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.85.0-DEV</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.85.0-DEV</string>
</dict>
</plist>
Changes to jni/curl/lib/md4.c.
28
29
30
31
32
33
34
35

36
37
38
39
40
41
42

#include "curl_md4.h"
#include "warnless.h"


#ifdef USE_OPENSSL
#include <openssl/opensslconf.h>
#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3)

/* OpenSSL 3.0.0 marks the MD4 functions as deprecated */
#define OPENSSL_NO_MD4
#endif
#endif /* USE_OPENSSL */

#ifdef USE_WOLFSSL
#include <wolfssl/options.h>







|
>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

#include "curl_md4.h"
#include "warnless.h"


#ifdef USE_OPENSSL
#include <openssl/opensslconf.h>
#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
   !defined(USE_AMISSL)
/* OpenSSL 3.0.0 marks the MD4 functions as deprecated */
#define OPENSSL_NO_MD4
#endif
#endif /* USE_OPENSSL */

#ifdef USE_WOLFSSL
#include <wolfssl/options.h>
Changes to jni/curl/lib/md5.c.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

#if(MBEDTLS_VERSION_NUMBER >= 0x02070000) && \
   (MBEDTLS_VERSION_NUMBER < 0x03000000)
  #define HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

#if defined(USE_OPENSSL) && !defined(USE_AMISSL)
  #include <openssl/opensslconf.h>
  #if !defined(OPENSSL_NO_MD5) && !defined(OPENSSL_NO_DEPRECATED_3_0)
    #define USE_OPENSSL_MD5
  #endif
#endif

#ifdef USE_WOLFSSL







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

#if(MBEDTLS_VERSION_NUMBER >= 0x02070000) && \
   (MBEDTLS_VERSION_NUMBER < 0x03000000)
  #define HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS
#endif
#endif /* USE_MBEDTLS */

#ifdef USE_OPENSSL
  #include <openssl/opensslconf.h>
  #if !defined(OPENSSL_NO_MD5) && !defined(OPENSSL_NO_DEPRECATED_3_0)
    #define USE_OPENSSL_MD5
  #endif
#endif

#ifdef USE_WOLFSSL
Changes to jni/curl/lib/memdebug.c.
125
126
127
128
129
130
131
132

133
134
135
136
137
138
139


  }

  return FALSE; /* allow this */
}

void *curl_dbg_malloc(size_t wantedsize, int line, const char *source)

{
  struct memdebug *mem;
  size_t size;

  DEBUGASSERT(wantedsize != 0);

  if(countcheck("malloc", line, source))







|
>







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


  }

  return FALSE; /* allow this */
}

ALLOC_FUNC void *curl_dbg_malloc(size_t wantedsize,
                                 int line, const char *source)
{
  struct memdebug *mem;
  size_t size;

  DEBUGASSERT(wantedsize != 0);

  if(countcheck("malloc", line, source))
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
    curl_dbg_log("MEM %s:%d malloc(%zu) = %p\n",
                 source, line, wantedsize,
                 mem ? (void *)mem->mem : (void *)0);

  return (mem ? mem->mem : NULL);
}

void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
                      int line, const char *source)
{
  struct memdebug *mem;
  size_t size, user_size;

  DEBUGASSERT(wanted_elements != 0);
  DEBUGASSERT(wanted_size != 0);








|
|







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
    curl_dbg_log("MEM %s:%d malloc(%zu) = %p\n",
                 source, line, wantedsize,
                 mem ? (void *)mem->mem : (void *)0);

  return (mem ? mem->mem : NULL);
}

ALLOC_FUNC void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
                                 int line, const char *source)
{
  struct memdebug *mem;
  size_t size, user_size;

  DEBUGASSERT(wanted_elements != 0);
  DEBUGASSERT(wanted_size != 0);

179
180
181
182
183
184
185
186

187
188
189
190
191
192
193
    curl_dbg_log("MEM %s:%d calloc(%zu,%zu) = %p\n",
                 source, line, wanted_elements, wanted_size,
                 mem ? (void *)mem->mem : (void *)0);

  return (mem ? mem->mem : NULL);
}

char *curl_dbg_strdup(const char *str, int line, const char *source)

{
  char *mem;
  size_t len;

  DEBUGASSERT(str != NULL);

  if(countcheck("strdup", line, source))







|
>







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
    curl_dbg_log("MEM %s:%d calloc(%zu,%zu) = %p\n",
                 source, line, wanted_elements, wanted_size,
                 mem ? (void *)mem->mem : (void *)0);

  return (mem ? mem->mem : NULL);
}

ALLOC_FUNC char *curl_dbg_strdup(const char *str,
                                 int line, const char *source)
{
  char *mem;
  size_t len;

  DEBUGASSERT(str != NULL);

  if(countcheck("strdup", line, source))
203
204
205
206
207
208
209
210

211
212
213
214
215
216
217
    curl_dbg_log("MEM %s:%d strdup(%p) (%zu) = %p\n",
                 source, line, (const void *)str, len, (const void *)mem);

  return mem;
}

#if defined(WIN32) && defined(UNICODE)
wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line, const char *source)

{
  wchar_t *mem;
  size_t wsiz, bsiz;

  DEBUGASSERT(str != NULL);

  if(countcheck("wcsdup", line, source))







|
>







205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
    curl_dbg_log("MEM %s:%d strdup(%p) (%zu) = %p\n",
                 source, line, (const void *)str, len, (const void *)mem);

  return mem;
}

#if defined(WIN32) && defined(UNICODE)
ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str,
                                    int line, const char *source)
{
  wchar_t *mem;
  size_t wsiz, bsiz;

  DEBUGASSERT(str != NULL);

  if(countcheck("wcsdup", line, source))
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
int curl_dbg_sclose(curl_socket_t sockfd, int line, const char *source)
{
  int res = sclose(sockfd);
  curl_dbg_mark_sclose(sockfd, line, source);
  return res;
}

FILE *curl_dbg_fopen(const char *file, const char *mode,
                    int line, const char *source)
{
  FILE *res = fopen(file, mode);

  if(source)
    curl_dbg_log("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
                source, line, file, mode, (void *)res);

  return res;
}

FILE *curl_dbg_fdopen(int filedes, const char *mode,
                      int line, const char *source)
{
  FILE *res = fdopen(filedes, mode);
  if(source)
    curl_dbg_log("FILE %s:%d fdopen(\"%d\",\"%s\") = %p\n",
                 source, line, filedes, mode, (void *)res);
  return res;
}







|
|










|
|







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
int curl_dbg_sclose(curl_socket_t sockfd, int line, const char *source)
{
  int res = sclose(sockfd);
  curl_dbg_mark_sclose(sockfd, line, source);
  return res;
}

ALLOC_FUNC FILE *curl_dbg_fopen(const char *file, const char *mode,
                                int line, const char *source)
{
  FILE *res = fopen(file, mode);

  if(source)
    curl_dbg_log("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
                source, line, file, mode, (void *)res);

  return res;
}

ALLOC_FUNC FILE *curl_dbg_fdopen(int filedes, const char *mode,
                                 int line, const char *source)
{
  FILE *res = fdopen(filedes, mode);
  if(source)
    curl_dbg_log("FILE %s:%d fdopen(\"%d\",\"%s\") = %p\n",
                 source, line, filedes, mode, (void *)res);
  return res;
}
Changes to jni/curl/lib/memdebug.h.
25
26
27
28
29
30
31














32
33
34
35
36
37
38
39
40


41


42
43
44

45
46

47
48
49
50
51
52
53
54
 *
 ***************************************************************************/

/*
 * CAUTION: this header is designed to work when included by the app-side
 * as well as the library. Do not mix with library internals!
 */















#define CURL_MT_LOGFNAME_BUFSIZE 512

extern FILE *curl_dbg_logfile;

/* memory functions */
CURL_EXTERN void *curl_dbg_malloc(size_t size, int line, const char *source);
CURL_EXTERN void *curl_dbg_calloc(size_t elements, size_t size, int line,
                                  const char *source);


CURL_EXTERN void *curl_dbg_realloc(void *ptr, size_t size, int line,


                                   const char *source);
CURL_EXTERN void curl_dbg_free(void *ptr, int line, const char *source);
CURL_EXTERN char *curl_dbg_strdup(const char *str, int line, const char *src);

#if defined(WIN32) && defined(UNICODE)
CURL_EXTERN wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line,

                                     const char *source);
#endif

CURL_EXTERN void curl_dbg_memdebug(const char *logname);
CURL_EXTERN void curl_dbg_memlimit(long limit);
CURL_EXTERN void curl_dbg_log(const char *format, ...);

/* file descriptor manipulators */







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






|
|
|
>
>
|
>
>
|

|
>

|
>
|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 *
 ***************************************************************************/

/*
 * CAUTION: this header is designed to work when included by the app-side
 * as well as the library. Do not mix with library internals!
 */

#if defined(__GNUC__) && __GNUC__ >= 3
#  define ALLOC_FUNC __attribute__((malloc))
#  define ALLOC_SIZE(s) __attribute__((alloc_size(s)))
#  define ALLOC_SIZE2(n, s) __attribute__((alloc_size(n, s)))
#elif defined(_MSC_VER)
#  define ALLOC_FUNC __declspec(restrict)
#  define ALLOC_SIZE(s)
#  define ALLOC_SIZE2(n, s)
#else
#  define ALLOC_FUNC
#  define ALLOC_SIZE(s)
#  define ALLOC_SIZE2(n, s)
#endif

#define CURL_MT_LOGFNAME_BUFSIZE 512

extern FILE *curl_dbg_logfile;

/* memory functions */
CURL_EXTERN ALLOC_FUNC ALLOC_SIZE(1) void *curl_dbg_malloc(size_t size,
                                                           int line,
                                                           const char *source);
CURL_EXTERN ALLOC_FUNC ALLOC_SIZE2(1, 2) void *curl_dbg_calloc(size_t elements,
                                   size_t size, int line, const char *source);
CURL_EXTERN ALLOC_SIZE(2) void *curl_dbg_realloc(void *ptr,
                                                 size_t size,
                                                 int line,
                                                 const char *source);
CURL_EXTERN void curl_dbg_free(void *ptr, int line, const char *source);
CURL_EXTERN ALLOC_FUNC char *curl_dbg_strdup(const char *str, int line,
                                             const char *src);
#if defined(WIN32) && defined(UNICODE)
CURL_EXTERN ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str,
                                                int line,
                                                const char *source);
#endif

CURL_EXTERN void curl_dbg_memdebug(const char *logname);
CURL_EXTERN void curl_dbg_memlimit(long limit);
CURL_EXTERN void curl_dbg_log(const char *format, ...);

/* file descriptor manipulators */
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
CURL_EXTERN RECV_TYPE_RETV curl_dbg_recv(RECV_TYPE_ARG1 sockfd,
                                         RECV_TYPE_ARG2 buf,
                                         RECV_TYPE_ARG3 len,
                                         RECV_TYPE_ARG4 flags, int line,
                                         const char *source);

/* FILE functions */
CURL_EXTERN FILE *curl_dbg_fopen(const char *file, const char *mode, int line,
                                 const char *source);
CURL_EXTERN FILE *curl_dbg_fdopen(int filedes, const char *mode,
                                  int line, const char *source);

CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source);

#ifndef MEMDEBUG_NODEFINES

/* Set this symbol on the command-line, recompile all lib-sources */
#undef strdup







|
|
|
|







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
CURL_EXTERN RECV_TYPE_RETV curl_dbg_recv(RECV_TYPE_ARG1 sockfd,
                                         RECV_TYPE_ARG2 buf,
                                         RECV_TYPE_ARG3 len,
                                         RECV_TYPE_ARG4 flags, int line,
                                         const char *source);

/* FILE functions */
CURL_EXTERN ALLOC_FUNC FILE *curl_dbg_fopen(const char *file, const char *mode,
                                  int line, const char *source);
CURL_EXTERN ALLOC_FUNC FILE *curl_dbg_fdopen(int filedes, const char *mode,
                                             int line, const char *source);

CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source);

#ifndef MEMDEBUG_NODEFINES

/* Set this symbol on the command-line, recompile all lib-sources */
#undef strdup
Changes to jni/curl/lib/mprintf.c.
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
  /* 'workend' points to the final buffer byte position, but with an extra
     byte as margin to avoid the (false?) warning Coverity gives us
     otherwise */
  char *workend = &work[sizeof(work) - 2];

  /* Do the actual %-code parsing */
  if(dprintf_Pass1(format, vto, endpos, ap_save))
    return -1;

  end = &endpos[0]; /* the initial end-position from the list dprintf_Pass1()
                       created for us */

  f = (char *)format;
  while(*f != '\0') {
    /* Format spec modifiers.  */







|







590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
  /* 'workend' points to the final buffer byte position, but with an extra
     byte as margin to avoid the (false?) warning Coverity gives us
     otherwise */
  char *workend = &work[sizeof(work) - 2];

  /* Do the actual %-code parsing */
  if(dprintf_Pass1(format, vto, endpos, ap_save))
    return 0;

  end = &endpos[0]; /* the initial end-position from the list dprintf_Pass1()
                       created for us */

  f = (char *)format;
  while(*f != '\0') {
    /* Format spec modifiers.  */
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032

1033
1034
1035
1036
1037
1038
1039
  struct nsprintf info;

  info.buffer = buffer;
  info.length = 0;
  info.max = maxlength;

  retcode = dprintf_formatf(&info, addbyter, format, ap_save);
  if((retcode != -1) && info.max) {
    /* we terminate this with a zero byte */
    if(info.max == info.length) {
      /* we're at maximum, scrap the last letter */
      info.buffer[-1] = 0;

      retcode--; /* don't count the nul byte */
    }
    else
      info.buffer[0] = 0;
  }
  return retcode;
}







|




>







1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
  struct nsprintf info;

  info.buffer = buffer;
  info.length = 0;
  info.max = maxlength;

  retcode = dprintf_formatf(&info, addbyter, format, ap_save);
  if(info.max) {
    /* we terminate this with a zero byte */
    if(info.max == info.length) {
      /* we're at maximum, scrap the last letter */
      info.buffer[-1] = 0;
      DEBUGASSERT(retcode);
      retcode--; /* don't count the nul byte */
    }
    else
      info.buffer[0] = 0;
  }
  return retcode;
}
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

extern int Curl_dyn_vprintf(struct dynbuf *dyn,
                            const char *format, va_list ap_save);

/* appends the formatted string, returns 0 on success, 1 on error */
int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save)
{
  int retcode;
  struct asprintf info;
  info.b = dyn;
  info.fail = 0;

  retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save);
  if((-1 == retcode) || info.fail) {
    Curl_dyn_free(info.b);
    return 1;
  }
  return 0;
}

char *curl_mvaprintf(const char *format, va_list ap_save)
{
  int retcode;
  struct asprintf info;
  struct dynbuf dyn;
  info.b = &dyn;
  Curl_dyn_init(info.b, DYN_APRINTF);
  info.fail = 0;

  retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save);
  if((-1 == retcode) || info.fail) {
    Curl_dyn_free(info.b);
    return NULL;
  }
  if(Curl_dyn_len(info.b))
    return Curl_dyn_ptr(info.b);
  return strdup("");
}







<




|
|








<






|
|







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

extern int Curl_dyn_vprintf(struct dynbuf *dyn,
                            const char *format, va_list ap_save);

/* appends the formatted string, returns 0 on success, 1 on error */
int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save)
{

  struct asprintf info;
  info.b = dyn;
  info.fail = 0;

  (void)dprintf_formatf(&info, alloc_addbyter, format, ap_save);
  if(info.fail) {
    Curl_dyn_free(info.b);
    return 1;
  }
  return 0;
}

char *curl_mvaprintf(const char *format, va_list ap_save)
{

  struct asprintf info;
  struct dynbuf dyn;
  info.b = &dyn;
  Curl_dyn_init(info.b, DYN_APRINTF);
  info.fail = 0;

  (void)dprintf_formatf(&info, alloc_addbyter, format, ap_save);
  if(info.fail) {
    Curl_dyn_free(info.b);
    return NULL;
  }
  if(Curl_dyn_len(info.b))
    return Curl_dyn_ptr(info.b);
  return strdup("");
}
Changes to jni/curl/lib/multi.c.
51
52
53
54
55
56
57
















58
59
60
61
62
63
64
65
66
67
68
69




70
71
72
73
74
75
76
#include "socketpair.h"
#include "socks.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

















/*
  CURL_SOCKET_HASH_TABLE_SIZE should be a prime number. Increasing it from 97
  to 911 takes on a 32-bit machine 4 x 804 = 3211 more bytes.  Still, every
  CURL handle takes 45-50 K memory, therefore this 3K are not significant.
*/
#ifndef CURL_SOCKET_HASH_TABLE_SIZE
#define CURL_SOCKET_HASH_TABLE_SIZE 911
#endif

#ifndef CURL_CONNECTION_HASH_SIZE
#define CURL_CONNECTION_HASH_SIZE 97
#endif





#define CURL_MULTI_HANDLE 0x000bab1e

#define GOOD_MULTI_HANDLE(x) \
  ((x) && (x)->magic == CURL_MULTI_HANDLE)

static CURLMcode singlesocket(struct Curl_multi *multi,







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












>
>
>
>







51
52
53
54
55
56
57
58
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
#include "socketpair.h"
#include "socks.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#ifdef __APPLE__

#define wakeup_write  write
#define wakeup_read   read
#define wakeup_close  close
#define wakeup_create pipe

#else /* __APPLE__ */

#define wakeup_write     swrite
#define wakeup_read      sread
#define wakeup_close     sclose
#define wakeup_create(p) Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, p)

#endif /* __APPLE__ */

/*
  CURL_SOCKET_HASH_TABLE_SIZE should be a prime number. Increasing it from 97
  to 911 takes on a 32-bit machine 4 x 804 = 3211 more bytes.  Still, every
  CURL handle takes 45-50 K memory, therefore this 3K are not significant.
*/
#ifndef CURL_SOCKET_HASH_TABLE_SIZE
#define CURL_SOCKET_HASH_TABLE_SIZE 911
#endif

#ifndef CURL_CONNECTION_HASH_SIZE
#define CURL_CONNECTION_HASH_SIZE 97
#endif

#ifndef CURL_DNS_HASH_SIZE
#define CURL_DNS_HASH_SIZE 71
#endif

#define CURL_MULTI_HANDLE 0x000bab1e

#define GOOD_MULTI_HANDLE(x) \
  ((x) && (x)->magic == CURL_MULTI_HANDLE)

static CURLMcode singlesocket(struct Curl_multi *multi,
368
369
370
371
372
373
374
375

376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
{
  Curl_llist_insert_next(&multi->msglist, multi->msglist.tail, msg,
                         &msg->list);
  return CURLM_OK;
}

struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
                                     int chashsize) /* connection hash */

{
  struct Curl_multi *multi = calloc(1, sizeof(struct Curl_multi));

  if(!multi)
    return NULL;

  multi->magic = CURL_MULTI_HANDLE;

  Curl_init_dnscache(&multi->hostcache);

  sh_init(&multi->sockhash, hashsize);

  if(Curl_conncache_init(&multi->conn_cache, chashsize))
    goto error;

  Curl_llist_init(&multi->msglist, NULL);







|
>








|







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
{
  Curl_llist_insert_next(&multi->msglist, multi->msglist.tail, msg,
                         &msg->list);
  return CURLM_OK;
}

struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
                                     int chashsize, /* connection hash */
                                     int dnssize) /* dns hash */
{
  struct Curl_multi *multi = calloc(1, sizeof(struct Curl_multi));

  if(!multi)
    return NULL;

  multi->magic = CURL_MULTI_HANDLE;

  Curl_init_dnscache(&multi->hostcache, dnssize);

  sh_init(&multi->sockhash, hashsize);

  if(Curl_conncache_init(&multi->conn_cache, chashsize))
    goto error;

  Curl_llist_init(&multi->msglist, NULL);
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421

#ifdef USE_WINSOCK
  multi->wsa_event = WSACreateEvent();
  if(multi->wsa_event == WSA_INVALID_EVENT)
    goto error;
#else
#ifdef ENABLE_WAKEUP
  if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, multi->wakeup_pair) < 0) {
    multi->wakeup_pair[0] = CURL_SOCKET_BAD;
    multi->wakeup_pair[1] = CURL_SOCKET_BAD;
  }
  else if(curlx_nonblock(multi->wakeup_pair[0], TRUE) < 0 ||
          curlx_nonblock(multi->wakeup_pair[1], TRUE) < 0) {
    sclose(multi->wakeup_pair[0]);
    sclose(multi->wakeup_pair[1]);
    multi->wakeup_pair[0] = CURL_SOCKET_BAD;
    multi->wakeup_pair[1] = CURL_SOCKET_BAD;
  }
#endif
#endif

  return multi;







|





|
|







421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442

#ifdef USE_WINSOCK
  multi->wsa_event = WSACreateEvent();
  if(multi->wsa_event == WSA_INVALID_EVENT)
    goto error;
#else
#ifdef ENABLE_WAKEUP
  if(wakeup_create(multi->wakeup_pair) < 0) {
    multi->wakeup_pair[0] = CURL_SOCKET_BAD;
    multi->wakeup_pair[1] = CURL_SOCKET_BAD;
  }
  else if(curlx_nonblock(multi->wakeup_pair[0], TRUE) < 0 ||
          curlx_nonblock(multi->wakeup_pair[1], TRUE) < 0) {
    wakeup_close(multi->wakeup_pair[0]);
    wakeup_close(multi->wakeup_pair[1]);
    multi->wakeup_pair[0] = CURL_SOCKET_BAD;
    multi->wakeup_pair[1] = CURL_SOCKET_BAD;
  }
#endif
#endif

  return multi;
431
432
433
434
435
436
437
438

439
440
441
442
443
444
445
  free(multi);
  return NULL;
}

struct Curl_multi *curl_multi_init(void)
{
  return Curl_multi_handle(CURL_SOCKET_HASH_TABLE_SIZE,
                           CURL_CONNECTION_HASH_SIZE);

}

CURLMcode curl_multi_add_handle(struct Curl_multi *multi,
                                struct Curl_easy *data)
{
  CURLMcode rc;
  /* First, make some basic checks that the CURLM handle is a good handle */







|
>







452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
  free(multi);
  return NULL;
}

struct Curl_multi *curl_multi_init(void)
{
  return Curl_multi_handle(CURL_SOCKET_HASH_TABLE_SIZE,
                           CURL_CONNECTION_HASH_SIZE,
                           CURL_DNS_HASH_SIZE);
}

CURLMcode curl_multi_add_handle(struct Curl_multi *multi,
                                struct Curl_easy *data)
{
  CURLMcode rc;
  /* First, make some basic checks that the CURLM handle is a good handle */
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
    result = conn->handler->done(data, status, premature);
  else
    result = status;

  if(CURLE_ABORTED_BY_CALLBACK != result) {
    /* avoid this if we already aborted by callback to avoid this calling
       another callback */
    CURLcode rc = Curl_pgrsDone(data);
    if(!result && rc)
      result = CURLE_ABORTED_BY_CALLBACK;
  }

  process_pending_handles(data->multi); /* connection / multiplex */

  CONNCACHE_LOCK(data);







|







647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
    result = conn->handler->done(data, status, premature);
  else
    result = status;

  if(CURLE_ABORTED_BY_CALLBACK != result) {
    /* avoid this if we already aborted by callback to avoid this calling
       another callback */
    int rc = Curl_pgrsDone(data);
    if(!result && rc)
      result = CURLE_ABORTED_BY_CALLBACK;
  }

  process_pending_handles(data->multi); /* connection / multiplex */

  CONNCACHE_LOCK(data);
823
824
825
826
827
828
829


















830
831
832
833
834
835
836
  /* This ignores the return code even in case of problems because there's
     nothing more to do about that, here */
  (void)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_connection(data);



















  if(data->state.lastconnect_id != -1) {
    /* Mark any connect-only connection for closure */
    Curl_conncache_foreach(data, data->state.conn_cache,
                           NULL, close_connect_only);
  }








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







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
  /* This ignores the return code even in case of problems because there's
     nothing more to do about that, here */
  (void)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_connection(data);

  if(data->set.connect_only && !data->multi_easy) {
    /* This removes a handle that was part the multi inteface that used
       CONNECT_ONLY, that connection is now left alive but since this handle
       has bits.close set nothing can use that transfer anymore and it is
       forbidden from reuse. And this easy handle cannot find the connection
       anymore once removed from the multi handle

       Better close the connection here, at once.
    */
    struct connectdata *c;
    curl_socket_t s;
    s = Curl_getconnectinfo(data, &c);
    if((s != CURL_SOCKET_BAD) && c) {
      Curl_conncache_remove_conn(data, c, TRUE);
      Curl_disconnect(data, c, TRUE);
    }
  }

  if(data->state.lastconnect_id != -1) {
    /* Mark any connect-only connection for closure */
    Curl_conncache_foreach(data, data->state.conn_cache,
                           NULL, close_connect_only);
  }

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
#endif
    int pollrc;
#ifdef USE_WINSOCK
    if(nfds)
      pollrc = Curl_poll(ufds, nfds, 0); /* just pre-check with WinSock */
    else
      pollrc = 0;
    if(pollrc <= 0) /* now wait... if not ready during the pre-check above */
      WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, timeout_ms, FALSE);
#else
    pollrc = Curl_poll(ufds, nfds, timeout_ms); /* wait... */
#endif
    if(pollrc < 0)
      return CURLM_UNRECOVERABLE_POLL;

    if(pollrc > 0) {
      retcode = pollrc;
#ifdef USE_WINSOCK
    }



    /* With WinSock, we have to run the following section unconditionally
       to call WSAEventSelect(fd, event, 0) on all the sockets */
    {
#endif
      /* copy revents results from the poll to the curl_multi_wait poll
         struct, the bit values of the actual underlying poll() implementation
         may not be the same as the ones in the public libcurl API! */
      for(i = 0; i < extra_nfds; i++) {
        unsigned r = ufds[curlfds + i].revents;
        unsigned short mask = 0;
#ifdef USE_WINSOCK

        wsa_events.lNetworkEvents = 0;
        if(WSAEnumNetworkEvents(extra_fds[i].fd, NULL, &wsa_events) == 0) {
          if(wsa_events.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE))
            mask |= CURL_WAIT_POLLIN;
          if(wsa_events.lNetworkEvents & (FD_WRITE|FD_CONNECT|FD_CLOSE))
            mask |= CURL_WAIT_POLLOUT;
          if(wsa_events.lNetworkEvents & FD_OOB)
            mask |= CURL_WAIT_POLLPRI;
          if(ret && pollrc <= 0 && wsa_events.lNetworkEvents)
            retcode++;
        }
        WSAEventSelect(extra_fds[i].fd, multi->wsa_event, 0);
        if(pollrc <= 0)

          continue;

#endif
        if(r & POLLIN)
          mask |= CURL_WAIT_POLLIN;
        if(r & POLLOUT)
          mask |= CURL_WAIT_POLLOUT;
        if(r & POLLPRI)
          mask |= CURL_WAIT_POLLPRI;







<
<










>
>
>











>

|






|


|
|
>

>







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
#endif
    int pollrc;
#ifdef USE_WINSOCK
    if(nfds)
      pollrc = Curl_poll(ufds, nfds, 0); /* just pre-check with WinSock */
    else
      pollrc = 0;


#else
    pollrc = Curl_poll(ufds, nfds, timeout_ms); /* wait... */
#endif
    if(pollrc < 0)
      return CURLM_UNRECOVERABLE_POLL;

    if(pollrc > 0) {
      retcode = pollrc;
#ifdef USE_WINSOCK
    }
    else { /* now wait... if not ready during the pre-check (pollrc == 0) */
      WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, timeout_ms, FALSE);
    }
    /* With WinSock, we have to run the following section unconditionally
       to call WSAEventSelect(fd, event, 0) on all the sockets */
    {
#endif
      /* copy revents results from the poll to the curl_multi_wait poll
         struct, the bit values of the actual underlying poll() implementation
         may not be the same as the ones in the public libcurl API! */
      for(i = 0; i < extra_nfds; i++) {
        unsigned r = ufds[curlfds + i].revents;
        unsigned short mask = 0;
#ifdef USE_WINSOCK
        curl_socket_t s = extra_fds[i].fd;
        wsa_events.lNetworkEvents = 0;
        if(WSAEnumNetworkEvents(s, NULL, &wsa_events) == 0) {
          if(wsa_events.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE))
            mask |= CURL_WAIT_POLLIN;
          if(wsa_events.lNetworkEvents & (FD_WRITE|FD_CONNECT|FD_CLOSE))
            mask |= CURL_WAIT_POLLOUT;
          if(wsa_events.lNetworkEvents & FD_OOB)
            mask |= CURL_WAIT_POLLPRI;
          if(ret && !pollrc && wsa_events.lNetworkEvents)
            retcode++;
        }
        WSAEventSelect(s, multi->wsa_event, 0);
        if(!pollrc) {
          extra_fds[i].revents = mask;
          continue;
        }
#endif
        if(r & POLLIN)
          mask |= CURL_WAIT_POLLIN;
        if(r & POLLOUT)
          mask |= CURL_WAIT_POLLOUT;
        if(r & POLLPRI)
          mask |= CURL_WAIT_POLLPRI;
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
        while(data) {
          bitmap = multi_getsock(data, sockbunch);

          for(i = 0; i < MAX_SOCKSPEREASYHANDLE; i++) {
            if(bitmap & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i))) {
              wsa_events.lNetworkEvents = 0;
              if(WSAEnumNetworkEvents(sockbunch[i], NULL, &wsa_events) == 0) {
                if(ret && pollrc <= 0 && wsa_events.lNetworkEvents)
                  retcode++;
              }
              WSAEventSelect(sockbunch[i], multi->wsa_event, 0);
            }
            else {
              /* break on entry not checked for being readable or writable */
              break;







|







1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
        while(data) {
          bitmap = multi_getsock(data, sockbunch);

          for(i = 0; i < MAX_SOCKSPEREASYHANDLE; i++) {
            if(bitmap & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i))) {
              wsa_events.lNetworkEvents = 0;
              if(WSAEnumNetworkEvents(sockbunch[i], NULL, &wsa_events) == 0) {
                if(ret && !pollrc && wsa_events.lNetworkEvents)
                  retcode++;
              }
              WSAEventSelect(sockbunch[i], multi->wsa_event, 0);
            }
            else {
              /* break on entry not checked for being readable or writable */
              break;
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
          char buf[64];
          ssize_t nread;
          while(1) {
            /* the reading socket is non-blocking, try to read
               data from it until it receives an error (except EINTR).
               In normal cases it will get EAGAIN or EWOULDBLOCK
               when there is no more data, breaking the loop. */
            nread = sread(multi->wakeup_pair[0], buf, sizeof(buf));
            if(nread <= 0) {
              if(nread < 0 && EINTR == SOCKERRNO)
                continue;
              break;
            }
          }
          /* do not count the wakeup socket into the returned value */







|







1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
          char buf[64];
          ssize_t nread;
          while(1) {
            /* the reading socket is non-blocking, try to read
               data from it until it receives an error (except EINTR).
               In normal cases it will get EAGAIN or EWOULDBLOCK
               when there is no more data, breaking the loop. */
            nread = wakeup_read(multi->wakeup_pair[0], buf, sizeof(buf));
            if(nread <= 0) {
              if(nread < 0 && EINTR == SOCKERRNO)
                continue;
              break;
            }
          }
          /* do not count the wakeup socket into the returned value */
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
         of the messages does not matter, which makes it ok to call.

         The write socket is set to non-blocking, this way this function
         cannot block, making it safe to call even from the same thread
         that will call curl_multi_wait(). If swrite() returns that it
         would block, it's considered successful because it means that
         previous calls to this function will wake up the poll(). */
      if(swrite(multi->wakeup_pair[1], buf, sizeof(buf)) < 0) {
        int err = SOCKERRNO;
        int return_success;
#ifdef USE_WINSOCK
        return_success = WSAEWOULDBLOCK == err;
#else
        if(EINTR == err)
          continue;







|







1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
         of the messages does not matter, which makes it ok to call.

         The write socket is set to non-blocking, this way this function
         cannot block, making it safe to call even from the same thread
         that will call curl_multi_wait(). If swrite() returns that it
         would block, it's considered successful because it means that
         previous calls to this function will wake up the poll(). */
      if(wakeup_write(multi->wakeup_pair[1], buf, sizeof(buf)) < 0) {
        int err = SOCKERRNO;
        int return_success;
#ifdef USE_WINSOCK
        return_success = WSAEWOULDBLOCK == err;
#else
        if(EINTR == err)
          continue;
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
    Curl_hash_destroy(&multi->hostcache);
    Curl_psl_destroy(&multi->psl);

#ifdef USE_WINSOCK
    WSACloseEvent(multi->wsa_event);
#else
#ifdef ENABLE_WAKEUP
    sclose(multi->wakeup_pair[0]);
    sclose(multi->wakeup_pair[1]);
#endif
#endif
    free(multi);

    return CURLM_OK;
  }
  return CURLM_BAD_HANDLE;







|
|







2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
    Curl_hash_destroy(&multi->hostcache);
    Curl_psl_destroy(&multi->psl);

#ifdef USE_WINSOCK
    WSACloseEvent(multi->wsa_event);
#else
#ifdef ENABLE_WAKEUP
    wakeup_close(multi->wakeup_pair[0]);
    wakeup_close(multi->wakeup_pair[1]);
#endif
#endif
    free(multi);

    return CURLM_OK;
  }
  return CURLM_BAD_HANDLE;
Changes to jni/curl/lib/multiif.h.
38
39
40
41
42
43
44
45
46

47
48
49
50
51
52
53
void Curl_detach_connection(struct Curl_easy *data);
bool Curl_multiplex_wanted(const struct Curl_multi *multi);
void Curl_set_in_callback(struct Curl_easy *data, bool value);
bool Curl_is_in_callback(struct Curl_easy *easy);
CURLcode Curl_preconnect(struct Curl_easy *data);

/* Internal version of curl_multi_init() accepts size parameters for the
   socket and connection hashes */
struct Curl_multi *Curl_multi_handle(int hashsize, int chashsize);


/* the write bits start at bit 16 for the *getsock() bitmap */
#define GETSOCK_WRITEBITSTART 16

#define GETSOCK_BLANK 0 /* no bits set */

/* set the bit for the given sock number to make the bitmap for writable */







|
|
>







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
void Curl_detach_connection(struct Curl_easy *data);
bool Curl_multiplex_wanted(const struct Curl_multi *multi);
void Curl_set_in_callback(struct Curl_easy *data, bool value);
bool Curl_is_in_callback(struct Curl_easy *easy);
CURLcode Curl_preconnect(struct Curl_easy *data);

/* Internal version of curl_multi_init() accepts size parameters for the
   socket, connection and dns hashes */
struct Curl_multi *Curl_multi_handle(int hashsize, int chashsize,
                                     int dnssize);

/* the write bits start at bit 16 for the *getsock() bitmap */
#define GETSOCK_WRITEBITSTART 16

#define GETSOCK_BLANK 0 /* no bits set */

/* set the bit for the given sock number to make the bitmap for writable */
Changes to jni/curl/lib/netrc.c.
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  bool specific_login = (login && *login != 0);
  bool login_alloc = FALSE;
  bool password_alloc = FALSE;
  enum host_lookup_state state = NOTHING;

  char state_login = 0;      /* Found a login keyword */
  char state_password = 0;   /* Found a password keyword */
  int state_our_login = FALSE;  /* With specific_login, found *our* login
                                   name */

  DEBUGASSERT(netrcfile);

  file = fopen(netrcfile, FOPEN_READTEXT);
  if(file) {
    bool done = FALSE;
    char netrcbuffer[4096];







|
|







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  bool specific_login = (login && *login != 0);
  bool login_alloc = FALSE;
  bool password_alloc = FALSE;
  enum host_lookup_state state = NOTHING;

  char state_login = 0;      /* Found a login keyword */
  char state_password = 0;   /* Found a password keyword */
  int state_our_login = TRUE;  /* With specific_login, found *our* login
                                  name (or login-less line) */

  DEBUGASSERT(netrcfile);

  file = fopen(netrcfile, FOPEN_READTEXT);
  if(file) {
    bool done = FALSE;
    char netrcbuffer[4096];
Changes to jni/curl/lib/pingpong.c.
394
395
396
397
398
399
400
401

402
403
404
405
406
407
408
        restart = TRUE;
        DEBUGF(infof(data, "Curl_pp_readresp_ %d bytes of trailing "
                     "server response left",
                     (int)clipamount));
      }
      else if(keepon) {

        if((perline == gotbytes) && (gotbytes > data->set.buffer_size/2)) {

          /* We got an excessive line without newlines and we need to deal
             with it. We keep the first bytes of the line then we throw
             away the rest. */
          infof(data, "Excessive server response line length received, "
                "%zd bytes. Stripping", gotbytes);
          restart = TRUE;








|
>







394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
        restart = TRUE;
        DEBUGF(infof(data, "Curl_pp_readresp_ %d bytes of trailing "
                     "server response left",
                     (int)clipamount));
      }
      else if(keepon) {

        if((perline == gotbytes) &&
           (gotbytes > (ssize_t)data->set.buffer_size/2)) {
          /* We got an excessive line without newlines and we need to deal
             with it. We keep the first bytes of the line then we throw
             away the rest. */
          infof(data, "Excessive server response line length received, "
                "%zd bytes. Stripping", gotbytes);
          restart = TRUE;

Changes to jni/curl/lib/select.c.
306
307
308
309
310
311
312
313



314

315
316
317
318
319
320
321
  if(timeout_ms > 0)
    pending_ms = (int)timeout_ms;
  else if(timeout_ms < 0)
    pending_ms = -1;
  else
    pending_ms = 0;
  r = poll(ufds, nfds, pending_ms);
  if(r <= 0)



    return r;


  for(i = 0; i < nfds; i++) {
    if(ufds[i].fd == CURL_SOCKET_BAD)
      continue;
    if(ufds[i].revents & POLLHUP)
      ufds[i].revents |= POLLIN;
    if(ufds[i].revents & POLLERR)







|
>
>
>

>







306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
  if(timeout_ms > 0)
    pending_ms = (int)timeout_ms;
  else if(timeout_ms < 0)
    pending_ms = -1;
  else
    pending_ms = 0;
  r = poll(ufds, nfds, pending_ms);
  if(r <= 0) {
    if((r == -1) && (SOCKERRNO == EINTR))
      /* make EINTR from select or poll not a "lethal" error */
      r = 0;
    return r;
  }

  for(i = 0; i < nfds; i++) {
    if(ufds[i].fd == CURL_SOCKET_BAD)
      continue;
    if(ufds[i].revents & POLLHUP)
      ufds[i].revents |= POLLIN;
    if(ufds[i].revents & POLLERR)
Changes to jni/curl/lib/sendf.c.
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
#define MAXINFO 2048

void Curl_infof(struct Curl_easy *data, const char *fmt, ...)
{
  DEBUGASSERT(!strchr(fmt, '\n'));
  if(data && data->set.verbose) {
    va_list ap;
    size_t len;
    char buffer[MAXINFO + 2];
    va_start(ap, fmt);
    len = mvsnprintf(buffer, MAXINFO, fmt, ap);
    va_end(ap);
    buffer[len++] = '\n';
    buffer[len] = '\0';
    Curl_debug(data, CURLINFO_TEXT, buffer, len);
  }
}

/* Curl_failf() is for messages stating why we failed.
 * The message SHALL NOT include any LF or CR.
 */

void Curl_failf(struct Curl_easy *data, const char *fmt, ...)
{
  DEBUGASSERT(!strchr(fmt, '\n'));
  if(data->set.verbose || data->set.errorbuffer) {
    va_list ap;
    size_t len;
    char error[CURL_ERROR_SIZE + 2];
    va_start(ap, fmt);
    len = mvsnprintf(error, CURL_ERROR_SIZE, fmt, ap);

    if(data->set.errorbuffer && !data->state.errorbuf) {
      strcpy(data->set.errorbuffer, error);
      data->state.errorbuf = TRUE; /* wrote error string */







|



















|







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
#define MAXINFO 2048

void Curl_infof(struct Curl_easy *data, const char *fmt, ...)
{
  DEBUGASSERT(!strchr(fmt, '\n'));
  if(data && data->set.verbose) {
    va_list ap;
    int len;
    char buffer[MAXINFO + 2];
    va_start(ap, fmt);
    len = mvsnprintf(buffer, MAXINFO, fmt, ap);
    va_end(ap);
    buffer[len++] = '\n';
    buffer[len] = '\0';
    Curl_debug(data, CURLINFO_TEXT, buffer, len);
  }
}

/* Curl_failf() is for messages stating why we failed.
 * The message SHALL NOT include any LF or CR.
 */

void Curl_failf(struct Curl_easy *data, const char *fmt, ...)
{
  DEBUGASSERT(!strchr(fmt, '\n'));
  if(data->set.verbose || data->set.errorbuffer) {
    va_list ap;
    int len;
    char error[CURL_ERROR_SIZE + 2];
    va_start(ap, fmt);
    len = mvsnprintf(error, CURL_ERROR_SIZE, fmt, ap);

    if(data->set.errorbuffer && !data->state.errorbuf) {
      strcpy(data->set.errorbuffer, error);
      data->state.errorbuf = TRUE; /* wrote error string */
492
493
494
495
496
497
498



499
500
501
502
503
504
505
      if(s->tempwrite[i].type == type) {
        /* data for this type exists */
        newtype = FALSE;
        break;
      }
    }
    DEBUGASSERT(i < 3);



  }
  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);







>
>
>







492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
      if(s->tempwrite[i].type == type) {
        /* data for this type exists */
        newtype = FALSE;
        break;
      }
    }
    DEBUGASSERT(i < 3);
    if(i >= 3)
      /* There are more types to store than what fits: very bad */
      return CURLE_OUT_OF_MEMORY;
  }
  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);
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
      }
    }

    ptr += chunklen;
    len -= chunklen;
  }


  /* HTTP header, but not status-line */
  if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
     (type & CLIENTWRITE_HEADER) && !(type & CLIENTWRITE_STATUS) ) {
    CURLcode result =
      Curl_headers_push(data, optr,
                        type & CLIENTWRITE_CONNECT ? CURLH_CONNECT :
                        (type & CLIENTWRITE_1XX ? CURLH_1XX :
                         (type & CLIENTWRITE_TRAILER ? CURLH_TRAILER :
                          CURLH_HEADER)));

    if(result)
      return result;
  }


  if(writeheader) {
    size_t wrote;

    Curl_set_in_callback(data, true);
    wrote = writeheader(optr, 1, olen, data->set.writeheader);
    Curl_set_in_callback(data, false);

    if(CURL_WRITEFUNC_PAUSE == wrote)
      /* here we pass in the HEADER bit only since if this was body as well
         then it was passed already and clearly that didn't trigger the
         pause, so this is saved for later with the HEADER bit only */
      return pausewrite(data, CLIENTWRITE_HEADER, optr, olen);



    if(wrote != olen) {
      failf(data, "Failed writing header");
      return CURLE_WRITE_ERROR;
    }
  }

  return CURLE_OK;







>



|
<
|
|
|
|
>



>












|
|
>
>







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
      }
    }

    ptr += chunklen;
    len -= chunklen;
  }

#ifndef CURL_DISABLE_HTTP
  /* HTTP header, but not status-line */
  if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
     (type & CLIENTWRITE_HEADER) && !(type & CLIENTWRITE_STATUS) ) {
    unsigned char htype = (unsigned char)

      (type & CLIENTWRITE_CONNECT ? CURLH_CONNECT :
       (type & CLIENTWRITE_1XX ? CURLH_1XX :
        (type & CLIENTWRITE_TRAILER ? CURLH_TRAILER :
         CURLH_HEADER)));
    CURLcode result = Curl_headers_push(data, optr, htype);
    if(result)
      return result;
  }
#endif

  if(writeheader) {
    size_t wrote;

    Curl_set_in_callback(data, true);
    wrote = writeheader(optr, 1, olen, data->set.writeheader);
    Curl_set_in_callback(data, false);

    if(CURL_WRITEFUNC_PAUSE == wrote)
      /* here we pass in the HEADER bit only since if this was body as well
         then it was passed already and clearly that didn't trigger the
         pause, so this is saved for later with the HEADER bit only */
      return pausewrite(data, CLIENTWRITE_HEADER |
                        (type & (CLIENTWRITE_STATUS|CLIENTWRITE_CONNECT|
                                 CLIENTWRITE_1XX|CLIENTWRITE_TRAILER)),
                        optr, olen);
    if(wrote != olen) {
      failf(data, "Failed writing header");
      return CURLE_WRITE_ERROR;
    }
  }

  return CURLE_OK;
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

  *n += nread;

  return CURLE_OK;
}

/* return 0 on success */
int Curl_debug(struct Curl_easy *data, curl_infotype type,
               char *ptr, size_t size)
{
  int rc = 0;
  if(data->set.verbose) {
    static const char s_infotype[CURLINFO_END][3] = {
      "* ", "< ", "> ", "{ ", "} ", "{ ", "} " };
    if(data->set.fdebug) {
      Curl_set_in_callback(data, true);
      rc = (*data->set.fdebug)(data, type, ptr, size, data->set.debugdata);
      Curl_set_in_callback(data, false);
    }
    else {
      switch(type) {
      case CURLINFO_TEXT:
      case CURLINFO_HEADER_OUT:
      case CURLINFO_HEADER_IN:
        fwrite(s_infotype[type], 2, 1, data->set.err);
        fwrite(ptr, size, 1, data->set.err);
        break;
      default: /* nada */
        break;
      }
    }
  }
  return 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

  *n += nread;

  return CURLE_OK;
}

/* return 0 on success */
void Curl_debug(struct Curl_easy *data, curl_infotype type,
                char *ptr, size_t size)
{

  if(data->set.verbose) {
    static const char s_infotype[CURLINFO_END][3] = {
      "* ", "< ", "> ", "{ ", "} ", "{ ", "} " };
    if(data->set.fdebug) {
      Curl_set_in_callback(data, true);
      (void)(*data->set.fdebug)(data, type, ptr, size, data->set.debugdata);
      Curl_set_in_callback(data, false);
    }
    else {
      switch(type) {
      case CURLINFO_TEXT:
      case CURLINFO_HEADER_OUT:
      case CURLINFO_HEADER_IN:
        fwrite(s_infotype[type], 2, 1, data->set.err);
        fwrite(ptr, size, 1, data->set.err);
        break;
      default: /* nada */
        break;
      }
    }
  }

}
Changes to jni/curl/lib/sendf.h.
85
86
87
88
89
90
91
92
93
94
95
96
/* internal write-function, does plain sockets ONLY */
CURLcode Curl_write_plain(struct Curl_easy *data,
                          curl_socket_t sockfd,
                          const void *mem, size_t len,
                          ssize_t *written);

/* the function used to output verbose information */
int Curl_debug(struct Curl_easy *data, curl_infotype type,
               char *ptr, size_t size);


#endif /* HEADER_CURL_SENDF_H */







|
|



85
86
87
88
89
90
91
92
93
94
95
96
/* internal write-function, does plain sockets ONLY */
CURLcode Curl_write_plain(struct Curl_easy *data,
                          curl_socket_t sockfd,
                          const void *mem, size_t len,
                          ssize_t *written);

/* the function used to output verbose information */
void Curl_debug(struct Curl_easy *data, curl_infotype type,
                char *ptr, size_t size);


#endif /* HEADER_CURL_SENDF_H */
Changes to jni/curl/lib/setopt.c.
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
  }

  return result;
}

#define C_SSLVERSION_VALUE(x) (x & 0xffff)
#define C_SSLVERSION_MAX_VALUE(x) (x & 0xffff0000)
















































































/*
 * Do not make Curl_vsetopt() static: it is called from
 * packages/OS400/ccsidcurl.c.
 */
CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
{
  char *argptr;
  CURLcode result = CURLE_OK;
  long arg;
#ifdef ENABLE_IPV6
  unsigned long uarg;
#endif
  curl_off_t bigsize;

  switch(option) {
  case CURLOPT_DNS_CACHE_TIMEOUT:
    arg = va_arg(param, long);
    if(arg < -1)
      return CURLE_BAD_FUNCTION_ARGUMENT;



    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],








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









<

<







>
>
>
|







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
  }

  return result;
}

#define C_SSLVERSION_VALUE(x) (x & 0xffff)
#define C_SSLVERSION_MAX_VALUE(x) (x & 0xffff0000)

static CURLcode protocol2num(char *str, curl_off_t *val)
{
  bool found_comma = FALSE;
  static struct scheme {
    const char *name;
    long bit;
  } const protos[] = {
    { "dict", CURLPROTO_DICT },
    { "file", CURLPROTO_FILE },
    { "ftp", CURLPROTO_FTP },
    { "ftps", CURLPROTO_FTPS },
    { "gopher", CURLPROTO_GOPHER },
    { "gophers", CURLPROTO_GOPHERS },
    { "http", CURLPROTO_HTTP },
    { "https", CURLPROTO_HTTPS },
    { "imap", CURLPROTO_IMAP },
    { "imaps", CURLPROTO_IMAPS },
    { "ldap", CURLPROTO_LDAP },
    { "ldaps", CURLPROTO_LDAPS },
    { "mqtt", CURLPROTO_MQTT },
    { "pop3", CURLPROTO_POP3 },
    { "pop3s", CURLPROTO_POP3S },
    { "rtmp", CURLPROTO_RTMP },
    { "rtmpe", CURLPROTO_RTMPE },
    { "rtmps", CURLPROTO_RTMPS },
    { "rtmpt", CURLPROTO_RTMPT },
    { "rtmpte", CURLPROTO_RTMPTE },
    { "rtmpts", CURLPROTO_RTMPTS },
    { "rtsp", CURLPROTO_RTSP },
    { "scp", CURLPROTO_SCP },
    { "sftp", CURLPROTO_SFTP },
    { "smb", CURLPROTO_SMB },
    { "smbs", CURLPROTO_SMBS },
    { "smtp", CURLPROTO_SMTP },
    { "smtps", CURLPROTO_SMTPS },
    { "telnet", CURLPROTO_TELNET },
    { "tftp", CURLPROTO_TFTP },
    { NULL, 0 }
  };

  if(!str)
    return CURLE_BAD_FUNCTION_ARGUMENT;
  else if(curl_strequal(str, "all")) {
    *val = ~0;
    return CURLE_OK;
  }

  *val = 0;

  do {
    size_t tlen;
    struct scheme const *pp;
    char *token;
    token = strchr(str, ',');
    found_comma = token ? TRUE : FALSE;
    if(!token)
      token = strchr(str, '\0');
    tlen = token - str;
    if(tlen) {
      for(pp = protos; pp->name; pp++) {
        if((strlen(pp->name) == tlen) &&
           curl_strnequal(str, pp->name, tlen)) {
          *val |= pp->bit;
          break;
        }
      }
      if(!(pp->name))
        /* protocol name didn't match */
        return CURLE_BAD_FUNCTION_ARGUMENT;
    }
    if(found_comma)
      str = token + 1;
  } while(found_comma);
  if(!*val)
    /* no matching protocol */
    return CURLE_BAD_FUNCTION_ARGUMENT;
  return CURLE_OK;
}

/*
 * Do not make Curl_vsetopt() static: it is called from
 * packages/OS400/ccsidcurl.c.
 */
CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
{
  char *argptr;
  CURLcode result = CURLE_OK;
  long arg;

  unsigned long uarg;

  curl_off_t bigsize;

  switch(option) {
  case CURLOPT_DNS_CACHE_TIMEOUT:
    arg = va_arg(param, long);
    if(arg < -1)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    else if(arg > INT_MAX)
      arg = INT_MAX;

    data->set.dns_cache_timeout = (int)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],
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
  case CURLOPT_SERVER_RESPONSE_TIMEOUT:
    /*
     * Option that specifies how quickly a server response must be obtained
     * before it is considered failure. For pingpong protocols.
     */
    arg = va_arg(param, long);
    if((arg >= 0) && (arg <= (INT_MAX/1000)))
      data->set.server_response_timeout = arg * 1000;
    else
      return CURLE_BAD_FUNCTION_ARGUMENT;
    break;
#ifndef CURL_DISABLE_TFTP
  case CURLOPT_TFTP_NO_OPTIONS:
    /*
     * Option that prevents libcurl from sending TFTP option requests to the







|







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
  case CURLOPT_SERVER_RESPONSE_TIMEOUT:
    /*
     * Option that specifies how quickly a server response must be obtained
     * before it is considered failure. For pingpong protocols.
     */
    arg = va_arg(param, long);
    if((arg >= 0) && (arg <= (INT_MAX/1000)))
      data->set.server_response_timeout = (unsigned int)arg * 1000;
    else
      return CURLE_BAD_FUNCTION_ARGUMENT;
    break;
#ifndef CURL_DISABLE_TFTP
  case CURLOPT_TFTP_NO_OPTIONS:
    /*
     * Option that prevents libcurl from sending TFTP option requests to the
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
  case CURLOPT_NETRC:
    /*
     * Parse the $HOME/.netrc file
     */
    arg = va_arg(param, long);
    if((arg < CURL_NETRC_IGNORED) || (arg >= CURL_NETRC_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_netrc = (enum CURL_NETRC_OPTION)arg;
    break;
  case CURLOPT_NETRC_FILE:
    /*
     * Use this file instead of the $HOME/.netrc file
     */
    result = Curl_setstropt(&data->set.str[STRING_NETRC_FILE],
                            va_arg(param, char *));







|







420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
  case CURLOPT_NETRC:
    /*
     * Parse the $HOME/.netrc file
     */
    arg = va_arg(param, long);
    if((arg < CURL_NETRC_IGNORED) || (arg >= CURL_NETRC_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_netrc = (unsigned char)arg;
    break;
  case CURLOPT_NETRC_FILE:
    /*
     * Use this file instead of the $HOME/.netrc file
     */
    result = Curl_setstropt(&data->set.str[STRING_NETRC_FILE],
                            va_arg(param, char *));
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
     */
    arg = va_arg(param, long);
    /* reserve other values for future use */
    if((arg < CURLFTP_CREATE_DIR_NONE) ||
       (arg > CURLFTP_CREATE_DIR_RETRY))
      result = CURLE_BAD_FUNCTION_ARGUMENT;
    else
      data->set.ftp_create_missing_dirs = (int)arg;
    break;
  case CURLOPT_READDATA:
    /*
     * FILE pointer to read the file to be uploaded from. Or possibly
     * used as argument to the read callback.
     */
    data->set.in_set = va_arg(param, void *);







|







1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
     */
    arg = va_arg(param, long);
    /* reserve other values for future use */
    if((arg < CURLFTP_CREATE_DIR_NONE) ||
       (arg > CURLFTP_CREATE_DIR_RETRY))
      result = CURLE_BAD_FUNCTION_ARGUMENT;
    else
      data->set.ftp_create_missing_dirs = (unsigned char)arg;
    break;
  case CURLOPT_READDATA:
    /*
     * FILE pointer to read the file to be uploaded from. Or possibly
     * used as argument to the read callback.
     */
    data->set.in_set = va_arg(param, void *);
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
    }
    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))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_port = arg;
    break;
  case CURLOPT_TIMEOUT:
    /*
     * The maximum time you allow curl to use for a single transfer
     * operation.
     */
    arg = va_arg(param, long);
    if((arg >= 0) && (arg <= (INT_MAX/1000)))
      data->set.timeout = arg * 1000;
    else
      return CURLE_BAD_FUNCTION_ARGUMENT;
    break;

  case CURLOPT_TIMEOUT_MS:
    arg = va_arg(param, long);
    if(arg < 0)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.timeout = arg;
    break;

  case CURLOPT_CONNECTTIMEOUT:
    /*
     * The maximum time you allow curl to use to connect.
     */
    arg = va_arg(param, long);
    if((arg >= 0) && (arg <= (INT_MAX/1000)))
      data->set.connecttimeout = arg * 1000;
    else
      return CURLE_BAD_FUNCTION_ARGUMENT;
    break;

  case CURLOPT_CONNECTTIMEOUT_MS:
    arg = va_arg(param, long);
    if(arg < 0)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.connecttimeout = arg;
    break;

#ifndef CURL_DISABLE_FTP
  case CURLOPT_ACCEPTTIMEOUT_MS:
    /*
     * The maximum time for curl to wait for FTP server connect
     */
    arg = va_arg(param, long);
    if(arg < 0)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.accepttimeout = arg;
    break;
#endif

  case CURLOPT_USERPWD:
    /*
     * user:password to use in the operation
     */







|




|








|





|
|
|
|








|





|
|
|
|







|
|
|
|







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
    }
    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. 0 disables it.
     */
    arg = va_arg(param, long);
    if((arg < 0) || (arg > 65535))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_port = (unsigned short)arg;
    break;
  case CURLOPT_TIMEOUT:
    /*
     * The maximum time you allow curl to use for a single transfer
     * operation.
     */
    arg = va_arg(param, long);
    if((arg >= 0) && (arg <= (INT_MAX/1000)))
      data->set.timeout = (unsigned int)arg * 1000;
    else
      return CURLE_BAD_FUNCTION_ARGUMENT;
    break;

  case CURLOPT_TIMEOUT_MS:
    uarg = va_arg(param, unsigned long);
    if(uarg >= UINT_MAX)
      uarg = UINT_MAX;
    data->set.timeout = (unsigned int)uarg;
    break;

  case CURLOPT_CONNECTTIMEOUT:
    /*
     * The maximum time you allow curl to use to connect.
     */
    arg = va_arg(param, long);
    if((arg >= 0) && (arg <= (INT_MAX/1000)))
      data->set.connecttimeout = (unsigned int)arg * 1000;
    else
      return CURLE_BAD_FUNCTION_ARGUMENT;
    break;

  case CURLOPT_CONNECTTIMEOUT_MS:
    uarg = va_arg(param, unsigned long);
    if(uarg >= UINT_MAX)
      uarg = UINT_MAX;
    data->set.connecttimeout = (unsigned int)uarg;
    break;

#ifndef CURL_DISABLE_FTP
  case CURLOPT_ACCEPTTIMEOUT_MS:
    /*
     * The maximum time for curl to wait for FTP server connect
     */
    uarg = va_arg(param, unsigned long);
    if(uarg >= UINT_MAX)
      uarg = UINT_MAX;
    data->set.accepttimeout = (unsigned int)uarg;
    break;
#endif

  case CURLOPT_USERPWD:
    /*
     * user:password to use in the operation
     */
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
    if(arg > READBUFFER_MAX)
      arg = READBUFFER_MAX;
    else if(arg < 1)
      arg = READBUFFER_SIZE;
    else if(arg < READBUFFER_MIN)
      arg = READBUFFER_MIN;

    data->set.buffer_size = arg;
    break;

  case CURLOPT_UPLOAD_BUFFERSIZE:
    /*
     * The application kindly asks for a differently sized upload buffer.
     * Cap it to sensible.
     */







|







2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
    if(arg > READBUFFER_MAX)
      arg = READBUFFER_MAX;
    else if(arg < 1)
      arg = READBUFFER_SIZE;
    else if(arg < READBUFFER_MIN)
      arg = READBUFFER_MIN;

    data->set.buffer_size = (int)arg;
    break;

  case CURLOPT_UPLOAD_BUFFERSIZE:
    /*
     * The application kindly asks for a differently sized upload buffer.
     * Cap it to sensible.
     */
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
















2570
2571
2572
2573
2574
2575
2576
2577
#endif

  case CURLOPT_PROTOCOLS:
    /* set the bitmask for the protocols that are allowed to be used for the
       transfer, which thus helps the app which takes URLs from users or other
       external inputs and want to restrict what protocol(s) to deal
       with. Defaults to CURLPROTO_ALL. */
    data->set.allowed_protocols = (unsigned int)va_arg(param, long);
    break;

  case CURLOPT_REDIR_PROTOCOLS:
    /* set the bitmask for the protocols that libcurl is allowed to follow to,
       as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
       to be set in both bitmasks to be allowed to get redirected to. */
















    data->set.redir_protocols = (unsigned int)va_arg(param, long);
    break;

  case CURLOPT_DEFAULT_PROTOCOL:
    /* Set the protocol to use when the URL doesn't include any protocol */
    result = Curl_setstropt(&data->set.str[STRING_DEFAULT_PROTOCOL],
                            va_arg(param, char *));
    break;







|






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|







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
#endif

  case CURLOPT_PROTOCOLS:
    /* set the bitmask for the protocols that are allowed to be used for the
       transfer, which thus helps the app which takes URLs from users or other
       external inputs and want to restrict what protocol(s) to deal
       with. Defaults to CURLPROTO_ALL. */
    data->set.allowed_protocols = (curl_off_t)va_arg(param, long);
    break;

  case CURLOPT_REDIR_PROTOCOLS:
    /* set the bitmask for the protocols that libcurl is allowed to follow to,
       as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
       to be set in both bitmasks to be allowed to get redirected to. */
    data->set.redir_protocols = (curl_off_t)va_arg(param, long);
    break;

  case CURLOPT_PROTOCOLS_STR:
    argptr = va_arg(param, char *);
    result = protocol2num(argptr, &bigsize);
    if(result)
      return result;
    data->set.allowed_protocols = bigsize;
    break;

  case CURLOPT_REDIR_PROTOCOLS_STR:
    argptr = va_arg(param, char *);
    result = protocol2num(argptr, &bigsize);
    if(result)
      return result;
    data->set.redir_protocols = bigsize;
    break;

  case CURLOPT_DEFAULT_PROTOCOL:
    /* Set the protocol to use when the URL doesn't include any protocol */
    result = Curl_setstropt(&data->set.str[STRING_DEFAULT_PROTOCOL],
                            va_arg(param, char *));
    break;
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
  case CURLOPT_CONNECT_TO:
    data->set.connect_to = va_arg(param, struct curl_slist *);
    break;
  case CURLOPT_SUPPRESS_CONNECT_HEADERS:
    data->set.suppress_connect_headers = (0 != va_arg(param, long))?TRUE:FALSE;
    break;
  case CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS:
    arg = va_arg(param, long);
    if(arg < 0)
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.happy_eyeballs_timeout = arg;
    break;
#ifndef CURL_DISABLE_SHUFFLE_DNS
  case CURLOPT_DNS_SHUFFLE_ADDRESSES:
    data->set.dns_shuffle_addresses = (0 != va_arg(param, long)) ? TRUE:FALSE;
    break;
#endif
  case CURLOPT_DISALLOW_USERNAME_IN_URL:







|
|
|
|







3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
  case CURLOPT_CONNECT_TO:
    data->set.connect_to = va_arg(param, struct curl_slist *);
    break;
  case CURLOPT_SUPPRESS_CONNECT_HEADERS:
    data->set.suppress_connect_headers = (0 != va_arg(param, long))?TRUE:FALSE;
    break;
  case CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS:
    uarg = va_arg(param, unsigned long);
    if(uarg >= UINT_MAX)
      uarg = UINT_MAX;
    data->set.happy_eyeballs_timeout = (unsigned int)uarg;
    break;
#ifndef CURL_DISABLE_SHUFFLE_DNS
  case CURLOPT_DNS_SHUFFLE_ADDRESSES:
    data->set.dns_shuffle_addresses = (0 != va_arg(param, long)) ? TRUE:FALSE;
    break;
#endif
  case CURLOPT_DISALLOW_USERNAME_IN_URL:
Changes to jni/curl/lib/share.c.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
struct Curl_share *
curl_share_init(void)
{
  struct Curl_share *share = calloc(1, sizeof(struct Curl_share));
  if(share) {
    share->magic = CURL_GOOD_SHARE;
    share->specifier |= (1<<CURL_LOCK_DATA_SHARE);
    Curl_init_dnscache(&share->hostcache);
  }

  return share;
}

#undef curl_share_setopt
CURLSHcode







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
struct Curl_share *
curl_share_init(void)
{
  struct Curl_share *share = calloc(1, sizeof(struct Curl_share));
  if(share) {
    share->magic = CURL_GOOD_SHARE;
    share->specifier |= (1<<CURL_LOCK_DATA_SHARE);
    Curl_init_dnscache(&share->hostcache, 23);
  }

  return share;
}

#undef curl_share_setopt
CURLSHcode
Changes to jni/curl/lib/splay.c.
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 * @unittest: 1309
 */
struct Curl_tree *Curl_splayinsert(struct curltime i,
                                   struct Curl_tree *t,
                                   struct Curl_tree *node)
{
  static const struct curltime KEY_NOTUSED = {
    (time_t)-1, (unsigned int)-1
  }; /* will *NEVER* appear */

  if(!node)
    return t;

  if(t) {
    t = Curl_splay(i, t);







|







99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 * @unittest: 1309
 */
struct Curl_tree *Curl_splayinsert(struct curltime i,
                                   struct Curl_tree *t,
                                   struct Curl_tree *node)
{
  static const struct curltime KEY_NOTUSED = {
    ~0, -1
  }; /* will *NEVER* appear */

  if(!node)
    return t;

  if(t) {
    t = Curl_splay(i, t);
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
 * @unittest: 1309
 */
int Curl_splayremove(struct Curl_tree *t,
                     struct Curl_tree *removenode,
                     struct Curl_tree **newroot)
{
  static const struct curltime KEY_NOTUSED = {
    (time_t)-1, (unsigned int)-1
  }; /* will *NEVER* appear */
  struct Curl_tree *x;

  if(!t || !removenode)
    return 1;

  if(compare(KEY_NOTUSED, removenode->key) == 0) {







|







209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
 * @unittest: 1309
 */
int Curl_splayremove(struct Curl_tree *t,
                     struct Curl_tree *removenode,
                     struct Curl_tree **newroot)
{
  static const struct curltime KEY_NOTUSED = {
    ~0, -1
  }; /* will *NEVER* appear */
  struct Curl_tree *x;

  if(!t || !removenode)
    return 1;

  if(compare(KEY_NOTUSED, removenode->key) == 0) {
Changes to jni/curl/lib/strerror.c.
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277

  case CURLE_REMOTE_FILE_EXISTS:
    return "Remote file already exists";

  case CURLE_TFTP_NOSUCHUSER:
    return "TFTP: No such user";

  case CURLE_CONV_FAILED:
    return "Conversion failed";

  case CURLE_REMOTE_FILE_NOT_FOUND:
    return "Remote file not found";

  case CURLE_SSH:
    return "Error in the SSH layer";

  case CURLE_AGAIN:







<
<
<







261
262
263
264
265
266
267



268
269
270
271
272
273
274

  case CURLE_REMOTE_FILE_EXISTS:
    return "Remote file already exists";

  case CURLE_TFTP_NOSUCHUSER:
    return "TFTP: No such user";




  case CURLE_REMOTE_FILE_NOT_FOUND:
    return "Remote file not found";

  case CURLE_SSH:
    return "Error in the SSH layer";

  case CURLE_AGAIN:
330
331
332
333
334
335
336

337
338
339
340
341
342
343
  case CURLE_OBSOLETE40:
  case CURLE_OBSOLETE44:
  case CURLE_OBSOLETE46:
  case CURLE_OBSOLETE50:
  case CURLE_OBSOLETE51:
  case CURLE_OBSOLETE57:
  case CURLE_OBSOLETE62:

  case CURLE_OBSOLETE76:
  case CURL_LAST:
    break;
  }
  /*
   * By using a switch, gcc -Wall will complain about enum values
   * which do not appear, helping keep this function up-to-date.







>







327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
  case CURLE_OBSOLETE40:
  case CURLE_OBSOLETE44:
  case CURLE_OBSOLETE46:
  case CURLE_OBSOLETE50:
  case CURLE_OBSOLETE51:
  case CURLE_OBSOLETE57:
  case CURLE_OBSOLETE62:
  case CURLE_OBSOLETE75:
  case CURLE_OBSOLETE76:
  case CURL_LAST:
    break;
  }
  /*
   * By using a switch, gcc -Wall will complain about enum values
   * which do not appear, helping keep this function up-to-date.
Changes to jni/curl/lib/transfer.c.
535
536
537
538
539
540
541







542
543
544
545
546
547
548
549
550
551

552
553
554
555
556
557
558
    bool is_empty_data = FALSE;
    size_t buffersize = data->set.buffer_size;
    size_t bytestoread = buffersize;
#ifdef USE_NGHTTP2
    bool is_http2 = ((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
                     (conn->httpversion == 20));
#endif








    if(
#ifdef USE_NGHTTP2
      /* For HTTP/2, read data without caring about the content length. This
         is safe because body in HTTP/2 is always segmented thanks to its
         framing layer. Meanwhile, we have to call Curl_read to ensure that
         http2_handle_stream_close is called when we read all incoming bytes
         for a particular stream. */
      !is_http2 &&
#endif

      k->size != -1 && !k->header) {
      /* make sure we don't read too much */
      curl_off_t totalleft = k->size - k->bytecount;
      if(totalleft < (curl_off_t)bytestoread)
        bytestoread = (size_t)totalleft;
    }








>
>
>
>
>
>
>










>







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
    bool is_empty_data = FALSE;
    size_t buffersize = data->set.buffer_size;
    size_t bytestoread = buffersize;
#ifdef USE_NGHTTP2
    bool is_http2 = ((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
                     (conn->httpversion == 20));
#endif
    bool is_http3 =
#ifdef ENABLE_QUIC
      ((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
       (conn->httpversion == 30));
#else
      FALSE;
#endif

    if(
#ifdef USE_NGHTTP2
      /* For HTTP/2, read data without caring about the content length. This
         is safe because body in HTTP/2 is always segmented thanks to its
         framing layer. Meanwhile, we have to call Curl_read to ensure that
         http2_handle_stream_close is called when we read all incoming bytes
         for a particular stream. */
      !is_http2 &&
#endif
      !is_http3 && /* Same reason mentioned above. */
      k->size != -1 && !k->header) {
      /* make sure we don't read too much */
      curl_off_t totalleft = k->size - k->bytecount;
      if(totalleft < (curl_off_t)bytestoread)
        bytestoread = (size_t)totalleft;
    }

592
593
594
595
596
597
598



599
600
601
602
603
604
605
      /* if we receive 0 or less here, either the http2 stream is closed or the
         server closed the connection and we bail out from this! */
#ifdef USE_NGHTTP2
      if(is_http2 && !nread)
        DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
      else
#endif



        DEBUGF(infof(data, "nread <= 0, server closed connection, bailing"));
      k->keepon &= ~KEEP_RECV;
      break;
    }

    /* Default buffer to use when we write the buffer, it may be changed
       in the flow below before the actual storing is done. */







>
>
>







600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
      /* if we receive 0 or less here, either the http2 stream is closed or the
         server closed the connection and we bail out from this! */
#ifdef USE_NGHTTP2
      if(is_http2 && !nread)
        DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
      else
#endif
      if(is_http3 && !nread)
        DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
      else
        DEBUGF(infof(data, "nread <= 0, server closed connection, bailing"));
      k->keepon &= ~KEEP_RECV;
      break;
    }

    /* Default buffer to use when we write the buffer, it may be changed
       in the flow below before the actual storing is done. */
749
750
751
752
753
754
755





756

757
758
759
760
761
762
763
          connclose(conn, "excess found in a read");
        }

        nread = (ssize_t) (k->maxdownload - k->bytecount);
        if(nread < 0) /* this should be unusual */
          nread = 0;






        k->keepon &= ~KEEP_RECV; /* we're done reading */

      }

      k->bytecount += nread;

      Curl_pgrsSetDownloadCounter(data, k->bytecount);

      if(!k->chunk && (nread || k->badheader || is_empty_data)) {







>
>
>
>
>
|
>







760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
          connclose(conn, "excess found in a read");
        }

        nread = (ssize_t) (k->maxdownload - k->bytecount);
        if(nread < 0) /* this should be unusual */
          nread = 0;

        /* HTTP/3 over QUIC should keep reading until QUIC connection
           is closed.  In contrast to HTTP/2 which can stop reading
           from TCP connection, HTTP/3 over QUIC needs ACK from server
           to ensure stream closure.  It should keep reading. */
        if(!is_http3) {
          k->keepon &= ~KEEP_RECV; /* we're done reading */
        }
      }

      k->bytecount += nread;

      Curl_pgrsSetDownloadCounter(data, k->bytecount);

      if(!k->chunk && (nread || k->badheader || is_empty_data)) {
Changes to jni/curl/lib/url.c.
73
74
75
76
77
78
79

80
81
82
83
84
85
86
#endif

#elif defined(USE_WIN32_IDN)
/* prototype for curl_win32_idn_to_ascii() */
bool curl_win32_idn_to_ascii(const char *in, char **out);
#endif  /* USE_LIBIDN2 */


#include "urldata.h"
#include "netrc.h"

#include "formdata.h"
#include "mime.h"
#include "vtls/vtls.h"
#include "hostip.h"







>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#endif

#elif defined(USE_WIN32_IDN)
/* prototype for curl_win32_idn_to_ascii() */
bool curl_win32_idn_to_ascii(const char *in, char **out);
#endif  /* USE_LIBIDN2 */

#include "doh.h"
#include "urldata.h"
#include "netrc.h"

#include "formdata.h"
#include "mime.h"
#include "vtls/vtls.h"
#include "hostip.h"
148
149
150
151
152
153
154



155
156
157
158
159
160
161
#if READBUFFER_SIZE < READBUFFER_MIN
# error READBUFFER_SIZE is too small
#endif

#ifdef USE_UNIX_SOCKETS
#define UNIX_SOCKET_PREFIX "localhost"
#endif




/*
* get_protocol_family()
*
* This is used to return the protocol family for a given protocol.
*
* Parameters:







>
>
>







149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#if READBUFFER_SIZE < READBUFFER_MIN
# error READBUFFER_SIZE is too small
#endif

#ifdef USE_UNIX_SOCKETS
#define UNIX_SOCKET_PREFIX "localhost"
#endif

/* Reject URLs exceeding this length */
#define MAX_URL_LEN 0xffff

/*
* get_protocol_family()
*
* This is used to return the protocol family for a given protocol.
*
* Parameters:
435
436
437
438
439
440
441

442
443
444
445
446
447
448
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH)
  Curl_http_auth_cleanup_digest(data);
#endif
  Curl_safefree(data->info.contenttype);
  Curl_safefree(data->info.wouldredirect);

  /* this destroys the channel and we cannot use it anymore after this */

  Curl_resolver_cleanup(data->state.async.resolver);

  Curl_http2_cleanup_dependencies(data);

  /* No longer a dirty share, if it exists */
  if(data->share) {
    Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE);







>







439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH)
  Curl_http_auth_cleanup_digest(data);
#endif
  Curl_safefree(data->info.contenttype);
  Curl_safefree(data->info.wouldredirect);

  /* this destroys the channel and we cannot use it anymore after this */
  Curl_resolver_cancel(data);
  Curl_resolver_cleanup(data->state.async.resolver);

  Curl_http2_cleanup_dependencies(data);

  /* No longer a dirty share, if it exists */
  if(data->share) {
    Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE);
2020
2021
2022
2023
2024
2025
2026




2027
2028
2029
2030
2031
2032
2033
    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;
  }





#ifndef CURL_DISABLE_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);







>
>
>
>







2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
    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;
  }
  else if(strlen(data->state.up.hostname) > MAX_URL_LEN) {
    failf(data, "Too long host name (maximum is %d)", MAX_URL_LEN);
    return CURLE_URL_MALFORMAT;
  }

#ifndef CURL_DISABLE_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);
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
    if(!strcasecompare("file", data->state.up.scheme))
      return CURLE_OUT_OF_MEMORY;
  }
  else {
    unsigned long port = strtoul(data->state.up.port, NULL, 10);
    conn->port = conn->remote_port =
      (data->set.use_port && data->state.allow_port) ?
      (int)data->set.use_port : curlx_ultous(port);
  }

  (void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0);

  hostname = data->state.up.hostname;
  if(hostname && hostname[0] == '[') {
    /* This looks like an IPv6 address literal. See if there is an address







|







2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
    if(!strcasecompare("file", data->state.up.scheme))
      return CURLE_OUT_OF_MEMORY;
  }
  else {
    unsigned long port = strtoul(data->state.up.port, NULL, 10);
    conn->port = conn->remote_port =
      (data->set.use_port && data->state.allow_port) ?
      data->set.use_port : curlx_ultous(port);
  }

  (void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0);

  hostname = data->state.up.hostname;
  if(hostname && hostname[0] == '[') {
    /* This looks like an IPv6 address literal. See if there is an address
2730
2731
2732
2733
2734
2735
2736

2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753

  /***********************************************************************
   * If this is supposed to use a proxy, we need to figure out the proxy host
   * name, proxy type and port number, so that we can re-use an existing
   * connection that may exist registered to the same proxy host.
   ***********************************************************************/
  if(proxy || socksproxy) {

    if(proxy) {
      result = parse_proxy(data, conn, proxy, conn->http_proxy.proxytype);
      Curl_safefree(proxy); /* parse_proxy copies the proxy string */
      if(result)
        goto out;
    }

    if(socksproxy) {
      result = parse_proxy(data, conn, socksproxy,
                           conn->socks_proxy.proxytype);
      /* parse_proxy copies the socks proxy string */
      Curl_safefree(socksproxy);
      if(result)
        goto out;
    }

    if(conn->http_proxy.host.rawalloc) {







>

|






|
<







2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755

2756
2757
2758
2759
2760
2761
2762

  /***********************************************************************
   * If this is supposed to use a proxy, we need to figure out the proxy host
   * name, proxy type and port number, so that we can re-use an existing
   * connection that may exist registered to the same proxy host.
   ***********************************************************************/
  if(proxy || socksproxy) {
    curl_proxytype ptype = (curl_proxytype)conn->http_proxy.proxytype;
    if(proxy) {
      result = parse_proxy(data, conn, proxy, ptype);
      Curl_safefree(proxy); /* parse_proxy copies the proxy string */
      if(result)
        goto out;
    }

    if(socksproxy) {
      result = parse_proxy(data, conn, socksproxy, ptype);

      /* parse_proxy copies the socks proxy string */
      Curl_safefree(socksproxy);
      if(result)
        goto out;
    }

    if(conn->http_proxy.host.rawalloc) {
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
                                  struct connectdata *conn)
{

  if(data->set.use_port && data->state.allow_port) {
    /* if set, we use this instead of the port possibly given in the URL */
    char portbuf[16];
    CURLUcode uc;
    conn->remote_port = (unsigned short)data->set.use_port;
    msnprintf(portbuf, sizeof(portbuf), "%d", conn->remote_port);
    uc = curl_url_set(data->state.uh, CURLUPART_PORT, portbuf, 0);
    if(uc)
      return CURLE_OUT_OF_MEMORY;
  }

  return CURLE_OK;







|







2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
                                  struct connectdata *conn)
{

  if(data->set.use_port && data->state.allow_port) {
    /* if set, we use this instead of the port possibly given in the URL */
    char portbuf[16];
    CURLUcode uc;
    conn->remote_port = data->set.use_port;
    msnprintf(portbuf, sizeof(portbuf), "%d", conn->remote_port);
    uc = curl_url_set(data->state.uh, CURLUPART_PORT, portbuf, 0);
    if(uc)
      return CURLE_OUT_OF_MEMORY;
  }

  return CURLE_OK;
3034
3035
3036
3037
3038
3039
3040

3041

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
      conn->bits.netrc = TRUE;
    }
    if(url_provided) {
      Curl_safefree(conn->user);
      conn->user = strdup(*userp);
      if(!conn->user)
        return CURLE_OUT_OF_MEMORY;

      /* don't update the user name below */

      userp = NULL;


    }
  }
#endif

  /* for updated strings, we update them in the URL */
  if(userp) {
    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;
  }







>
|
>
|
>
>





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







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
3072
3073
3074

3075
3076
3077
3078
3079
3080
3081
      conn->bits.netrc = TRUE;
    }
    if(url_provided) {
      Curl_safefree(conn->user);
      conn->user = strdup(*userp);
      if(!conn->user)
        return CURLE_OUT_OF_MEMORY;
    }
    /* no user was set but a password, set a blank user */
    if(userp && !*userp && *passwdp) {
      *userp = strdup("");
      if(!*userp)
        return CURLE_OUT_OF_MEMORY;
    }
  }
#endif

  /* 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;
  }
3408
3409
3410
3411
3412
3413
3414












































































































































3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
      }
    }
  }
#endif

  return result;
}













































































































































/*************************************************************
 * Resolve the address of the server or proxy
 *************************************************************/
static CURLcode resolve_server(struct Curl_easy *data,
                               struct connectdata *conn,
                               bool *async)
{
  CURLcode result = CURLE_OK;
  timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);

  DEBUGASSERT(conn);
  DEBUGASSERT(data);
  /*************************************************************
   * Resolve the name of the server or proxy
   *************************************************************/
  if(conn->bits.reuse)
    /* We're reusing the connection - no need to resolve anything, and
       idnconvert_hostname() was called already in create_conn() for the re-use
       case. */
    *async = FALSE;

  else {
    /* this is a fresh connect */
    int rc;
    struct Curl_dns_entry *hostaddr = NULL;

#ifdef USE_UNIX_SOCKETS
    char *unix_path = NULL;

    if(conn->unix_domain_socket)
      unix_path = conn->unix_domain_socket;
#ifndef CURL_DISABLE_PROXY
    else if(conn->socks_proxy.host.name
        && !strncmp(UNIX_SOCKET_PREFIX"/",
          conn->socks_proxy.host.name, sizeof(UNIX_SOCKET_PREFIX)))
      unix_path = conn->socks_proxy.host.name + sizeof(UNIX_SOCKET_PREFIX) - 1;
#endif

    if(unix_path) {
      /* Unix domain sockets are local. The host gets ignored, just use the
       * specified domain socket address. Do not cache "DNS entries". There is
       * no DNS involved and we already have the filesystem path available */

      hostaddr = calloc(1, sizeof(struct Curl_dns_entry));
      if(!hostaddr)
        result = CURLE_OUT_OF_MEMORY;
      else {
        bool longpath = FALSE;
        hostaddr->addr = Curl_unix2addr(unix_path, &longpath,
                                        conn->bits.abstract_unix_socket);
        if(hostaddr->addr)
          hostaddr->inuse++;
        else {
          /* Long paths are not supported for now */
          if(longpath) {
            failf(data, "Unix socket path too long: '%s'", unix_path);
            result = CURLE_COULDNT_RESOLVE_HOST;
          }
          else
            result = CURLE_OUT_OF_MEMORY;
          free(hostaddr);
          hostaddr = NULL;
        }
      }
    }
    else
#endif

    if(!CONN_IS_PROXIED(conn)) {
      struct hostname *connhost;
      if(conn->bits.conn_to_host)
        connhost = &conn->conn_to_host;
      else
        connhost = &conn->host;

      /* If not connecting via a proxy, extract the port from the URL, if it is
       * there, thus overriding any defaults that might have been set above. */
      if(conn->bits.conn_to_port)
        conn->port = conn->conn_to_port;
      else
        conn->port = conn->remote_port;

      /* Resolve target host right on */
      conn->hostname_resolve = strdup(connhost->name);
      if(!conn->hostname_resolve)
        return CURLE_OUT_OF_MEMORY;
      rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
                               &hostaddr, timeout_ms);
      if(rc == CURLRESOLV_PENDING)
        *async = TRUE;

      else if(rc == CURLRESOLV_TIMEDOUT) {
        failf(data, "Failed to resolve host '%s' with timeout after %ld ms",
              connhost->dispname,
              Curl_timediff(Curl_now(), data->progress.t_startsingle));
        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. */

      struct hostname * const host = conn->bits.socksproxy ?
        &conn->socks_proxy.host : &conn->http_proxy.host;

      /* resolve proxy */
      conn->hostname_resolve = strdup(host->name);
      if(!conn->hostname_resolve)
        return CURLE_OUT_OF_MEMORY;
      rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
                               &hostaddr, timeout_ms);

      if(rc == CURLRESOLV_PENDING)
        *async = TRUE;

      else if(rc == CURLRESOLV_TIMEDOUT)
        result = CURLE_OPERATION_TIMEDOUT;

      else if(!hostaddr) {
        failf(data, "Couldn't resolve proxy '%s'", host->dispname);
        result = CURLE_COULDNT_RESOLVE_PROXY;
        /* don't return yet, we need to clean up the timeout first */
      }
    }
#endif
    DEBUGASSERT(conn->dns_entry == NULL);
    conn->dns_entry = hostaddr;
  }

  return result;
}

/*
 * Cleanup the connection just allocated before we can move along and use the
 * previously existing one.  All relevant data is copied over and old_conn is
 * ready for freeing once this function returns.
 */







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








<
<
<


|
|
<
|




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







3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573



3574
3575
3576
3577

3578
3579
3580
3581
3582

































































3583




3584





3585





































3586
3587
3588
3589
3590
3591
3592
3593
      }
    }
  }
#endif

  return result;
}

#ifdef USE_UNIX_SOCKETS
static CURLcode resolve_unix(struct Curl_easy *data,
                             struct connectdata *conn,
                             char *unix_path)
{
  struct Curl_dns_entry *hostaddr = NULL;
  bool longpath = FALSE;

  DEBUGASSERT(unix_path);
  DEBUGASSERT(conn->dns_entry == NULL);

  /* Unix domain sockets are local. The host gets ignored, just use the
   * specified domain socket address. Do not cache "DNS entries". There is
   * no DNS involved and we already have the filesystem path available. */
  hostaddr = calloc(1, sizeof(struct Curl_dns_entry));
  if(!hostaddr)
    return CURLE_OUT_OF_MEMORY;

  hostaddr->addr = Curl_unix2addr(unix_path, &longpath,
                                  conn->bits.abstract_unix_socket);
  if(!hostaddr->addr) {
    if(longpath)
      /* Long paths are not supported for now */
      failf(data, "Unix socket path too long: '%s'", unix_path);
    free(hostaddr);
    return longpath ? CURLE_COULDNT_RESOLVE_HOST : CURLE_OUT_OF_MEMORY;
  }

  hostaddr->inuse++;
  conn->dns_entry = hostaddr;
  return CURLE_OK;
}
#endif

#ifndef CURL_DISABLE_PROXY
static CURLcode resolve_proxy(struct Curl_easy *data,
                              struct connectdata *conn,
                              bool *async)
{
  struct Curl_dns_entry *hostaddr = NULL;
  struct hostname *host;
  timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);
  int rc;

  DEBUGASSERT(conn->dns_entry == NULL);

  host = conn->bits.socksproxy ? &conn->socks_proxy.host :
    &conn->http_proxy.host;

  conn->hostname_resolve = strdup(host->name);
  if(!conn->hostname_resolve)
    return CURLE_OUT_OF_MEMORY;

  rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
                           &hostaddr, timeout_ms);
  conn->dns_entry = hostaddr;
  if(rc == CURLRESOLV_PENDING)
    *async = TRUE;
  else if(rc == CURLRESOLV_TIMEDOUT)
    return CURLE_OPERATION_TIMEDOUT;
  else if(!hostaddr) {
    failf(data, "Couldn't resolve proxy '%s'", host->dispname);
    return CURLE_COULDNT_RESOLVE_PROXY;
  }

  return CURLE_OK;
}
#endif

static CURLcode resolve_ip(struct Curl_easy *data,
                           struct connectdata *conn,
                           bool *async)
{
  struct Curl_dns_entry *hostaddr = NULL;
  struct hostname *connhost;
  timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);
  int rc;

  DEBUGASSERT(conn->dns_entry == NULL);

  connhost = conn->bits.conn_to_host ? &conn->conn_to_host : &conn->host;

  /* If not connecting via a proxy, extract the port from the URL, if it is
   * there, thus overriding any defaults that might have been set above. */
  conn->port = conn->bits.conn_to_port ? conn->conn_to_port :
    conn->remote_port;

  /* Resolve target host right on */
  conn->hostname_resolve = strdup(connhost->name);
  if(!conn->hostname_resolve)
    return CURLE_OUT_OF_MEMORY;

  rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
                           &hostaddr, timeout_ms);
  conn->dns_entry = hostaddr;
  if(rc == CURLRESOLV_PENDING)
    *async = TRUE;
  else if(rc == CURLRESOLV_TIMEDOUT) {
    failf(data, "Failed to resolve host '%s' with timeout after %ld ms",
          connhost->dispname,
          Curl_timediff(Curl_now(), data->progress.t_startsingle));
    return CURLE_OPERATION_TIMEDOUT;
  }
  else if(!hostaddr) {
    failf(data, "Could not resolve host: %s", connhost->dispname);
    return CURLE_COULDNT_RESOLVE_HOST;
  }

  return CURLE_OK;
}

/* Perform a fresh resolve */
static CURLcode resolve_fresh(struct Curl_easy *data,
                              struct connectdata *conn,
                              bool *async)
{
#ifdef USE_UNIX_SOCKETS
  char *unix_path = conn->unix_domain_socket;

#ifndef CURL_DISABLE_PROXY
  if(!unix_path && conn->socks_proxy.host.name &&
     !strncmp(UNIX_SOCKET_PREFIX"/",
              conn->socks_proxy.host.name, sizeof(UNIX_SOCKET_PREFIX)))
    unix_path = conn->socks_proxy.host.name + sizeof(UNIX_SOCKET_PREFIX) - 1;
#endif

  if(unix_path) {
    conn->transport = TRNSPRT_UNIX;
    return resolve_unix(data, conn, unix_path);
  }
#endif

#ifndef CURL_DISABLE_PROXY
  if(CONN_IS_PROXIED(conn))
    return resolve_proxy(data, conn, async);
#endif

  return resolve_ip(data, conn, async);
}

/*************************************************************
 * Resolve the address of the server or proxy
 *************************************************************/
static CURLcode resolve_server(struct Curl_easy *data,
                               struct connectdata *conn,
                               bool *async)
{



  DEBUGASSERT(conn);
  DEBUGASSERT(data);

  /* Resolve the name of the server or proxy */

  if(conn->bits.reuse) {
    /* We're reusing the connection - no need to resolve anything, and
       idnconvert_hostname() was called already in create_conn() for the re-use
       case. */
    *async = FALSE;

































































    return CURLE_OK;




  }











































  return resolve_fresh(data, conn, async);
}

/*
 * Cleanup the connection just allocated before we can move along and use the
 * previously existing one.  All relevant data is copied over and old_conn is
 * ready for freeing once this function returns.
 */
Changes to jni/curl/lib/urldata.h.
314
315
316
317
318
319
320
321
322
323
324
325

326
327
328
329
330
331
332
     either may be NULL. */
  char *user;
  char *passwd;
#else
  char *nonce;
  char *cnonce;
  char *realm;
  int algo;
  char *opaque;
  char *qop;
  char *algorithm;
  int nc; /* nonce count */

  BIT(stale); /* set true for re-negotiation */
  BIT(userhash);
#endif
};

typedef enum {
  NTLMSTATE_NONE,







<




>







314
315
316
317
318
319
320

321
322
323
324
325
326
327
328
329
330
331
332
     either may be NULL. */
  char *user;
  char *passwd;
#else
  char *nonce;
  char *cnonce;
  char *realm;

  char *opaque;
  char *qop;
  char *algorithm;
  int nc; /* nonce count */
  unsigned char algo;
  BIT(stale); /* set true for re-negotiation */
  BIT(userhash);
#endif
};

typedef enum {
  NTLMSTATE_NONE,
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
  /*   DOH_PROBE_SLOT_FOOBAR_TXT, */
  /* #endif */

  /* AFTER all slot definitions, establish how many we have */
  DOH_PROBE_SLOTS
};

/* one of these for each DoH request */
struct dnsprobe {
  CURL *easy;
  int dnstype;
  unsigned char dohbuffer[512];
  size_t dohlen;
  struct dynbuf serverdoh;
};

struct dohdata {
  struct curl_slist *headers;
  struct dnsprobe probe[DOH_PROBE_SLOTS];
  unsigned int pending; /* still outstanding requests */
  int port;
  const char *host;
};

/*
 * Request specific data in the easy handle (Curl_easy).  Previously,
 * these members were on the connectdata struct but since a conn struct may
 * now be shared between different Curl_easys, we store connection-specific
 * data here. This struct only keeps stuff that's interesting for *this*
 * request, as it will be cleared between multiple ones
 */







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







594
595
596
597
598
599
600

















601
602
603
604
605
606
607
  /*   DOH_PROBE_SLOT_FOOBAR_TXT, */
  /* #endif */

  /* AFTER all slot definitions, establish how many we have */
  DOH_PROBE_SLOTS
};


















/*
 * Request specific data in the easy handle (Curl_easy).  Previously,
 * these members were on the connectdata struct but since a conn struct may
 * now be shared between different Curl_easys, we store connection-specific
 * data here. This struct only keeps stuff that's interesting for *this*
 * request, as it will be cleared between multiple ones
 */
852
853
854
855
856
857
858
859

860
861
862
863
864
865
866
#endif /* DEBUGBUILD */
};
#endif /* USE_RECV_BEFORE_SEND_WORKAROUND */

struct proxy_info {
  struct hostname host;
  long port;
  curl_proxytype proxytype; /* what kind of proxy that is in use */

  char *user;    /* proxy user name string, allocated */
  char *passwd;  /* proxy password string, allocated */
};

struct ldapconninfo;
struct http_connect_state;








|
>







835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
#endif /* DEBUGBUILD */
};
#endif /* USE_RECV_BEFORE_SEND_WORKAROUND */

struct proxy_info {
  struct hostname host;
  long port;
  unsigned char proxytype; /* curl_proxytype: what kind of proxy that is in
                              use */
  char *user;    /* proxy user name string, allocated */
  char *passwd;  /* proxy password string, allocated */
};

struct ldapconninfo;
struct http_connect_state;

891
892
893
894
895
896
897





898
899
900
901
902
903
904

struct connstate {
  enum connect_t state;
  ssize_t outstanding;  /* send this many bytes more */
  unsigned char *outp; /* send from this pointer */
};






/*
 * 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 */







>
>
>
>
>







875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893

struct connstate {
  enum connect_t state;
  ssize_t outstanding;  /* send this many bytes more */
  unsigned char *outp; /* send from this pointer */
};

#define TRNSPRT_TCP 3
#define TRNSPRT_UDP 4
#define TRNSPRT_QUIC 5
#define TRNSPRT_UNIX 6

/*
 * 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 */
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
  struct Curl_dns_entry *dns_entry;

  /* 'ip_addr' is the particular IP we connected to. It points to a struct
     within the DNS cache, so this pointer is only valid as long as the DNS
     cache entry remains locked. It gets unlocked in multi_done() */
  struct Curl_addrinfo *ip_addr;
  struct Curl_addrinfo *tempaddr[2]; /* for happy eyeballs */
#ifdef ENABLE_IPV6
  unsigned int scope_id;  /* Scope id for IPv6 */
#endif

  enum {
    TRNSPRT_TCP = 3,
    TRNSPRT_UDP = 4,
    TRNSPRT_QUIC = 5
  } transport;

#ifdef ENABLE_QUIC
  struct quicsocket hequic[2]; /* two, for happy eyeballs! */
  struct quicsocket *quic;
#endif

  struct hostname host;
  char *hostname_resolve; /* host name to resolve to address, allocated */
  char *secondaryhostname; /* secondary socket host name (ftp) */
  struct hostname conn_to_host; /* the host to connect to. valid only if
                                   bits.conn_to_host is set */
#ifndef CURL_DISABLE_PROXY
  struct proxy_info socks_proxy;
  struct proxy_info http_proxy;
#endif
  int port;        /* which port to use locally - to connect to */
  int remote_port; /* the remote port, not the proxy port! */
  int conn_to_port; /* the remote port to connect to. valid only if
                       bits.conn_to_port is set */
  unsigned short secondary_port; /* secondary socket remote port to connect to
                                    (ftp) */

  /* 'primary_ip' and 'primary_port' get filled with peer's numerical
     ip address and port number whenever an outgoing connection is
     *attempted* from the primary socket to a remote address. When more
     than one address is tried for a connection these will hold data
     for the last attempt. When the connection is actually established
     these are updated with data which comes directly from the socket. */

  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;     /* authorization identity string, allocated */
  char *oauth_bearer; /* OAUTH2 bearer, 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 */







<
<
<
<
<
<
<
<
<















<
<
<
<
<
<
<








<
<





<







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
  struct Curl_dns_entry *dns_entry;

  /* 'ip_addr' is the particular IP we connected to. It points to a struct
     within the DNS cache, so this pointer is only valid as long as the DNS
     cache entry remains locked. It gets unlocked in multi_done() */
  struct Curl_addrinfo *ip_addr;
  struct Curl_addrinfo *tempaddr[2]; /* for happy eyeballs */










#ifdef ENABLE_QUIC
  struct quicsocket hequic[2]; /* two, for happy eyeballs! */
  struct quicsocket *quic;
#endif

  struct hostname host;
  char *hostname_resolve; /* host name to resolve to address, allocated */
  char *secondaryhostname; /* secondary socket host name (ftp) */
  struct hostname conn_to_host; /* the host to connect to. valid only if
                                   bits.conn_to_host is set */
#ifndef CURL_DISABLE_PROXY
  struct proxy_info socks_proxy;
  struct proxy_info http_proxy;
#endif







  /* 'primary_ip' and 'primary_port' get filled with peer's numerical
     ip address and port number whenever an outgoing connection is
     *attempted* from the primary socket to a remote address. When more
     than one address is tried for a connection these will hold data
     for the last attempt. When the connection is actually established
     these are updated with data which comes directly from the socket. */

  char primary_ip[MAX_IPADR_LEN];


  char *user;    /* user name string, allocated */
  char *passwd;  /* password string, allocated */
  char *options; /* options string, allocated */
  char *sasl_authzid;     /* authorization identity string, allocated */
  char *oauth_bearer; /* OAUTH2 bearer, allocated */

  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 */
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
#endif
  struct ssl_primary_config ssl_config;
#ifndef CURL_DISABLE_PROXY
  struct ssl_primary_config proxy_ssl_config;
#endif
  struct ConnectBits bits;    /* various state-flags for this connection */

  /* The field below gets set in Curl_connecthost */
  int num_addr; /* number of addresses to try to connect to */
 /* connecttime: when connect() is called on the current IP address. Used to
    be able to track when to move on to try next IP - but only when the multi
    interface is used. */
  struct curltime connecttime;

  /* The field below gets set in Curl_connecthost */
  /* how long time in milliseconds to spend on trying to connect to each IP







<
<







971
972
973
974
975
976
977


978
979
980
981
982
983
984
#endif
  struct ssl_primary_config ssl_config;
#ifndef CURL_DISABLE_PROXY
  struct ssl_primary_config proxy_ssl_config;
#endif
  struct ConnectBits bits;    /* various state-flags for this connection */



 /* connecttime: when connect() is called on the current IP address. Used to
    be able to track when to move on to try next IP - but only when the multi
    interface is used. */
  struct curltime connecttime;

  /* The field below gets set in Curl_connecthost */
  /* how long time in milliseconds to spend on trying to connect to each IP
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
  curl_socket_t sockfd;   /* socket to read from or CURL_SOCKET_BAD */
  curl_socket_t writesockfd; /* socket to write to, it may very
                                well be the same we read from.
                                CURL_SOCKET_BAD disables */

#ifdef HAVE_GSSAPI
  BIT(sec_complete); /* if Kerberos is enabled for this connection */
  enum protection_level command_prot;
  enum protection_level data_prot;
  enum protection_level request_data_prot;
  size_t buffer_size;
  struct krb5buffer in_buffer;
  void *app_data;
  const struct Curl_sec_client_mech *mech;
  struct sockaddr_in local_addr;
#endif








|
|
|







998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
  curl_socket_t sockfd;   /* socket to read from or CURL_SOCKET_BAD */
  curl_socket_t writesockfd; /* socket to write to, it may very
                                well be the same we read from.
                                CURL_SOCKET_BAD disables */

#ifdef HAVE_GSSAPI
  BIT(sec_complete); /* if Kerberos is enabled for this connection */
  unsigned char command_prot; /* enum protection_level */
  unsigned char data_prot; /* enum protection_level */
  unsigned char request_data_prot; /* enum protection_level */
  size_t buffer_size;
  struct krb5buffer in_buffer;
  void *app_data;
  const struct Curl_sec_client_mech *mech;
  struct sockaddr_in local_addr;
#endif

1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142









1143







1144
1145
1146
1147
1148
1149
1150
     made and will serve the purpose of being used for comparison reasons so
     that subsequent bound-requested connections aren't accidentally re-using
     wrong connections. */
  char *localdev;
  int localportrange;
  int cselect_bits; /* bitmask of socket events */
  int waitfor;      /* current READ/WRITE bits to wait for */
  int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */

#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
  int socks5_gssapi_enctype;
#endif









  unsigned short localport;







};

/* The end of connectdata. */

/*
 * Struct to keep statistical and informational data.
 * All variables in this struct must be initialized/reset in Curl_initinfo().







<
<



>
>
>
>
>
>
>
>
>

>
>
>
>
>
>
>







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
     made and will serve the purpose of being used for comparison reasons so
     that subsequent bound-requested connections aren't accidentally re-using
     wrong connections. */
  char *localdev;
  int localportrange;
  int cselect_bits; /* bitmask of socket events */
  int waitfor;      /* current READ/WRITE bits to wait for */


#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
  int socks5_gssapi_enctype;
#endif
  /* The field below gets set in Curl_connecthost */
  int num_addr; /* number of addresses to try to connect to */
  int port;        /* which port to use locally - to connect to */
  int remote_port; /* the remote port, not the proxy port! */
  int conn_to_port; /* the remote port to connect to. valid only if
                       bits.conn_to_port is set */
#ifdef ENABLE_IPV6
  unsigned int scope_id;  /* Scope id for IPv6 */
#endif
  unsigned short localport;
  unsigned short secondary_port; /* secondary socket remote port to connect to
                                    (ftp) */
  unsigned char negnpn; /* APLN or NPN TLS negotiated protocol,
                           a CURL_HTTP_VERSION* value */
  unsigned char transport; /* one of the TRNSPRT_* defines */
  unsigned char ip_version; /* copied from the Curl_easy at creation time */
  unsigned char httpversion; /* the HTTP version*10 reported by the server */
};

/* The end of connectdata. */

/*
 * Struct to keep statistical and informational data.
 * All variables in this struct must be initialized/reset in Curl_initinfo().
1296
1297
1298
1299
1300
1301
1302

1303
1304
1305
1306
1307
1308
1309
  EXPIRE_HAPPY_EYEBALLS,
  EXPIRE_MULTI_PENDING,
  EXPIRE_RUN_NOW,
  EXPIRE_SPEEDCHECK,
  EXPIRE_TIMEOUT,
  EXPIRE_TOOFAST,
  EXPIRE_QUIC,

  EXPIRE_LAST /* not an actual timer, used as a marker only */
} expire_id;


typedef enum {
  TRAILERS_NONE,
  TRAILERS_INITIALIZED,







>







1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
  EXPIRE_HAPPY_EYEBALLS,
  EXPIRE_MULTI_PENDING,
  EXPIRE_RUN_NOW,
  EXPIRE_SPEEDCHECK,
  EXPIRE_TIMEOUT,
  EXPIRE_TOOFAST,
  EXPIRE_QUIC,
  EXPIRE_FTP_ACCEPT,
  EXPIRE_LAST /* not an actual timer, used as a marker only */
} expire_id;


typedef enum {
  TRAILERS_NONE,
  TRAILERS_INITIALIZED,
1425
1426
1427
1428
1429
1430
1431
1432

1433
1434
1435
1436
1437
1438
1439
  void *in;                      /* CURLOPT_READDATA */
#ifdef USE_HTTP2
  struct Curl_easy *stream_depends_on;
  int stream_weight;
#endif
  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 */
#ifndef CURL_DISABLE_COOKIES
  struct curl_slist *cookielist; /* list of cookie files set by
                                    curl_easy_setopt(COOKIEFILE) calls */
#endif
  struct curl_slist *resolve; /* set to point to the set.resolve list when







|
>







1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
  void *in;                      /* CURLOPT_READDATA */
#ifdef USE_HTTP2
  struct Curl_easy *stream_depends_on;
  int stream_weight;
#endif
  CURLU *uh; /* URL handle for the current parsed URL */
  struct urlpieces up;
  unsigned char httpreq; /* Curl_HttpReq; what kind of HTTP request (if any)
                            is this */
  char *url;        /* work URL, copied from UserDefined */
  char *referer;    /* referer string */
#ifndef CURL_DISABLE_COOKIES
  struct curl_slist *cookielist; /* list of cookie files set by
                                    curl_easy_setopt(COOKIEFILE) calls */
#endif
  struct curl_slist *resolve; /* set to point to the set.resolve list when
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
  char *errorbuffer; /* (Static) store failure messages in here */
  long proxyport; /* If non-zero, use this port number by default. If the
                     proxy string features a ":[port]" that one will override
                     this. */
  void *out;         /* CURLOPT_WRITEDATA */
  void *in_set;      /* CURLOPT_READDATA */
  void *writeheader; /* write the header 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) */
#ifndef CURL_DISABLE_PROXY
  unsigned long socks5auth;/* kind of SOCKS5 authentication to use (bitmask) */
#endif
  long maxredirs;    /* maximum no. of http(s) redirects to follow, set to -1
                        for infinity */







|







1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
  char *errorbuffer; /* (Static) store failure messages in here */
  long proxyport; /* If non-zero, use this port number by default. If the
                     proxy string features a ":[port]" that one will override
                     this. */
  void *out;         /* CURLOPT_WRITEDATA */
  void *in_set;      /* CURLOPT_READDATA */
  void *writeheader; /* write the header to this if non-NULL */
  unsigned short 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) */
#ifndef CURL_DISABLE_PROXY
  unsigned long socks5auth;/* kind of SOCKS5 authentication to use (bitmask) */
#endif
  long maxredirs;    /* maximum no. of http(s) redirects to follow, set to -1
                        for infinity */
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
  curl_hstsread_callback hsts_read;
  void *hsts_read_userp;
  curl_hstswrite_callback hsts_write;
  void *hsts_write_userp;
#endif
  void *progress_client; /* pointer to pass to the progress callback */
  void *ioctl_client;   /* pointer to pass to the ioctl callback */
  long timeout;         /* in milliseconds, 0 means no timeout */
  long connecttimeout;  /* in milliseconds, 0 means no timeout */
  long happy_eyeballs_timeout; /* in milliseconds, 0 is a valid value */
  long server_response_timeout; /* in milliseconds, 0 means no timeout */
  long maxage_conn;     /* in seconds, max idle time to allow a connection that
                           is to be reused */
  long maxlifetime_conn; /* in seconds, max time since creation to allow a
                            connection that is to be reused */
#ifndef CURL_DISABLE_TFTP
  long tftp_blksize;    /* in bytes, 0 means use default */
#endif







|
|
|
|







1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
  curl_hstsread_callback hsts_read;
  void *hsts_read_userp;
  curl_hstswrite_callback hsts_write;
  void *hsts_write_userp;
#endif
  void *progress_client; /* pointer to pass to the progress callback */
  void *ioctl_client;   /* pointer to pass to the ioctl callback */
  unsigned int timeout;        /* ms, 0 means no timeout */
  unsigned int connecttimeout; /* ms, 0 means no timeout */
  unsigned int happy_eyeballs_timeout; /* ms, 0 is a valid value */
  unsigned int server_response_timeout; /* ms, 0 means no timeout */
  long maxage_conn;     /* in seconds, max idle time to allow a connection that
                           is to be reused */
  long maxlifetime_conn; /* in seconds, max time since creation to allow a
                            connection that is to be reused */
#ifndef CURL_DISABLE_TFTP
  long tftp_blksize;    /* in bytes, 0 means use default */
#endif
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
#ifndef CURL_DISABLE_TELNET
  struct curl_slist *telnet_options; /* linked list of telnet options */
#endif
  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 */
  unsigned int upload_buffer_size; /* size of upload buffer to use,
                                      keep it >= CURL_MAX_WRITE_SIZE */
  void *private_data; /* application-private data */
  struct curl_slist *http200aliases; /* linked list of aliases for http200 */
  unsigned char ipver; /* the CURL_IPRESOLVE_* defines in the public header
                          file 0 - whatever, 1 - v2, 2 - v6 */
  curl_off_t max_filesize; /* Maximum file size to download */
#ifndef CURL_DISABLE_FTP
  curl_ftpfile ftp_filemethod; /* how to get to a file when FTP is used  */
  curl_ftpauth ftpsslauth; /* what AUTH XXX to be attempted */
  curl_ftpccc ftp_ccc;   /* FTP CCC options */
  long accepttimeout;   /* in milliseconds, 0 means no timeout */
#endif

  int ftp_create_missing_dirs; /* 1 - create directories that don't exist
                                  2 - the same but also allow MKD to fail once
                               */

#ifdef USE_LIBSSH2
  curl_sshhostkeycallback ssh_hostkeyfunc; /* hostkey check callback */
  void *ssh_hostkeyfunc_userp;         /* custom pointer to callback */
#endif

  curl_sshkeycallback ssh_keyfunc; /* key matching callback */
  void *ssh_keyfunc_userp;         /* custom pointer to callback */
#ifndef CURL_DISABLE_NETRC
  enum CURL_NETRC_OPTION
       use_netrc;        /* defined in include/curl.h */
#endif
  curl_usessl use_ssl;   /* if AUTH TLS is to be attempted etc, for FTP or
                            IMAP or POP3 or others! */
  unsigned int new_file_perms;      /* when creating remote files */
  unsigned int new_directory_perms; /* when creating remote dirs */
  int ssh_auth_types;    /* allowed SSH auth types */
  char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
  struct curl_blob *blobs[BLOB_LAST];
#ifdef ENABLE_IPV6
  unsigned int scope_id;  /* Scope id for IPv6 */
#endif
  unsigned int allowed_protocols;
  unsigned int redir_protocols;
  unsigned int mime_options;      /* Mime option flags. */

#ifndef CURL_DISABLE_RTSP
  void *rtp_out;     /* write RTP to this if non-NULL */
  /* Common RTSP header options */
  Curl_RtspReq rtspreq; /* RTSP request type */
  long rtspversion; /* like httpversion, for RTSP */
#endif
#ifndef CURL_DISABLE_FTP
  curl_chunk_bgn_callback chunk_bgn; /* called before part of transfer
                                        starts */
  curl_chunk_end_callback chunk_end; /* called after part transferring
                                        stopped */
  curl_fnmatch_callback fnmatch; /* callback to decide which file corresponds







<
<

>
>
|







|
|








|
|
|
|

>
|
|
|
>








|
<











|
|






<







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
#ifndef CURL_DISABLE_TELNET
  struct curl_slist *telnet_options; /* linked list of telnet options */
#endif
  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 */


  time_t timevalue;       /* what time to compare with */
  unsigned char timecondition; /* kind of time comparison: curl_TimeCond */
  unsigned char proxytype; /* what kind of proxy: curl_proxytype */
  unsigned char method;   /* what kind of HTTP request: Curl_HttpReq */
  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 */
  int dns_cache_timeout; /* DNS cache timeout (seconds) */
  unsigned int buffer_size;      /* size of receive buffer to use */
  unsigned int upload_buffer_size; /* size of upload buffer to use,
                                      keep it >= CURL_MAX_WRITE_SIZE */
  void *private_data; /* application-private data */
  struct curl_slist *http200aliases; /* linked list of aliases for http200 */
  unsigned char ipver; /* the CURL_IPRESOLVE_* defines in the public header
                          file 0 - whatever, 1 - v2, 2 - v6 */
  curl_off_t max_filesize; /* Maximum file size to download */
#ifndef CURL_DISABLE_FTP
  unsigned char ftp_filemethod; /* how to get to a file: curl_ftpfile  */
  unsigned char ftpsslauth; /* what AUTH XXX to try: curl_ftpauth */
  unsigned char ftp_ccc;   /* FTP CCC options: curl_ftpccc */
  unsigned int accepttimeout;   /* in milliseconds, 0 means no timeout */
#endif
  /* Desppie the name ftp_create_missing_dirs is for FTP(S) and SFTP
     1 - create directories that don't exist
     2 - the same but also allow MKD to fail once
  */
  unsigned char ftp_create_missing_dirs;
#ifdef USE_LIBSSH2
  curl_sshhostkeycallback ssh_hostkeyfunc; /* hostkey check callback */
  void *ssh_hostkeyfunc_userp;         /* custom pointer to callback */
#endif

  curl_sshkeycallback ssh_keyfunc; /* key matching callback */
  void *ssh_keyfunc_userp;         /* custom pointer to callback */
#ifndef CURL_DISABLE_NETRC
  unsigned char use_netrc;        /* enum CURL_NETRC_OPTION values  */

#endif
  curl_usessl use_ssl;   /* if AUTH TLS is to be attempted etc, for FTP or
                            IMAP or POP3 or others! */
  unsigned int new_file_perms;      /* when creating remote files */
  unsigned int new_directory_perms; /* when creating remote dirs */
  int ssh_auth_types;    /* allowed SSH auth types */
  char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
  struct curl_blob *blobs[BLOB_LAST];
#ifdef ENABLE_IPV6
  unsigned int scope_id;  /* Scope id for IPv6 */
#endif
  curl_off_t allowed_protocols;
  curl_off_t redir_protocols;
  unsigned int mime_options;      /* Mime option flags. */

#ifndef CURL_DISABLE_RTSP
  void *rtp_out;     /* write RTP to this if non-NULL */
  /* Common RTSP header options */
  Curl_RtspReq rtspreq; /* RTSP request type */

#endif
#ifndef CURL_DISABLE_FTP
  curl_chunk_bgn_callback chunk_bgn; /* called before part of transfer
                                        starts */
  curl_chunk_end_callback chunk_end; /* called after part transferring
                                        stopped */
  curl_fnmatch_callback fnmatch; /* callback to decide which file corresponds
Changes to jni/curl/lib/vauth/digest.c.
45
46
47
48
49
50
51









52
53
54
55
56
57
58
#include "curl_printf.h"
#include "rand.h"

/* The last #include files should be: */
#include "curl_memory.h"
#include "memdebug.h"










#if !defined(USE_WINDOWS_SSPI)
#define DIGEST_QOP_VALUE_AUTH             (1 << 0)
#define DIGEST_QOP_VALUE_AUTH_INT         (1 << 1)
#define DIGEST_QOP_VALUE_AUTH_CONF        (1 << 2)

#define DIGEST_QOP_VALUE_STRING_AUTH      "auth"
#define DIGEST_QOP_VALUE_STRING_AUTH_INT  "auth-int"







>
>
>
>
>
>
>
>
>







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "curl_printf.h"
#include "rand.h"

/* The last #include files should be: */
#include "curl_memory.h"
#include "memdebug.h"

#define SESSION_ALGO 1 /* for algos with this bit set */

#define ALGO_MD5 0
#define ALGO_MD5SESS (ALGO_MD5 | SESSION_ALGO)
#define ALGO_SHA256 2
#define ALGO_SHA256SESS (ALGO_SHA256 | SESSION_ALGO)
#define ALGO_SHA512_256 4
#define ALGO_SHA512_256SESS (ALGO_SHA512_256 | SESSION_ALGO)

#if !defined(USE_WINDOWS_SSPI)
#define DIGEST_QOP_VALUE_AUTH             (1 << 0)
#define DIGEST_QOP_VALUE_AUTH_INT         (1 << 1)
#define DIGEST_QOP_VALUE_AUTH_CONF        (1 << 2)

#define DIGEST_QOP_VALUE_STRING_AUTH      "auth"
#define DIGEST_QOP_VALUE_STRING_AUTH_INT  "auth-int"
547
548
549
550
551
552
553



554
555
556
557
558
559
560
           clone of the buffer since strtok_r() ruins it */
        tmp = strdup(content);
        if(!tmp)
          return CURLE_OUT_OF_MEMORY;

        token = strtok_r(tmp, ",", &tok_buf);
        while(token) {



          if(strcasecompare(token, DIGEST_QOP_VALUE_STRING_AUTH)) {
            foundAuth = TRUE;
          }
          else if(strcasecompare(token, DIGEST_QOP_VALUE_STRING_AUTH_INT)) {
            foundAuthInt = TRUE;
          }
          token = strtok_r(NULL, ",", &tok_buf);







>
>
>







556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
           clone of the buffer since strtok_r() ruins it */
        tmp = strdup(content);
        if(!tmp)
          return CURLE_OUT_OF_MEMORY;

        token = strtok_r(tmp, ",", &tok_buf);
        while(token) {
          /* Pass additional spaces here */
          while(*token && ISSPACE(*token))
            token++;
          if(strcasecompare(token, DIGEST_QOP_VALUE_STRING_AUTH)) {
            foundAuth = TRUE;
          }
          else if(strcasecompare(token, DIGEST_QOP_VALUE_STRING_AUTH_INT)) {
            foundAuthInt = TRUE;
          }
          token = strtok_r(NULL, ",", &tok_buf);
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
      else if(strcasecompare(value, "algorithm")) {
        free(digest->algorithm);
        digest->algorithm = strdup(content);
        if(!digest->algorithm)
          return CURLE_OUT_OF_MEMORY;

        if(strcasecompare(content, "MD5-sess"))
          digest->algo = CURLDIGESTALGO_MD5SESS;
        else if(strcasecompare(content, "MD5"))
          digest->algo = CURLDIGESTALGO_MD5;
        else if(strcasecompare(content, "SHA-256"))
          digest->algo = CURLDIGESTALGO_SHA256;
        else if(strcasecompare(content, "SHA-256-SESS"))
          digest->algo = CURLDIGESTALGO_SHA256SESS;
        else if(strcasecompare(content, "SHA-512-256"))
          digest->algo = CURLDIGESTALGO_SHA512_256;
        else if(strcasecompare(content, "SHA-512-256-SESS"))
          digest->algo = CURLDIGESTALGO_SHA512_256SESS;
        else
          return CURLE_BAD_CONTENT_ENCODING;
      }
      else if(strcasecompare(value, "userhash")) {
        if(strcasecompare(content, "true")) {
          digest->userhash = TRUE;
        }







|

|

|

|

|

|







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
      else if(strcasecompare(value, "algorithm")) {
        free(digest->algorithm);
        digest->algorithm = strdup(content);
        if(!digest->algorithm)
          return CURLE_OUT_OF_MEMORY;

        if(strcasecompare(content, "MD5-sess"))
          digest->algo = ALGO_MD5SESS;
        else if(strcasecompare(content, "MD5"))
          digest->algo = ALGO_MD5;
        else if(strcasecompare(content, "SHA-256"))
          digest->algo = ALGO_SHA256;
        else if(strcasecompare(content, "SHA-256-SESS"))
          digest->algo = ALGO_SHA256SESS;
        else if(strcasecompare(content, "SHA-512-256"))
          digest->algo = ALGO_SHA512_256;
        else if(strcasecompare(content, "SHA-512-256-SESS"))
          digest->algo = ALGO_SHA512_256SESS;
        else
          return CURLE_BAD_CONTENT_ENCODING;
      }
      else if(strcasecompare(value, "userhash")) {
        if(strcasecompare(content, "true")) {
          digest->userhash = TRUE;
        }
623
624
625
626
627
628
629




630
631
632
633
634
635
636
     request */
  if(before && !digest->stale)
    return CURLE_BAD_CONTENT_ENCODING;

  /* We got this header without a nonce, that's a bad Digest line! */
  if(!digest->nonce)
    return CURLE_BAD_CONTENT_ENCODING;





  return CURLE_OK;
}

/*
 * auth_create_digest_http_message()
 *







>
>
>
>







635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
     request */
  if(before && !digest->stale)
    return CURLE_BAD_CONTENT_ENCODING;

  /* We got this header without a nonce, that's a bad Digest line! */
  if(!digest->nonce)
    return CURLE_BAD_CONTENT_ENCODING;

  /* "<algo>-sess" protocol versions require "auth" or "auth-int" qop */
  if(!digest->qop && (digest->algo & SESSION_ALGO))
    return CURLE_BAD_CONTENT_ENCODING;

  return CURLE_OK;
}

/*
 * auth_create_digest_http_message()
 *
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
  if(!hashthis)
    return CURLE_OUT_OF_MEMORY;

  hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
  free(hashthis);
  convert_to_ascii(hashbuf, ha1);

  if(digest->algo == CURLDIGESTALGO_MD5SESS ||
     digest->algo == CURLDIGESTALGO_SHA256SESS ||
     digest->algo == CURLDIGESTALGO_SHA512_256SESS) {
    /* nonce and cnonce are OUTSIDE the hash */
    tmp = aprintf("%s:%s:%s", ha1, digest->nonce, digest->cnonce);
    if(!tmp)
      return CURLE_OUT_OF_MEMORY;

    hash(hashbuf, (unsigned char *) tmp, strlen(tmp));
    free(tmp);







|
<
<







738
739
740
741
742
743
744
745


746
747
748
749
750
751
752
  if(!hashthis)
    return CURLE_OUT_OF_MEMORY;

  hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
  free(hashthis);
  convert_to_ascii(hashbuf, ha1);

  if(digest->algo & SESSION_ALGO) {


    /* nonce and cnonce are OUTSIDE the hash */
    tmp = aprintf("%s:%s:%s", ha1, digest->nonce, digest->cnonce);
    if(!tmp)
      return CURLE_OUT_OF_MEMORY;

    hash(hashbuf, (unsigned char *) tmp, strlen(tmp));
    free(tmp);
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
                       nonce_quoted,
                       uripath,
                       digest->cnonce,
                       digest->nc,
                       digest->qop,
                       request_digest);

    if(strcasecompare(digest->qop, "auth"))
      digest->nc++; /* The nc (from RFC) has to be a 8 hex digit number 0
                       padded which tells to the server how many times you are
                       using the same nonce in the qop=auth mode */
  }
  else {
    response = aprintf("username=\"%s\", "
                       "realm=\"%s\", "
                       "nonce=\"%s\", "
                       "uri=\"%s\", "
                       "response=\"%s\"",







|
|
<
<







853
854
855
856
857
858
859
860
861


862
863
864
865
866
867
868
                       nonce_quoted,
                       uripath,
                       digest->cnonce,
                       digest->nc,
                       digest->qop,
                       request_digest);

    /* Increment nonce-count to use another nc value for the next request */
    digest->nc++;


  }
  else {
    response = aprintf("username=\"%s\", "
                       "realm=\"%s\", "
                       "nonce=\"%s\", "
                       "uri=\"%s\", "
                       "response=\"%s\"",
871
872
873
874
875
876
877
878
879

880
881
882
883
884
885
886
    char *opaque_quoted;
    /* Append the opaque */
    opaque_quoted = auth_digest_string_quoted(digest->opaque);
    if(!opaque_quoted) {
      free(response);
      return CURLE_OUT_OF_MEMORY;
    }
    tmp = aprintf("%s, opaque=\"%s\"", response, digest->opaque);
    free(response);

    if(!tmp)
      return CURLE_OUT_OF_MEMORY;

    response = tmp;
  }

  if(digest->algorithm) {







|

>







883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
    char *opaque_quoted;
    /* Append the opaque */
    opaque_quoted = auth_digest_string_quoted(digest->opaque);
    if(!opaque_quoted) {
      free(response);
      return CURLE_OUT_OF_MEMORY;
    }
    tmp = aprintf("%s, opaque=\"%s\"", response, opaque_quoted);
    free(response);
    free(opaque_quoted);
    if(!tmp)
      return CURLE_OUT_OF_MEMORY;

    response = tmp;
  }

  if(digest->algorithm) {
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
                                              const char *userp,
                                              const char *passwdp,
                                              const unsigned char *request,
                                              const unsigned char *uripath,
                                              struct digestdata *digest,
                                              char **outptr, size_t *outlen)
{
  switch(digest->algo) {
  case CURLDIGESTALGO_MD5:
  case CURLDIGESTALGO_MD5SESS:
    return auth_create_digest_http_message(data, userp, passwdp,
                                           request, uripath, digest,
                                           outptr, outlen,
                                           auth_digest_md5_to_ascii,
                                           Curl_md5it);

  case CURLDIGESTALGO_SHA256:
  case CURLDIGESTALGO_SHA256SESS:
  case CURLDIGESTALGO_SHA512_256:
  case CURLDIGESTALGO_SHA512_256SESS:
    return auth_create_digest_http_message(data, userp, passwdp,
                                           request, uripath, digest,
                                           outptr, outlen,
                                           auth_digest_sha256_to_ascii,
                                           Curl_sha256it);

  default:
    return CURLE_UNSUPPORTED_PROTOCOL;
  }
}

/*
 * Curl_auth_digest_cleanup()
 *
 * This is used to clean up the digest specific data.
 *







|
<
<





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







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
                                              const char *userp,
                                              const char *passwdp,
                                              const unsigned char *request,
                                              const unsigned char *uripath,
                                              struct digestdata *digest,
                                              char **outptr, size_t *outlen)
{
  if(digest->algo <= ALGO_MD5SESS)


    return auth_create_digest_http_message(data, userp, passwdp,
                                           request, uripath, digest,
                                           outptr, outlen,
                                           auth_digest_md5_to_ascii,
                                           Curl_md5it);




  DEBUGASSERT(digest->algo <= ALGO_SHA512_256SESS);
  return auth_create_digest_http_message(data, userp, passwdp,
                                         request, uripath, digest,
                                         outptr, outlen,
                                         auth_digest_sha256_to_ascii,
                                         Curl_sha256it);




}

/*
 * Curl_auth_digest_cleanup()
 *
 * This is used to clean up the digest specific data.
 *
978
979
980
981
982
983
984
985
986
987
988
989
990
991
  Curl_safefree(digest->cnonce);
  Curl_safefree(digest->realm);
  Curl_safefree(digest->opaque);
  Curl_safefree(digest->qop);
  Curl_safefree(digest->algorithm);

  digest->nc = 0;
  digest->algo = CURLDIGESTALGO_MD5; /* default algorithm */
  digest->stale = FALSE; /* default means normal, not stale */
  digest->userhash = FALSE;
}
#endif  /* !USE_WINDOWS_SSPI */

#endif  /* CURL_DISABLE_CRYPTO_AUTH */







|






981
982
983
984
985
986
987
988
989
990
991
992
993
994
  Curl_safefree(digest->cnonce);
  Curl_safefree(digest->realm);
  Curl_safefree(digest->opaque);
  Curl_safefree(digest->qop);
  Curl_safefree(digest->algorithm);

  digest->nc = 0;
  digest->algo = ALGO_MD5; /* default algorithm */
  digest->stale = FALSE; /* default means normal, not stale */
  digest->userhash = FALSE;
}
#endif  /* !USE_WINDOWS_SSPI */

#endif  /* CURL_DISABLE_CRYPTO_AUTH */
Changes to jni/curl/lib/vauth/digest.h.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <curl/curl.h>

#if !defined(CURL_DISABLE_CRYPTO_AUTH)

#define DIGEST_MAX_VALUE_LENGTH           256
#define DIGEST_MAX_CONTENT_LENGTH         1024

enum {
  CURLDIGESTALGO_MD5,
  CURLDIGESTALGO_MD5SESS,
  CURLDIGESTALGO_SHA256,
  CURLDIGESTALGO_SHA256SESS,
  CURLDIGESTALGO_SHA512_256,
  CURLDIGESTALGO_SHA512_256SESS
};

/* This is used to extract the realm from a challenge message */
bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
                               const char **endptr);

#endif

#endif /* HEADER_CURL_DIGEST_H */







<
<
<
<
<
<
<
<
<







27
28
29
30
31
32
33









34
35
36
37
38
39
40
#include <curl/curl.h>

#if !defined(CURL_DISABLE_CRYPTO_AUTH)

#define DIGEST_MAX_VALUE_LENGTH           256
#define DIGEST_MAX_CONTENT_LENGTH         1024










/* This is used to extract the realm from a challenge message */
bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
                               const char **endptr);

#endif

#endif /* HEADER_CURL_DIGEST_H */
Changes to jni/curl/lib/vquic/msh3.c.
23
24
25
26
27
28
29
30
31
32
33
34
35
36





37
38
39
40
41
42
43
 ***************************************************************************/

#include "curl_setup.h"

#ifdef USE_MSH3

#include "urldata.h"
#include "curl_printf.h"
#include "timeval.h"
#include "multiif.h"
#include "sendf.h"
#include "connect.h"
#include "h2h3.h"
#include "msh3.h"






/* #define DEBUG_HTTP3 1 */
#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } while(0)
#endif







<






>
>
>
>
>







23
24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 ***************************************************************************/

#include "curl_setup.h"

#ifdef USE_MSH3

#include "urldata.h"

#include "timeval.h"
#include "multiif.h"
#include "sendf.h"
#include "connect.h"
#include "h2h3.h"
#include "msh3.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* #define DEBUG_HTTP3 1 */
#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } while(0)
#endif
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
  (void)data;
  (void)conn;
  (void)checks_to_perform;
  H3BUGF(infof(data, "msh3_conncheck"));
  return CONNRESULT_NONE;
}

static void msh3_cleanup(struct quicsocket *qs, struct HTTP *stream)
{
  if(stream && stream->recv_buf) {
    free(stream->recv_buf);
    stream->recv_buf = ZERO_NULL;
    msh3_lock_uninitialize(&stream->recv_lock);
  }
  if(qs->conn) {
    MsH3ConnectionClose(qs->conn);
    qs->conn = ZERO_NULL;
  }
  if(qs->api) {
    MsH3ApiClose(qs->api);
    qs->api = ZERO_NULL;
  }
}

static CURLcode msh3_disconnect(struct Curl_easy *data,
                                struct connectdata *conn, bool dead_connection)
{

  (void)dead_connection;
  H3BUGF(infof(data, "disconnecting (msh3)"));
  msh3_cleanup(conn->quic, data->req.p.http);
  return CURLE_OK;
}

void Curl_quic_disconnect(struct Curl_easy *data, struct connectdata *conn,
                          int tempindex)
{

  if(conn->transport == TRNSPRT_QUIC) {
    H3BUGF(infof(data, "disconnecting (curl)"));
    msh3_cleanup(&conn->hequic[tempindex], data->req.p.http);
  }
}

/* Requires stream->recv_lock to be held */
static bool msh3request_ensure_room(struct HTTP *stream, size_t len)
{
  uint8_t *new_recv_buf;







|

<
<
<
<
<













>


|






>

|
|







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
  (void)data;
  (void)conn;
  (void)checks_to_perform;
  H3BUGF(infof(data, "msh3_conncheck"));
  return CONNRESULT_NONE;
}

static void disconnect(struct quicsocket *qs)
{





  if(qs->conn) {
    MsH3ConnectionClose(qs->conn);
    qs->conn = ZERO_NULL;
  }
  if(qs->api) {
    MsH3ApiClose(qs->api);
    qs->api = ZERO_NULL;
  }
}

static CURLcode msh3_disconnect(struct Curl_easy *data,
                                struct connectdata *conn, bool dead_connection)
{
  (void)data;
  (void)dead_connection;
  H3BUGF(infof(data, "disconnecting (msh3)"));
  disconnect(conn->quic);
  return CURLE_OK;
}

void Curl_quic_disconnect(struct Curl_easy *data, struct connectdata *conn,
                          int tempindex)
{
  (void)data;
  if(conn->transport == TRNSPRT_QUIC) {
    H3BUGF(infof(data, "disconnecting QUIC index %u", tempindex));
    disconnect(&conn->hequic[tempindex]);
  }
}

/* Requires stream->recv_lock to be held */
static bool msh3request_ensure_room(struct HTTP *stream, size_t len)
{
  uint8_t *new_recv_buf;
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
static void MSH3_CALL msh3_header_received(MSH3_REQUEST *Request,
                                           void *IfContext,
                                           const MSH3_HEADER *Header)
{
  struct HTTP *stream = IfContext;
  size_t total_len;
  (void)Request;
  H3BUGF(printf("* msh3_header_received\n"));

  if(stream->recv_header_complete) {
    H3BUGF(printf("* ignoring header after data\n"));
    return;
  }

  msh3_lock_acquire(&stream->recv_lock);







<







285
286
287
288
289
290
291

292
293
294
295
296
297
298
static void MSH3_CALL msh3_header_received(MSH3_REQUEST *Request,
                                           void *IfContext,
                                           const MSH3_HEADER *Header)
{
  struct HTTP *stream = IfContext;
  size_t total_len;
  (void)Request;


  if(stream->recv_header_complete) {
    H3BUGF(printf("* ignoring header after data\n"));
    return;
  }

  msh3_lock_acquire(&stream->recv_lock);
486
487
488
489
490
491
492
493
494
495










496
497
498
499
500
501
502
  }

  return CURLE_OK;
}

void Curl_quic_done(struct Curl_easy *data, bool premature)
{
  (void)data;
  (void)premature;
  H3BUGF(infof(data, "Curl_quic_done"));










}

bool Curl_quic_data_pending(const struct Curl_easy *data)
{
  struct HTTP *stream = data->req.p.http;
  H3BUGF(infof((struct Curl_easy *)data, "Curl_quic_data_pending"));
  return stream->recv_header_len || stream->recv_data_len;







|


>
>
>
>
>
>
>
>
>
>







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
  }

  return CURLE_OK;
}

void Curl_quic_done(struct Curl_easy *data, bool premature)
{
  struct HTTP *stream = data->req.p.http;
  (void)premature;
  H3BUGF(infof(data, "Curl_quic_done"));
  if(stream) {
    if(stream->recv_buf) {
      Curl_safefree(stream->recv_buf);
      msh3_lock_uninitialize(&stream->recv_lock);
    }
    if(stream->req) {
      MsH3RequestClose(stream->req);
      stream->req = ZERO_NULL;
    }
  }
}

bool Curl_quic_data_pending(const struct Curl_easy *data)
{
  struct HTTP *stream = data->req.p.http;
  H3BUGF(infof((struct Curl_easy *)data, "Curl_quic_data_pending"));
  return stream->recv_header_len || stream->recv_data_len;
Changes to jni/curl/lib/vquic/ngtcp2.c.
34
35
36
37
38
39
40



41
42
43
44
45
46
47
#else
#include <ngtcp2/ngtcp2_crypto_openssl.h>
#endif
#include "vtls/openssl.h"
#elif defined(USE_GNUTLS)
#include <ngtcp2/ngtcp2_crypto_gnutls.h>
#include "vtls/gtls.h"



#endif
#include "urldata.h"
#include "sendf.h"
#include "strdup.h"
#include "rand.h"
#include "ngtcp2.h"
#include "multiif.h"







>
>
>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#else
#include <ngtcp2/ngtcp2_crypto_openssl.h>
#endif
#include "vtls/openssl.h"
#elif defined(USE_GNUTLS)
#include <ngtcp2/ngtcp2_crypto_gnutls.h>
#include "vtls/gtls.h"
#elif defined(USE_WOLFSSL)
#include <ngtcp2/ngtcp2_crypto_wolfssl.h>
#include "vtls/wolfssl.h"
#endif
#include "urldata.h"
#include "sendf.h"
#include "strdup.h"
#include "rand.h"
#include "ngtcp2.h"
#include "multiif.h"
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
#define QUIC_GROUPS "P-256:X25519:P-384:P-521"
#elif defined(USE_GNUTLS)
#define QUIC_PRIORITY \
  "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+AES-256-GCM:" \
  "+CHACHA20-POLY1305:+AES-128-CCM:-GROUP-ALL:+GROUP-SECP256R1:" \
  "+GROUP-X25519:+GROUP-SECP384R1:+GROUP-SECP521R1:" \
  "%DISABLE_TLS13_COMPAT_MODE"





#endif

/* ngtcp2 default congestion controller does not perform pacing. Limit
   the maximum packet burst to MAX_PKT_BURST packets. */
#define MAX_PKT_BURST 10

static CURLcode ng_process_ingress(struct Curl_easy *data,
                                   curl_socket_t sockfd,
                                   struct quicsocket *qs);
static CURLcode ng_flush_egress(struct Curl_easy *data, int sockfd,
                                struct quicsocket *qs);
static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
                                   size_t datalen, void *user_data,
                                   void *stream_user_data);

static ngtcp2_conn *get_conn(ngtcp2_crypto_conn_ref *conn_ref)
{
  struct quicsocket *qs = conn_ref->user_data;
  return qs->qconn;
}







>
>
>
>
>












|







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
#define QUIC_GROUPS "P-256:X25519:P-384:P-521"
#elif defined(USE_GNUTLS)
#define QUIC_PRIORITY \
  "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+AES-256-GCM:" \
  "+CHACHA20-POLY1305:+AES-128-CCM:-GROUP-ALL:+GROUP-SECP256R1:" \
  "+GROUP-X25519:+GROUP-SECP384R1:+GROUP-SECP521R1:" \
  "%DISABLE_TLS13_COMPAT_MODE"
#elif defined(USE_WOLFSSL)
#define QUIC_CIPHERS                                                          \
  "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_"               \
  "POLY1305_SHA256:TLS_AES_128_CCM_SHA256"
#define QUIC_GROUPS "P-256:P-384:P-521"
#endif

/* ngtcp2 default congestion controller does not perform pacing. Limit
   the maximum packet burst to MAX_PKT_BURST packets. */
#define MAX_PKT_BURST 10

static CURLcode ng_process_ingress(struct Curl_easy *data,
                                   curl_socket_t sockfd,
                                   struct quicsocket *qs);
static CURLcode ng_flush_egress(struct Curl_easy *data, int sockfd,
                                struct quicsocket *qs);
static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
                                   uint64_t datalen, void *user_data,
                                   void *stream_user_data);

static ngtcp2_conn *get_conn(ngtcp2_crypto_conn_ref *conn_ref)
{
  struct quicsocket *qs = conn_ref->user_data;
  return qs->qconn;
}
198
199
200
201
202
203
204








205
206
207
208
209
210
211
  if(crandom.size != 32) {
    return -1;
  }

  Curl_tls_keylog_write(label, crandom.data, secret->data, secret->size);
  return 0;
}








#endif

static int init_ngh3_conn(struct quicsocket *qs);

#ifdef USE_OPENSSL
static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
{







>
>
>
>
>
>
>
>







206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
  if(crandom.size != 32) {
    return -1;
  }

  Curl_tls_keylog_write(label, crandom.data, secret->data, secret->size);
  return 0;
}
#elif defined(USE_WOLFSSL)
#if defined(HAVE_SECRET_CALLBACK)
static void keylog_callback(const WOLFSSL *ssl, const char *line)
{
  (void)ssl;
  Curl_tls_keylog_write_line(line);
}
#endif
#endif

static int init_ngh3_conn(struct quicsocket *qs);

#ifdef USE_OPENSSL
static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
{
391
392
393
394
395
396
397


































398
































































399
400
401
402
403
404
405

  gnutls_alpn_set_protocols(qs->ssl, alpn, 2, GNUTLS_ALPN_MANDATORY);

  /* set SNI */
  gnutls_server_name_set(qs->ssl, GNUTLS_NAME_DNS, hostname, strlen(hostname));
  return 0;
}


































#endif

































































static int cb_handshake_completed(ngtcp2_conn *tconn, void *user_data)
{
  (void)user_data;
  (void)tconn;
  return 0;
}







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

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







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

  gnutls_alpn_set_protocols(qs->ssl, alpn, 2, GNUTLS_ALPN_MANDATORY);

  /* set SNI */
  gnutls_server_name_set(qs->ssl, GNUTLS_NAME_DNS, hostname, strlen(hostname));
  return 0;
}
#elif defined(USE_WOLFSSL)

static WOLFSSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
{
  struct connectdata *conn = data->conn;
  WOLFSSL_CTX *ssl_ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method());

  if(ngtcp2_crypto_wolfssl_configure_client_context(ssl_ctx) != 0) {
    failf(data, "ngtcp2_crypto_wolfssl_configure_client_context failed");
    return NULL;
  }

  wolfSSL_CTX_set_default_verify_paths(ssl_ctx);

  if(wolfSSL_CTX_set_cipher_list(ssl_ctx, QUIC_CIPHERS) != 1) {
    char error_buffer[256];
    ERR_error_string_n(ERR_get_error(), error_buffer, sizeof(error_buffer));
    failf(data, "SSL_CTX_set_ciphersuites: %s", error_buffer);
    return NULL;
  }

  if(wolfSSL_CTX_set1_groups_list(ssl_ctx, (char *)QUIC_GROUPS) != 1) {
    failf(data, "SSL_CTX_set1_groups_list failed");
    return NULL;
  }

  /* Open the file if a TLS or QUIC backend has not done this before. */
  Curl_tls_keylog_open();
  if(Curl_tls_keylog_enabled()) {
#if defined(HAVE_SECRET_CALLBACK)
    wolfSSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
#else
    failf(data, "wolfSSL was built without keylog callback");
    return NULL;
#endif
  }

  if(conn->ssl_config.verifypeer) {
    const char * const ssl_cafile = conn->ssl_config.CAfile;
    const char * const ssl_capath = conn->ssl_config.CApath;

    if(ssl_cafile || ssl_capath) {
      wolfSSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
      /* tell wolfSSL where to find CA certificates that are used to verify
         the server's certificate. */
      if(!wolfSSL_CTX_load_verify_locations(ssl_ctx, ssl_cafile, ssl_capath)) {
        /* Fail if we insist on successfully verifying the server. */
        failf(data, "error setting certificate verify locations:"
              "  CAfile: %s CApath: %s",
              ssl_cafile ? ssl_cafile : "none",
              ssl_capath ? ssl_capath : "none");
        return NULL;
      }
      infof(data, " CAfile: %s", ssl_cafile ? ssl_cafile : "none");
      infof(data, " CApath: %s", ssl_capath ? ssl_capath : "none");
    }
#ifdef CURL_CA_FALLBACK
    else {
      /* verifying the peer without any CA certificates won't work so
         use wolfssl's built-in default as fallback */
      wolfSSL_CTX_set_default_verify_paths(ssl_ctx);
    }
#endif
  }
  else {
    wolfSSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_NONE, NULL);
  }

  return ssl_ctx;
}

/** SSL callbacks ***/

static int quic_init_ssl(struct quicsocket *qs)
{
  const uint8_t *alpn = NULL;
  size_t alpnlen = 0;
  /* this will need some attention when HTTPS proxy over QUIC get fixed */
  const char * const hostname = qs->conn->host.name;

  DEBUGASSERT(!qs->ssl);
  qs->ssl = SSL_new(qs->sslctx);

  wolfSSL_set_app_data(qs->ssl, &qs->conn_ref);
  wolfSSL_set_connect_state(qs->ssl);
  wolfSSL_set_quic_use_legacy_codepoint(qs->ssl, 0);

  alpn = (const uint8_t *)H3_ALPN_H3_29 H3_ALPN_H3;
  alpnlen = sizeof(H3_ALPN_H3_29) - 1 + sizeof(H3_ALPN_H3) - 1;
  if(alpn)
    wolfSSL_set_alpn_protos(qs->ssl, alpn, (int)alpnlen);

  /* set SNI */
  wolfSSL_UseSNI(qs->ssl, WOLFSSL_SNI_HOST_NAME,
                 hostname, (unsigned short)strlen(hostname));

  return 0;
}
#endif /* defined(USE_WOLFSSL) */

static int cb_handshake_completed(ngtcp2_conn *tconn, void *user_data)
{
  (void)user_data;
  (void)tconn;
  return 0;
}
687
688
689
690
691
692
693




694
695
696
697
698
699
700
  qs->sslctx = quic_ssl_ctx(data);
  if(!qs->sslctx)
    return CURLE_QUIC_CONNECT_ERROR;

  result = quic_set_client_cert(data, qs);
  if(result)
    return result;




#endif

  if(quic_init_ssl(qs))
    return CURLE_QUIC_CONNECT_ERROR;

  qs->dcid.datalen = NGTCP2_MAX_CIDLEN;
  result = Curl_rand(data, qs->dcid.data, NGTCP2_MAX_CIDLEN);







>
>
>
>







801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
  qs->sslctx = quic_ssl_ctx(data);
  if(!qs->sslctx)
    return CURLE_QUIC_CONNECT_ERROR;

  result = quic_set_client_cert(data, qs);
  if(result)
    return result;
#elif defined(USE_WOLFSSL)
  qs->sslctx = quic_ssl_ctx(data);
  if(!qs->sslctx)
    return CURLE_QUIC_CONNECT_ERROR;
#endif

  if(quic_init_ssl(qs))
    return CURLE_QUIC_CONNECT_ERROR;

  qs->dcid.datalen = NGTCP2_MAX_CIDLEN;
  result = Curl_rand(data, qs->dcid.data, NGTCP2_MAX_CIDLEN);
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->qlogfd = -1;
  }
  if(qs->ssl)
#ifdef USE_OPENSSL
    SSL_free(qs->ssl);
#elif defined(USE_GNUTLS)
    gnutls_deinit(qs->ssl);


#endif
  qs->ssl = NULL;
#ifdef USE_GNUTLS
  if(qs->cred) {
    gnutls_certificate_free_credentials(qs->cred);
    qs->cred = NULL;
  }
#endif
  free(qs->pktbuf);
  nghttp3_conn_del(qs->h3conn);
  ngtcp2_conn_del(qs->qconn);
#ifdef USE_OPENSSL
  SSL_CTX_free(qs->sslctx);


#endif
}

void Curl_quic_disconnect(struct Curl_easy *data,
                          struct connectdata *conn,
                          int tempindex)
{







>
>













>
>







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
    qs->qlogfd = -1;
  }
  if(qs->ssl)
#ifdef USE_OPENSSL
    SSL_free(qs->ssl);
#elif defined(USE_GNUTLS)
    gnutls_deinit(qs->ssl);
#elif defined(USE_WOLFSSL)
    wolfSSL_free(qs->ssl);
#endif
  qs->ssl = NULL;
#ifdef USE_GNUTLS
  if(qs->cred) {
    gnutls_certificate_free_credentials(qs->cred);
    qs->cred = NULL;
  }
#endif
  free(qs->pktbuf);
  nghttp3_conn_del(qs->h3conn);
  ngtcp2_conn_del(qs->qconn);
#ifdef USE_OPENSSL
  SSL_CTX_free(qs->sslctx);
#elif defined(USE_WOLFSSL)
  wolfSSL_CTX_free(qs->sslctx);
#endif
}

void Curl_quic_disconnect(struct Curl_easy *data,
                          struct connectdata *conn,
                          int tempindex)
{
895
896
897
898
899
900
901

902
903
904
905
906
907
908
  (void)conn;
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  H3BUGF(infof(data, "cb_h3_stream_close CALLED"));

  stream->closed = TRUE;

  Curl_expire(data, 0, EXPIRE_QUIC);
  /* make sure that ngh3_stream_recv is called again to complete the transfer
     even if there are no more packets to be received from the server. */
  data->state.drain = 1;
  return 0;
}








>







1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
  (void)conn;
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  H3BUGF(infof(data, "cb_h3_stream_close CALLED"));

  stream->closed = TRUE;
  stream->error3 = app_error_code;
  Curl_expire(data, 0, EXPIRE_QUIC);
  /* make sure that ngh3_stream_recv is called again to complete the transfer
     even if there are no more packets to be received from the server. */
  data->state.drain = 1;
  return 0;
}

1006
1007
1008
1009
1010
1011
1012




1013
1014
1015
1016
1017
1018
1019
  /* add a CRLF only if we've received some headers */
  if(stream->firstheader) {
    result = write_data(stream, "\r\n", 2);
    if(result) {
      return -1;
    }
  }




  return 0;
}

static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
                             int32_t token, nghttp3_rcbuf *name,
                             nghttp3_rcbuf *value, uint8_t flags,
                             void *user_data, void *stream_user_data)







>
>
>
>







1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
  /* add a CRLF only if we've received some headers */
  if(stream->firstheader) {
    result = write_data(stream, "\r\n", 2);
    if(result) {
      return -1;
    }
  }

  if(stream->status_code / 100 != 1) {
    stream->bodystarted = TRUE;
  }
  return 0;
}

static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
                             int32_t token, nghttp3_rcbuf *name,
                             nghttp3_rcbuf *value, uint8_t flags,
                             void *user_data, void *stream_user_data)
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037

1038
1039
1040
1041
1042
1043
1044
  (void)token;
  (void)flags;
  (void)user_data;

  if(token == NGHTTP3_QPACK_TOKEN__STATUS) {
    char line[14]; /* status line is always 13 characters long */
    size_t ncopy;
    int status = decode_status_code(h3val.base, h3val.len);
    DEBUGASSERT(status != -1);
    ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n", status);

    result = write_data(stream, line, ncopy);
    if(result) {
      return -1;
    }
  }
  else {
    /* store as a HTTP1-style header */







|
|
|
>







1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
  (void)token;
  (void)flags;
  (void)user_data;

  if(token == NGHTTP3_QPACK_TOKEN__STATUS) {
    char line[14]; /* status line is always 13 characters long */
    size_t ncopy;
    stream->status_code = decode_status_code(h3val.base, h3val.len);
    DEBUGASSERT(stream->status_code != -1);
    ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n",
                      stream->status_code);
    result = write_data(stream, line, ncopy);
    if(result) {
      return -1;
    }
  }
  else {
    /* store as a HTTP1-style header */
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
    }
  }

  stream->firstheader = TRUE;
  return 0;
}

static int cb_h3_send_stop_sending(nghttp3_conn *conn, int64_t stream_id,
                                   uint64_t app_error_code,
                                   void *user_data,
                                   void *stream_user_data)
{


  (void)conn;
  (void)stream_id;










  (void)app_error_code;



  (void)user_data;
  (void)stream_user_data;






  return 0;
}

static nghttp3_callbacks ngh3_callbacks = {
  cb_h3_acked_stream_data, /* acked_stream_data */
  cb_h3_stream_close,
  cb_h3_recv_data,
  cb_h3_deferred_consume,
  NULL, /* begin_headers */
  cb_h3_recv_header,
  cb_h3_end_headers,
  NULL, /* begin_trailers */
  cb_h3_recv_header,
  NULL, /* end_trailers */
  cb_h3_send_stop_sending,
  NULL, /* end_stream */
  NULL, /* reset_stream */
  NULL /* shutdown */
};

static int init_ngh3_conn(struct quicsocket *qs)
{
  CURLcode result;
  int rc;







|
|
<
|

>
>

|
>
>
>
>
>
>
>
>
>
>
|
>
>
>
|

>
>
>
>
>
>














|

|







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
    }
  }

  stream->firstheader = TRUE;
  return 0;
}

static int cb_h3_stop_sending(nghttp3_conn *conn, int64_t stream_id,
                              uint64_t app_error_code, void *user_data,

                              void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  int rv;
  (void)conn;
  (void)stream_user_data;

  rv = ngtcp2_conn_shutdown_stream_read(qs->qconn, stream_id, app_error_code);
  if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
    return NGTCP2_ERR_CALLBACK_FAILURE;
  }

  return 0;
}

static int cb_h3_reset_stream(nghttp3_conn *conn, int64_t stream_id,
                              uint64_t app_error_code, void *user_data,
                              void *stream_user_data) {
  struct quicsocket *qs = user_data;
  int rv;
  (void)conn;
  (void)stream_user_data;

  rv = ngtcp2_conn_shutdown_stream_write(qs->qconn, stream_id, app_error_code);
  if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
    return NGTCP2_ERR_CALLBACK_FAILURE;
  }

  return 0;
}

static nghttp3_callbacks ngh3_callbacks = {
  cb_h3_acked_stream_data, /* acked_stream_data */
  cb_h3_stream_close,
  cb_h3_recv_data,
  cb_h3_deferred_consume,
  NULL, /* begin_headers */
  cb_h3_recv_header,
  cb_h3_end_headers,
  NULL, /* begin_trailers */
  cb_h3_recv_header,
  NULL, /* end_trailers */
  cb_h3_stop_sending,
  NULL, /* end_stream */
  cb_h3_reset_stream,
  NULL /* shutdown */
};

static int init_ngh3_conn(struct quicsocket *qs)
{
  CURLcode result;
  int rc;
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
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    }
    return memlen;
  }

  if(stream->closed) {


















    *curlcode = CURLE_OK;
    return 0;
  }

  infof(data, "ngh3_stream_recv returns 0 bytes and EAGAIN");
  *curlcode = CURLE_AGAIN;
  return -1;
}

/* 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) {







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











|







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
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    }
    return memlen;
  }

  if(stream->closed) {
    if(stream->error3 != NGHTTP3_H3_NO_ERROR) {
      failf(data,
            "HTTP/3 stream %" PRId64 " was not closed cleanly: (err %" PRIu64
            ")",
            stream->stream3_id, stream->error3);
      *curlcode = CURLE_HTTP3;
      return -1;
    }

    if(!stream->bodystarted) {
      failf(data,
            "HTTP/3 stream %" PRId64 " was closed cleanly, but before getting"
            " all response header fields, treated as error",
            stream->stream3_id);
      *curlcode = CURLE_HTTP3;
      return -1;
    }

    *curlcode = CURLE_OK;
    return 0;
  }

  infof(data, "ngh3_stream_recv returns 0 bytes and EAGAIN");
  *curlcode = CURLE_AGAIN;
  return -1;
}

/* 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,
                                   uint64_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) {
1371
1372
1373
1374
1375
1376
1377

1378
1379
1380
1381
1382
1383
1384
  else {
    unsigned int i;
    for(i = 0; i < nheader; i++) {
      nva[i].name = (unsigned char *)hreq->header[i].name;
      nva[i].namelen = hreq->header[i].namelen;
      nva[i].value = (unsigned char *)hreq->header[i].value;
      nva[i].valuelen = hreq->header[i].valuelen;

    }
  }

  switch(data->state.httpreq) {
  case HTTPREQ_POST:
  case HTTPREQ_POST_FORM:
  case HTTPREQ_POST_MIME:







>







1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
  else {
    unsigned int i;
    for(i = 0; i < nheader; i++) {
      nva[i].name = (unsigned char *)hreq->header[i].name;
      nva[i].namelen = hreq->header[i].namelen;
      nva[i].value = (unsigned char *)hreq->header[i].value;
      nva[i].valuelen = hreq->header[i].valuelen;
      nva[i].flags = NGHTTP3_NV_FLAG_NONE;
    }
  }

  switch(data->state.httpreq) {
  case HTTPREQ_POST:
  case HTTPREQ_POST_FORM:
  case HTTPREQ_POST_MIME:
1438
1439
1440
1441
1442
1443
1444





1445
1446
1447
1448
1449
1450
1451
                                CURLcode *curlcode)
{
  ssize_t sent = 0;
  struct connectdata *conn = data->conn;
  struct quicsocket *qs = conn->quic;
  curl_socket_t sockfd = conn->sock[sockindex];
  struct HTTP *stream = data->req.p.http;






  if(!stream->h3req) {
    CURLcode result = http_request(data, mem, len);
    if(result) {
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    }







>
>
>
>
>







1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
                                CURLcode *curlcode)
{
  ssize_t sent = 0;
  struct connectdata *conn = data->conn;
  struct quicsocket *qs = conn->quic;
  curl_socket_t sockfd = conn->sock[sockindex];
  struct HTTP *stream = data->req.p.http;

  if(stream->closed) {
    *curlcode = CURLE_HTTP3;
    return -1;
  }

  if(!stream->h3req) {
    CURLcode result = http_request(data, mem, len);
    if(result) {
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    }
1515
1516
1517
1518
1519
1520
1521
1522
1523






1524
1525
1526
1527
1528
1529
1530
      return CURLE_PEER_FAILED_VERIFICATION;
    }
    result = Curl_ossl_verifyhost(data, conn, server_cert);
    X509_free(server_cert);
    if(result)
      return result;
    infof(data, "Verified certificate just fine");
#else
    result = Curl_gtls_verifyserver(data, conn, conn->quic->ssl, FIRSTSOCKET);






#endif
  }
  else
    infof(data, "Skipped certificate verification");
  return result;
}








|

>
>
>
>
>
>







1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
      return CURLE_PEER_FAILED_VERIFICATION;
    }
    result = Curl_ossl_verifyhost(data, conn, server_cert);
    X509_free(server_cert);
    if(result)
      return result;
    infof(data, "Verified certificate just fine");
#elif defined(USE_GNUTLS)
    result = Curl_gtls_verifyserver(data, conn, conn->quic->ssl, FIRSTSOCKET);
#elif defined(USE_WOLFSSL)
    char *snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
    if(!snihost ||
       (wolfSSL_check_domain_name(conn->quic->ssl, snihost) == SSL_FAILURE))
      return CURLE_PEER_FAILED_VERIFICATION;
    infof(data, "Verified certificate just fine");
#endif
  }
  else
    infof(data, "Skipped certificate verification");
  return result;
}

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

      break;
    }
    if(outlen < 0) {
      switch(outlen) {
      case NGTCP2_ERR_STREAM_DATA_BLOCKED:
        assert(ndatalen == -1);
        rv = nghttp3_conn_block_stream(qs->h3conn, stream_id);
        if(rv) {
          failf(data, "nghttp3_conn_block_stream returned error: %s\n",
                nghttp3_strerror(rv));
          return CURLE_SEND_ERROR;
        }
        continue;
      case NGTCP2_ERR_STREAM_SHUT_WR:
        assert(ndatalen == -1);
        rv = nghttp3_conn_shutdown_stream_write(qs->h3conn, stream_id);
        if(rv) {
          failf(data,
                "nghttp3_conn_shutdown_stream_write returned error: %s\n",
                nghttp3_strerror(rv));
          return CURLE_SEND_ERROR;
        }
        continue;
      case NGTCP2_ERR_WRITE_MORE:
        assert(ndatalen >= 0);
        rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id, ndatalen);
        if(rv) {
          failf(data, "nghttp3_conn_add_write_offset returned error: %s\n",
                nghttp3_strerror(rv));







|
<
<
<
<
<



|
<
<
<
<
<
<







2063
2064
2065
2066
2067
2068
2069
2070





2071
2072
2073
2074






2075
2076
2077
2078
2079
2080
2081

      break;
    }
    if(outlen < 0) {
      switch(outlen) {
      case NGTCP2_ERR_STREAM_DATA_BLOCKED:
        assert(ndatalen == -1);
        nghttp3_conn_block_stream(qs->h3conn, stream_id);





        continue;
      case NGTCP2_ERR_STREAM_SHUT_WR:
        assert(ndatalen == -1);
        nghttp3_conn_shutdown_stream_write(qs->h3conn, stream_id);






        continue;
      case NGTCP2_ERR_WRITE_MORE:
        assert(ndatalen >= 0);
        rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id, ndatalen);
        if(rv) {
          failf(data, "nghttp3_conn_add_write_offset returned error: %s\n",
                nghttp3_strerror(rv));
Changes to jni/curl/lib/vquic/ngtcp2.h.
34
35
36
37
38
39
40




41
42
43
44
45
46
47

#include <ngtcp2/ngtcp2_crypto.h>
#include <nghttp3/nghttp3.h>
#ifdef USE_OPENSSL
#include <openssl/ssl.h>
#elif defined(USE_GNUTLS)
#include <gnutls/gnutls.h>




#endif

struct blocked_pkt {
  const uint8_t *pkt;
  size_t pktlen;
  size_t gsolen;
};







>
>
>
>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

#include <ngtcp2/ngtcp2_crypto.h>
#include <nghttp3/nghttp3.h>
#ifdef USE_OPENSSL
#include <openssl/ssl.h>
#elif defined(USE_GNUTLS)
#include <gnutls/gnutls.h>
#elif defined(USE_WOLFSSL)
#include <wolfssl/options.h>
#include <wolfssl/ssl.h>
#include <wolfssl/quic.h>
#endif

struct blocked_pkt {
  const uint8_t *pkt;
  size_t pktlen;
  size_t gsolen;
};
58
59
60
61
62
63
64



65
66
67
68
69
70
71
  ngtcp2_crypto_conn_ref conn_ref;
#ifdef USE_OPENSSL
  SSL_CTX *sslctx;
  SSL *ssl;
#elif defined(USE_GNUTLS)
  gnutls_certificate_credentials_t cred;
  gnutls_session_t ssl;



#endif
  struct sockaddr_storage local_addr;
  socklen_t local_addrlen;
  bool no_gso;
  uint8_t *pktbuf;
  size_t pktbuflen;
  /* the number of entries in blocked_pkt */







>
>
>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  ngtcp2_crypto_conn_ref conn_ref;
#ifdef USE_OPENSSL
  SSL_CTX *sslctx;
  SSL *ssl;
#elif defined(USE_GNUTLS)
  gnutls_certificate_credentials_t cred;
  gnutls_session_t ssl;
#elif defined(USE_WOLFSSL)
  WOLFSSL_CTX *sslctx;
  WOLFSSL *ssl;
#endif
  struct sockaddr_storage local_addr;
  socklen_t local_addrlen;
  bool no_gso;
  uint8_t *pktbuf;
  size_t pktbuflen;
  /* the number of entries in blocked_pkt */
Changes to jni/curl/lib/vquic/quiche.c.
254
255
256
257
258
259
260

261
262
263
264
265
266
267
                           int sockindex,
                           const struct sockaddr *addr, socklen_t addrlen)
{
  CURLcode result;
  struct quicsocket *qs = &conn->hequic[sockindex];
  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;







>







254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
                           int sockindex,
                           const struct sockaddr *addr, socklen_t addrlen)
{
  CURLcode result;
  struct quicsocket *qs = &conn->hequic[sockindex];
  char ipbuf[40];
  int port;
  int rv;

#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;
298
299
300
301
302
303
304
305






306
307


308
309
310
311
312
313
314

  if(quic_init_ssl(qs, conn))
    return CURLE_QUIC_CONNECT_ERROR;

  result = Curl_rand(data, qs->scid, sizeof(qs->scid));
  if(result)
    return result;







  qs->conn = quiche_conn_new_with_tls((const uint8_t *) qs->scid,
                                      sizeof(qs->scid), NULL, 0, addr, addrlen,


                                      qs->cfg, qs->ssl, false);
  if(!qs->conn) {
    failf(data, "can't create quiche connection");
    return CURLE_OUT_OF_MEMORY;
  }

  /* Known to not work on Windows */








>
>
>
>
>
>

|
>
>







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

  if(quic_init_ssl(qs, conn))
    return CURLE_QUIC_CONNECT_ERROR;

  result = Curl_rand(data, qs->scid, sizeof(qs->scid));
  if(result)
    return result;

  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;

  qs->conn = quiche_conn_new_with_tls((const uint8_t *) qs->scid,
                                      sizeof(qs->scid), NULL, 0,
                                      (struct sockaddr *)&qs->local_addr,
                                      qs->local_addrlen, addr, addrlen,
                                      qs->cfg, qs->ssl, false);
  if(!qs->conn) {
    failf(data, "can't create quiche connection");
    return CURLE_OUT_OF_MEMORY;
  }

  /* Known to not work on Windows */
474
475
476
477
478
479
480


481
482
483
484
485
486
487
      failf(data, "quiche: recvfrom() unexpectedly returned %zd "
            "(errno: %d, socket %d)", recvd, SOCKERRNO, sockfd);
      return CURLE_RECV_ERROR;
    }

    recv_info.from = (struct sockaddr *) &from;
    recv_info.from_len = from_len;



    recvd = quiche_conn_recv(qs->conn, buf, recvd, &recv_info);
    if(recvd == QUICHE_ERR_DONE)
      break;

    if(recvd < 0) {
      if(QUICHE_ERR_TLS_FAIL == recvd) {







>
>







483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
      failf(data, "quiche: recvfrom() unexpectedly returned %zd "
            "(errno: %d, socket %d)", recvd, SOCKERRNO, sockfd);
      return CURLE_RECV_ERROR;
    }

    recv_info.from = (struct sockaddr *) &from;
    recv_info.from_len = from_len;
    recv_info.to = (struct sockaddr *) &qs->local_addr;
    recv_info.to_len = qs->local_addrlen;

    recvd = quiche_conn_recv(qs->conn, buf, recvd, &recv_info);
    if(recvd == QUICHE_ERR_DONE)
      break;

    if(recvd < 0) {
      if(QUICHE_ERR_TLS_FAIL == recvd) {
Changes to jni/curl/lib/vquic/quiche.h.
45
46
47
48
49
50
51


52
53
54
55
56
  quiche_h3_config *h3config;
  uint8_t scid[QUICHE_MAX_CONN_ID_LEN];
  curl_socket_t sockfd;
  uint32_t version;
  SSL_CTX *sslctx;
  SSL *ssl;
  bool h3_recving; /* TRUE when in h3-body-reading state */


};

#endif

#endif /* HEADER_CURL_VQUIC_QUICHE_H */







>
>





45
46
47
48
49
50
51
52
53
54
55
56
57
58
  quiche_h3_config *h3config;
  uint8_t scid[QUICHE_MAX_CONN_ID_LEN];
  curl_socket_t sockfd;
  uint32_t version;
  SSL_CTX *sslctx;
  SSL *ssl;
  bool h3_recving; /* TRUE when in h3-body-reading state */
  struct sockaddr_storage local_addr;
  socklen_t local_addrlen;
};

#endif

#endif /* HEADER_CURL_VQUIC_QUICHE_H */
Changes to jni/curl/lib/vssh/libssh.c.
91
92
93
94
95
96
97







98
99
100
101
102
103
104
#include <fcntl.h>
#endif

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"








/* A recent macro provided by libssh. Or make our own. */
#ifndef SSH_STRING_FREE_CHAR
#define SSH_STRING_FREE_CHAR(x)                 \
  do {                                          \
    if(x) {                                     \
      ssh_string_free_char(x);                  \







>
>
>
>
>
>
>







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <fcntl.h>
#endif

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* in 0.10.0 or later, ignore deprecated warnings */
#if defined(__GNUC__) &&                        \
  (LIBSSH_VERSION_MINOR >= 10) ||               \
  (LIBSSH_VERSION_MAJOR > 0)
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif

/* A recent macro provided by libssh. Or make our own. */
#ifndef SSH_STRING_FREE_CHAR
#define SSH_STRING_FREE_CHAR(x)                 \
  do {                                          \
    if(x) {                                     \
      ssh_string_free_char(x);                  \
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
2941
2942
2943
2944
2945
2946
      state(data, SSH_SFTP_CLOSE);
      sshc->nextstate = SSH_NO_STATE;
      sshc->actualcode = CURLE_QUOTE_ERROR;
      return;
    }
    sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_UIDGID;
  }
  else if(strncasecompare(cmd, "atime", 5)) {

    time_t date = Curl_getdate_capped(sshc->quote_path1);

    if(date == -1) {
      Curl_safefree(sshc->quote_path1);
      Curl_safefree(sshc->quote_path2);
      failf(data, "Syntax error: incorrect access date format");
      state(data, SSH_SFTP_CLOSE);
      sshc->nextstate = SSH_NO_STATE;
      sshc->actualcode = CURLE_QUOTE_ERROR;
      return;
    }

    sshc->quote_attrs->atime = (uint32_t)date;
    sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_ACMODTIME;


  }
  else if(strncasecompare(cmd, "mtime", 5)) {
    time_t date = Curl_getdate_capped(sshc->quote_path1);

    if(date == -1) {
      Curl_safefree(sshc->quote_path1);
      Curl_safefree(sshc->quote_path2);
      failf(data, "Syntax error: incorrect modification date format");
      state(data, SSH_SFTP_CLOSE);
      sshc->nextstate = SSH_NO_STATE;
      sshc->actualcode = CURLE_QUOTE_ERROR;
      return;
    }



    sshc->quote_attrs->mtime = (uint32_t)date;

    sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_ACMODTIME;
  }

  /* Now send the completed structure... */
  state(data, SSH_SFTP_QUOTE_SETSTAT);
  return;
}







|
>

>

<
<
|
<
|
<
<

>
|
<
>
>
|
<
<
>
|


<





>
>
>
|
>







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
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
      state(data, SSH_SFTP_CLOSE);
      sshc->nextstate = SSH_NO_STATE;
      sshc->actualcode = CURLE_QUOTE_ERROR;
      return;
    }
    sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_UIDGID;
  }
  else if(strncasecompare(cmd, "atime", 5) ||
          strncasecompare(cmd, "mtime", 5)) {
    time_t date = Curl_getdate_capped(sshc->quote_path1);
    bool fail = FALSE;
    if(date == -1) {


      failf(data, "incorrect date format for %.*s", 5, cmd);

      fail = TRUE;


    }
#if SIZEOF_TIME_T > 4
    else if(date > 0xffffffff) {

      failf(data, "date overflow");
      fail = TRUE; /* avoid setting a capped time */
    }


#endif
    if(fail) {
      Curl_safefree(sshc->quote_path1);
      Curl_safefree(sshc->quote_path2);

      state(data, SSH_SFTP_CLOSE);
      sshc->nextstate = SSH_NO_STATE;
      sshc->actualcode = CURLE_QUOTE_ERROR;
      return;
    }
    if(strncasecompare(cmd, "atime", 5))
      sshc->quote_attrs->atime = (uint32_t)date;
    else /* mtime */
      sshc->quote_attrs->mtime = (uint32_t)date;

    sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_ACMODTIME;
  }

  /* Now send the completed structure... */
  state(data, SSH_SFTP_QUOTE_SETSTAT);
  return;
}
Changes to jni/curl/lib/vssh/libssh2.c.
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
          failf(data, "Syntax error: chown uid not a number");
          state(data, SSH_SFTP_CLOSE);
          sshc->nextstate = SSH_NO_STATE;
          sshc->actualcode = CURLE_QUOTE_ERROR;
          break;
        }
      }
      else if(strncasecompare(cmd, "atime", 5)) {

        time_t date = Curl_getdate_capped(sshc->quote_path1);


        if(date == -1) {
          Curl_safefree(sshc->quote_path1);
          Curl_safefree(sshc->quote_path2);
          failf(data, "Syntax error: incorrect access date format");
          state(data, SSH_SFTP_CLOSE);
          sshc->nextstate = SSH_NO_STATE;
          sshc->actualcode = CURLE_QUOTE_ERROR;
          break;
        }

        sshp->quote_attrs.atime = (unsigned long)date;

        sshp->quote_attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;

      }
      else if(strncasecompare(cmd, "mtime", 5)) {
        time_t date = Curl_getdate_capped(sshc->quote_path1);
        if(date == -1) {
          Curl_safefree(sshc->quote_path1);
          Curl_safefree(sshc->quote_path2);
          failf(data, "Syntax error: incorrect modification date format");
          state(data, SSH_SFTP_CLOSE);
          sshc->nextstate = SSH_NO_STATE;
          sshc->actualcode = CURLE_QUOTE_ERROR;
          break;
        }



        sshp->quote_attrs.mtime = (unsigned long)date;

        sshp->quote_attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;
      }

      /* Now send the completed structure... */
      state(data, SSH_SFTP_QUOTE_SETSTAT);
      break;
    }







|
>

>
>

<
<
|
<
|
<
<

>
|
>
|
>
|
<
|
|


<





>
>
>
|
>







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
          failf(data, "Syntax error: chown uid not a number");
          state(data, SSH_SFTP_CLOSE);
          sshc->nextstate = SSH_NO_STATE;
          sshc->actualcode = CURLE_QUOTE_ERROR;
          break;
        }
      }
      else if(strncasecompare(cmd, "atime", 5) ||
              strncasecompare(cmd, "mtime", 5)) {
        time_t date = Curl_getdate_capped(sshc->quote_path1);
        bool fail = FALSE;

        if(date == -1) {


          failf(data, "incorrect date format for %.*s", 5, cmd);

          fail = TRUE;


        }
#if SIZEOF_TIME_T > SIZEOF_LONG
        if(date > 0xffffffff) {
          /* if 'long' can't old >32bit, this date cannot be sent */
          failf(data, "date overflow");
          fail = TRUE;
        }

#endif
        if(fail) {
          Curl_safefree(sshc->quote_path1);
          Curl_safefree(sshc->quote_path2);

          state(data, SSH_SFTP_CLOSE);
          sshc->nextstate = SSH_NO_STATE;
          sshc->actualcode = CURLE_QUOTE_ERROR;
          break;
        }
        if(strncasecompare(cmd, "atime", 5))
          sshp->quote_attrs.atime = (unsigned long)date;
        else /* mtime */
          sshp->quote_attrs.mtime = (unsigned long)date;

        sshp->quote_attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;
      }

      /* Now send the completed structure... */
      state(data, SSH_SFTP_QUOTE_SETSTAT);
      break;
    }
2331
2332
2333
2334
2335
2336
2337
2338

2339
2340
2341
2342
2343
2344
2345
          result = Curl_dyn_add(&sshp->readdir, sshp->readdir_longentry);

          if(!result) {
            if((sshp->readdir_attrs.flags & LIBSSH2_SFTP_ATTR_PERMISSIONS) &&
               ((sshp->readdir_attrs.permissions & LIBSSH2_SFTP_S_IFMT) ==
                LIBSSH2_SFTP_S_IFLNK)) {
              Curl_dyn_init(&sshp->readdir_link, PATH_MAX);
              result = Curl_dyn_add(&sshp->readdir_link, sshp->path);

              state(data, SSH_SFTP_READDIR_LINK);
              if(!result)
                break;
            }
            else {
              state(data, SSH_SFTP_READDIR_BOTTOM);
              break;







|
>







2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
          result = Curl_dyn_add(&sshp->readdir, sshp->readdir_longentry);

          if(!result) {
            if((sshp->readdir_attrs.flags & LIBSSH2_SFTP_ATTR_PERMISSIONS) &&
               ((sshp->readdir_attrs.permissions & LIBSSH2_SFTP_S_IFMT) ==
                LIBSSH2_SFTP_S_IFLNK)) {
              Curl_dyn_init(&sshp->readdir_link, PATH_MAX);
              result = Curl_dyn_addf(&sshp->readdir_link, "%s%s", sshp->path,
                                     sshp->readdir_filename);
              state(data, SSH_SFTP_READDIR_LINK);
              if(!result)
                break;
            }
            else {
              state(data, SSH_SFTP_READDIR_BOTTOM);
              break;
Changes to jni/curl/lib/vtls/openssl.c.
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <openssl/conf.h>
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/pkcs12.h>

#ifdef USE_AMISSL
#include "amigaos.h"
#endif

#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_OCSP)
#include <openssl/ocsp.h>
#endif

#if (OPENSSL_VERSION_NUMBER >= 0x0090700fL) && /* 0.9.7 or later */     \
  !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_UI_CONSOLE)
#define USE_OPENSSL_ENGINE







<
<
<
<







74
75
76
77
78
79
80




81
82
83
84
85
86
87
#include <openssl/conf.h>
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/pkcs12.h>





#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_OCSP)
#include <openssl/ocsp.h>
#endif

#if (OPENSSL_VERSION_NUMBER >= 0x0090700fL) && /* 0.9.7 or later */     \
  !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_UI_CONSOLE)
#define USE_OPENSSL_ENGINE
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
    case SSL_FILETYPE_PEM:
      /* SSL_CTX_use_certificate_chain_file() only works on PEM files */
      cert_use_result = cert_blob ?
        SSL_CTX_use_certificate_chain_blob(ctx, cert_blob, key_passwd) :
        SSL_CTX_use_certificate_chain_file(ctx, cert_file);
      if(cert_use_result != 1) {
        failf(data,
              "could not load PEM client certificate, " OSSL_PACKAGE
              " error %s, "
              "(no key found, wrong pass phrase, or wrong file format?)",

              ossl_strerror(ERR_get_error(), error_buffer,
                            sizeof(error_buffer)) );
        return 0;
      }
      break;

    case SSL_FILETYPE_ASN1:
      /* SSL_CTX_use_certificate_file() works with either PEM or ASN1, but
         we use the case above for PEM so this can only be performed with
         ASN1 files. */

      cert_use_result = cert_blob ?
        SSL_CTX_use_certificate_blob(ctx, cert_blob,
                                     file_type, key_passwd) :
        SSL_CTX_use_certificate_file(ctx, cert_file, file_type);
      if(cert_use_result != 1) {
        failf(data,
              "could not load ASN1 client certificate, " OSSL_PACKAGE
              " error %s, "
              "(no key found, wrong pass phrase, or wrong file format?)",

              ossl_strerror(ERR_get_error(), error_buffer,
                            sizeof(error_buffer)) );
        return 0;
      }
      break;
    case SSL_FILETYPE_ENGINE:
#if defined(USE_OPENSSL_ENGINE) && defined(ENGINE_CTRL_GET_CMD_FROM_NAME)







|


>

















|


>







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
    case SSL_FILETYPE_PEM:
      /* SSL_CTX_use_certificate_chain_file() only works on PEM files */
      cert_use_result = cert_blob ?
        SSL_CTX_use_certificate_chain_blob(ctx, cert_blob, key_passwd) :
        SSL_CTX_use_certificate_chain_file(ctx, cert_file);
      if(cert_use_result != 1) {
        failf(data,
              "could not load PEM client certificate from %s, " OSSL_PACKAGE
              " error %s, "
              "(no key found, wrong pass phrase, or wrong file format?)",
              (cert_blob ? "CURLOPT_SSLCERT_BLOB" : cert_file),
              ossl_strerror(ERR_get_error(), error_buffer,
                            sizeof(error_buffer)) );
        return 0;
      }
      break;

    case SSL_FILETYPE_ASN1:
      /* SSL_CTX_use_certificate_file() works with either PEM or ASN1, but
         we use the case above for PEM so this can only be performed with
         ASN1 files. */

      cert_use_result = cert_blob ?
        SSL_CTX_use_certificate_blob(ctx, cert_blob,
                                     file_type, key_passwd) :
        SSL_CTX_use_certificate_file(ctx, cert_file, file_type);
      if(cert_use_result != 1) {
        failf(data,
              "could not load ASN1 client certificate from %s, " OSSL_PACKAGE
              " error %s, "
              "(no key found, wrong pass phrase, or wrong file format?)",
              (cert_blob ? "CURLOPT_SSLCERT_BLOB" : cert_file),
              ossl_strerror(ERR_get_error(), error_buffer,
                            sizeof(error_buffer)) );
        return 0;
      }
      break;
    case SSL_FILETYPE_ENGINE:
#if defined(USE_OPENSSL_ENGINE) && defined(ENGINE_CTRL_GET_CMD_FROM_NAME)
868
869
870
871
872
873
874
875
876

877
878
879
880
881
882
883
          if(!params.cert) {
            failf(data, "ssl engine didn't initialized the certificate "
                  "properly.");
            return 0;
          }

          if(SSL_CTX_use_certificate(ctx, params.cert) != 1) {
            failf(data, "unable to set client certificate");
            X509_free(params.cert);

            return 0;
          }
          X509_free(params.cert); /* we don't need the handle any more... */
        }
        else {
          failf(data, "crypto engine not set, can't load certificate");
          return 0;







|
|
>







866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
          if(!params.cert) {
            failf(data, "ssl engine didn't initialized the certificate "
                  "properly.");
            return 0;
          }

          if(SSL_CTX_use_certificate(ctx, params.cert) != 1) {
            failf(data, "unable to set client certificate [%s]",
                  ossl_strerror(ERR_get_error(), error_buffer,
                                sizeof(error_buffer)));
            return 0;
          }
          X509_free(params.cert); /* we don't need the handle any more... */
        }
        else {
          failf(data, "crypto engine not set, can't load certificate");
          return 0;
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
        }
      }

      cert_done = 1;
  fail:
      EVP_PKEY_free(pri);
      X509_free(x509);
#ifdef USE_AMISSL
      sk_X509_pop_free(ca, Curl_amiga_X509_free);
#else
      sk_X509_pop_free(ca, X509_free);
#endif
      if(!cert_done)
        return 0; /* failure! */
      break;
    }
    default:
      failf(data, "not supported file type '%s' for certificate", cert_type);
      return 0;







<
<
<

<







991
992
993
994
995
996
997



998

999
1000
1001
1002
1003
1004
1005
        }
      }

      cert_done = 1;
  fail:
      EVP_PKEY_free(pri);
      X509_free(x509);



      sk_X509_pop_free(ca, X509_free);

      if(!cert_done)
        return 0; /* failure! */
      break;
    }
    default:
      failf(data, "not supported file type '%s' for certificate", cert_type);
      return 0;
4450
4451
4452
4453
4454
4455
4456





4457

4458
4459
4460
4461
4462
4463
4464
  return msnprintf(buffer, size, "%s/%lx.%lx.%lx",
                   OSSL_PACKAGE,
                   (LIBRESSL_VERSION_NUMBER>>28)&0xf,
                   (LIBRESSL_VERSION_NUMBER>>20)&0xff,
                   (LIBRESSL_VERSION_NUMBER>>12)&0xff);
#endif
#elif defined(OPENSSL_IS_BORINGSSL)





  return msnprintf(buffer, size, OSSL_PACKAGE);

#elif defined(HAVE_OPENSSL_VERSION) && defined(OPENSSL_VERSION_STRING)
  return msnprintf(buffer, size, "%s/%s",
                   OSSL_PACKAGE, OpenSSL_version(OPENSSL_VERSION_STRING));
#else
  /* not LibreSSL, BoringSSL and not using OpenSSL_version */

  char sub[3];







>
>
>
>
>

>







4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
  return msnprintf(buffer, size, "%s/%lx.%lx.%lx",
                   OSSL_PACKAGE,
                   (LIBRESSL_VERSION_NUMBER>>28)&0xf,
                   (LIBRESSL_VERSION_NUMBER>>20)&0xff,
                   (LIBRESSL_VERSION_NUMBER>>12)&0xff);
#endif
#elif defined(OPENSSL_IS_BORINGSSL)
#ifdef CURL_BORINGSSL_VERSION
  return msnprintf(buffer, size, "%s/%s",
                   OSSL_PACKAGE,
                   CURL_BORINGSSL_VERSION);
#else
  return msnprintf(buffer, size, OSSL_PACKAGE);
#endif
#elif defined(HAVE_OPENSSL_VERSION) && defined(OPENSSL_VERSION_STRING)
  return msnprintf(buffer, size, "%s/%s",
                   OSSL_PACKAGE, OpenSSL_version(OPENSSL_VERSION_STRING));
#else
  /* not LibreSSL, BoringSSL and not using OpenSSL_version */

  char sub[3];
Changes to jni/curl/lib/vtls/schannel.c.
49
50
51
52
53
54
55

56
57
58
59
60
61
62
#include "inet_pton.h" /* for IP addr SNI check */
#include "curl_multibyte.h"
#include "warnless.h"
#include "x509asn1.h"
#include "curl_printf.h"
#include "multiif.h"
#include "version_win32.h"


/* The last #include file should be: */
#include "curl_memory.h"
#include "memdebug.h"

/* ALPN requires version 8.1 of the Windows SDK, which was
   shipped with Visual Studio 2013, aka _MSC_VER 1800:







>







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "inet_pton.h" /* for IP addr SNI check */
#include "curl_multibyte.h"
#include "warnless.h"
#include "x509asn1.h"
#include "curl_printf.h"
#include "multiif.h"
#include "version_win32.h"
#include "rand.h"

/* The last #include file should be: */
#include "curl_memory.h"
#include "memdebug.h"

/* ALPN requires version 8.1 of the Windows SDK, which was
   shipped with Visual Studio 2013, aka _MSC_VER 1800:
79
80
81
82
83
84
85































86

87
88
89
90
91
92
93
#ifdef UNICODE
#define UNISP_NAME  UNISP_NAME_W
#else
#define UNISP_NAME  UNISP_NAME_A
#endif
#endif
































#if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX)

#define HAS_CLIENT_CERT_PATH
#endif

#ifdef HAS_CLIENT_CERT_PATH
#ifdef UNICODE
#define CURL_CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W
#else







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>







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
#ifdef UNICODE
#define UNISP_NAME  UNISP_NAME_W
#else
#define UNISP_NAME  UNISP_NAME_A
#endif
#endif

#ifndef BCRYPT_CHACHA20_POLY1305_ALGORITHM
#define BCRYPT_CHACHA20_POLY1305_ALGORITHM L"CHACHA20_POLY1305"
#endif

#ifndef BCRYPT_CHAIN_MODE_CCM
#define BCRYPT_CHAIN_MODE_CCM L"ChainingModeCCM"
#endif

#ifndef BCRYPT_CHAIN_MODE_GCM
#define BCRYPT_CHAIN_MODE_GCM L"ChainingModeGCM"
#endif

#ifndef BCRYPT_AES_ALGORITHM
#define BCRYPT_AES_ALGORITHM L"AES"
#endif

#ifndef BCRYPT_SHA256_ALGORITHM
#define BCRYPT_SHA256_ALGORITHM L"SHA256"
#endif

#ifndef BCRYPT_SHA384_ALGORITHM
#define BCRYPT_SHA384_ALGORITHM L"SHA384"
#endif

/* Workaround broken compilers like MingW.
   Return the number of elements in a statically sized array.
*/
#ifndef ARRAYSIZE
#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
#endif

#if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX)   \
  && !defined(DISABLE_SCHANNEL_CLIENT_CERT)
#define HAS_CLIENT_CERT_PATH
#endif

#ifdef HAS_CLIENT_CERT_PATH
#ifdef UNICODE
#define CURL_CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W
#else
114
115
116
117
118
119
120




121
122
123
124
125
126
127
#ifndef SP_PROT_TLS1_1_CLIENT
#define SP_PROT_TLS1_1_CLIENT           0x00000200
#endif

#ifndef SP_PROT_TLS1_2_CLIENT
#define SP_PROT_TLS1_2_CLIENT           0x00000800
#endif





#ifndef SCH_USE_STRONG_CRYPTO
#define SCH_USE_STRONG_CRYPTO           0x00400000
#endif

#ifndef SECBUFFER_ALERT
#define SECBUFFER_ALERT                 17







>
>
>
>







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#ifndef SP_PROT_TLS1_1_CLIENT
#define SP_PROT_TLS1_1_CLIENT           0x00000200
#endif

#ifndef SP_PROT_TLS1_2_CLIENT
#define SP_PROT_TLS1_2_CLIENT           0x00000800
#endif

#ifndef SP_PROT_TLS1_3_CLIENT
#define SP_PROT_TLS1_3_CLIENT           0x00002000
#endif

#ifndef SCH_USE_STRONG_CRYPTO
#define SCH_USE_STRONG_CRYPTO           0x00400000
#endif

#ifndef SECBUFFER_ALERT
#define SECBUFFER_ALERT                 17
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
{
  desc->ulVersion = SECBUFFER_VERSION;
  desc->pBuffers = BufArr;
  desc->cBuffers = NumArrElem;
}

static CURLcode
set_ssl_version_min_max(SCHANNEL_CRED *schannel_cred, struct Curl_easy *data,
                        struct connectdata *conn)
{
  long ssl_version = SSL_CONN_CONFIG(version);
  long ssl_version_max = SSL_CONN_CONFIG(version_max);
  long i = ssl_version;

  switch(ssl_version_max) {
  case CURL_SSLVERSION_MAX_NONE:
  case CURL_SSLVERSION_MAX_DEFAULT:










    ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2;

    break;
  }

  for(; i <= (ssl_version_max >> 16); ++i) {
    switch(i) {
    case CURL_SSLVERSION_TLSv1_0:
      schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_0_CLIENT;
      break;
    case CURL_SSLVERSION_TLSv1_1:
      schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_1_CLIENT;
      break;
    case CURL_SSLVERSION_TLSv1_2:
      schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_2_CLIENT;
      break;
    case CURL_SSLVERSION_TLSv1_3:








      failf(data, "schannel: TLS 1.3 is not yet supported");
      return CURLE_SSL_CONNECT_ERROR;

    }
  }
  return CURLE_OK;
}

/*longest is 26, buffer is slightly bigger*/
#define LONGEST_ALG_ID 32
#define CIPHEROPTION(X)                         \
  if(strcmp(#X, tmp) == 0)                      \
    return X

static int
get_alg_id_by_name(char *name)
{
  char tmp[LONGEST_ALG_ID] = { 0 };
  char *nameEnd = strchr(name, ':');
  size_t n = nameEnd ? min((size_t)(nameEnd - name), LONGEST_ALG_ID - 1) : \


    min(strlen(name), LONGEST_ALG_ID - 1);


  strncpy(tmp, name, n);
  tmp[n] = 0;
  CIPHEROPTION(CALG_MD2);
  CIPHEROPTION(CALG_MD4);
  CIPHEROPTION(CALG_MD5);
  CIPHEROPTION(CALG_SHA);
  CIPHEROPTION(CALG_SHA1);







|









>
>
>
>
>
>
>
>
>
>
|
>


>



|


|


|


>
>
>
>
>
>
>
>
|
|
>
















|
>
>
|
>
>







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
{
  desc->ulVersion = SECBUFFER_VERSION;
  desc->pBuffers = BufArr;
  desc->cBuffers = NumArrElem;
}

static CURLcode
set_ssl_version_min_max(DWORD *enabled_protocols, struct Curl_easy *data,
                        struct connectdata *conn)
{
  long ssl_version = SSL_CONN_CONFIG(version);
  long ssl_version_max = SSL_CONN_CONFIG(version_max);
  long i = ssl_version;

  switch(ssl_version_max) {
  case CURL_SSLVERSION_MAX_NONE:
  case CURL_SSLVERSION_MAX_DEFAULT:

    /* Windows Server 2022 and newer (including Windows 11) support TLS 1.3
       built-in. Previous builds of Windows 10 had broken TLS 1.3
       implementations that could be enabled via registry.
    */
    if(curlx_verify_windows_version(10, 0, 20348, PLATFORM_WINNT,
                                    VERSION_GREATER_THAN_EQUAL)) {
      ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_3;
    }
    else /* Windows 10 and older */
      ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2;

    break;
  }

  for(; i <= (ssl_version_max >> 16); ++i) {
    switch(i) {
    case CURL_SSLVERSION_TLSv1_0:
      (*enabled_protocols) |= SP_PROT_TLS1_0_CLIENT;
      break;
    case CURL_SSLVERSION_TLSv1_1:
      (*enabled_protocols) |= SP_PROT_TLS1_1_CLIENT;
      break;
    case CURL_SSLVERSION_TLSv1_2:
      (*enabled_protocols) |= SP_PROT_TLS1_2_CLIENT;
      break;
    case CURL_SSLVERSION_TLSv1_3:

      /* Windows Server 2022 and newer */
      if(curlx_verify_windows_version(10, 0, 20348, PLATFORM_WINNT,
                                      VERSION_GREATER_THAN_EQUAL)) {
        (*enabled_protocols) |= SP_PROT_TLS1_3_CLIENT;
        break;
      }
      else { /* Windows 10 and older */
        failf(data, "schannel: TLS 1.3 not supported on Windows prior to 11");
        return CURLE_SSL_CONNECT_ERROR;
      }
    }
  }
  return CURLE_OK;
}

/*longest is 26, buffer is slightly bigger*/
#define LONGEST_ALG_ID 32
#define CIPHEROPTION(X)                         \
  if(strcmp(#X, tmp) == 0)                      \
    return X

static int
get_alg_id_by_name(char *name)
{
  char tmp[LONGEST_ALG_ID] = { 0 };
  char *nameEnd = strchr(name, ':');
  size_t n = nameEnd ? (size_t)(nameEnd - name) : strlen(name);

  /* reject too-long alg names */
  if(n > (LONGEST_ALG_ID - 1))
    return 0;

  strncpy(tmp, name, n);
  tmp[n] = 0;
  CIPHEROPTION(CALG_MD2);
  CIPHEROPTION(CALG_MD4);
  CIPHEROPTION(CALG_MD5);
  CIPHEROPTION(CALG_SHA);
  CIPHEROPTION(CALG_SHA1);
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
  else if(_tcsncmp(path, TEXT("CurrentService"), store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_CURRENT_SERVICE;
  else if(_tcsncmp(path, TEXT("Services"), store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_SERVICES;
  else if(_tcsncmp(path, TEXT("Users"), store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_USERS;
  else if(_tcsncmp(path, TEXT("CurrentUserGroupPolicy"),
                    store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY;
  else if(_tcsncmp(path, TEXT("LocalMachineGroupPolicy"),
                    store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY;
  else if(_tcsncmp(path, TEXT("LocalMachineEnterprise"),
                    store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE;
  else
    return CURLE_SSL_CERTPROBLEM;

  store_path_start = sep + 1;

  sep = _tcschr(store_path_start, TEXT('\\'));







|


|


|







443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
  else if(_tcsncmp(path, TEXT("CurrentService"), store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_CURRENT_SERVICE;
  else if(_tcsncmp(path, TEXT("Services"), store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_SERVICES;
  else if(_tcsncmp(path, TEXT("Users"), store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_USERS;
  else if(_tcsncmp(path, TEXT("CurrentUserGroupPolicy"),
                   store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY;
  else if(_tcsncmp(path, TEXT("LocalMachineGroupPolicy"),
                   store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY;
  else if(_tcsncmp(path, TEXT("LocalMachineEnterprise"),
                   store_name_len) == 0)
    *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE;
  else
    return CURLE_SSL_CERTPROBLEM;

  store_path_start = sep + 1;

  sep = _tcschr(store_path_start, TEXT('\\'));
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
#endif
static CURLcode
schannel_acquire_credential_handle(struct Curl_easy *data,
                                   struct connectdata *conn,
                                   int sockindex)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  SCHANNEL_CRED schannel_cred;
  ALG_ID algIds[NUM_CIPHERS];
  PCCERT_CONTEXT client_certs[1] = { NULL };

  SECURITY_STATUS sspi_status = SEC_E_OK;
  CURLcode result;





  struct ssl_backend_data *backend = connssl->backend;

  DEBUGASSERT(backend);

  /* setup Schannel API options */
  memset(&schannel_cred, 0, sizeof(schannel_cred));
  schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;

  if(conn->ssl_config.verifypeer) {
#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"));
    }
    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;

      DEBUGF(infof(data,
                   "schannel: checking server certificate revocation"));
    }
  }
  else {
    schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
      SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
      SCH_CRED_IGNORE_REVOCATION_OFFLINE;
    DEBUGF(infof(data,
                 "schannel: disabled server cert revocation checks"));
  }

  if(!conn->ssl_config.verifyhost) {
    schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
    DEBUGF(infof(data, "schannel: verifyhost setting prevents Schannel from "
                 "comparing the supplied target name with the subject "
                 "names in server certificates."));
  }

  if(!SSL_SET_OPTION(auto_client_cert)) {
    schannel_cred.dwFlags &= ~SCH_CRED_USE_DEFAULT_CREDS;
    schannel_cred.dwFlags |= SCH_CRED_NO_DEFAULT_CREDS;
    infof(data, "schannel: disabled automatic use of client certificate");
  }
  else
    infof(data, "schannel: enabled automatic use of client certificate");

  switch(conn->ssl_config.version) {
  case CURL_SSLVERSION_DEFAULT:
  case CURL_SSLVERSION_TLSv1:
  case CURL_SSLVERSION_TLSv1_0:
  case CURL_SSLVERSION_TLSv1_1:
  case CURL_SSLVERSION_TLSv1_2:
  case CURL_SSLVERSION_TLSv1_3:
  {
    result = set_ssl_version_min_max(&schannel_cred, data, conn);
    if(result != CURLE_OK)
      return result;
    break;
  }
  case CURL_SSLVERSION_SSLv3:
  case CURL_SSLVERSION_SSLv2:
    failf(data, "SSL versions not supported");
    return CURLE_NOT_BUILT_IN;
  default:
    failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
    return CURLE_SSL_CONNECT_ERROR;
  }

  if(SSL_CONN_CONFIG(cipher_list)) {
    result = set_ssl_ciphers(&schannel_cred, SSL_CONN_CONFIG(cipher_list),
                             algIds);
    if(CURLE_OK != result) {
      failf(data, "Unable to set ciphers to passed via SSL_CONN_CONFIG");
      return result;
    }
  }


#ifdef HAS_CLIENT_CERT_PATH
  /* client certificate */
  if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
    DWORD cert_store_name = 0;
    TCHAR *cert_store_path = NULL;
    TCHAR *cert_thumbprint_str = NULL;







|
|

>


>
>
>
>
>



<
<
<
<




|


|


|






|





|






|







|






|
|













|












<
<
<
<
<
<
<
<
<
<







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
#endif
static CURLcode
schannel_acquire_credential_handle(struct Curl_easy *data,
                                   struct connectdata *conn,
                                   int sockindex)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];

#ifdef HAS_CLIENT_CERT_PATH
  PCCERT_CONTEXT client_certs[1] = { NULL };
#endif
  SECURITY_STATUS sspi_status = SEC_E_OK;
  CURLcode result;

  /* setup Schannel API options */
  DWORD flags = 0;
  DWORD enabled_protocols = 0;

  struct ssl_backend_data *backend = connssl->backend;

  DEBUGASSERT(backend);





  if(conn->ssl_config.verifypeer) {
#ifdef HAS_MANUAL_VERIFY_API
    if(backend->use_manual_cred_validation)
      flags = SCH_CRED_MANUAL_CRED_VALIDATION;
    else
#endif
      flags = SCH_CRED_AUTO_CRED_VALIDATION;

    if(SSL_SET_OPTION(no_revoke)) {
      flags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
        SCH_CRED_IGNORE_REVOCATION_OFFLINE;

      DEBUGF(infof(data, "schannel: disabled server certificate revocation "
                   "checks"));
    }
    else if(SSL_SET_OPTION(revoke_best_effort)) {
      flags |= 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 {
      flags |= SCH_CRED_REVOCATION_CHECK_CHAIN;

      DEBUGF(infof(data,
                   "schannel: checking server certificate revocation"));
    }
  }
  else {
    flags = SCH_CRED_MANUAL_CRED_VALIDATION |
      SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
      SCH_CRED_IGNORE_REVOCATION_OFFLINE;
    DEBUGF(infof(data,
                 "schannel: disabled server cert revocation checks"));
  }

  if(!conn->ssl_config.verifyhost) {
    flags |= SCH_CRED_NO_SERVERNAME_CHECK;
    DEBUGF(infof(data, "schannel: verifyhost setting prevents Schannel from "
                 "comparing the supplied target name with the subject "
                 "names in server certificates."));
  }

  if(!SSL_SET_OPTION(auto_client_cert)) {
    flags &= ~SCH_CRED_USE_DEFAULT_CREDS;
    flags |= SCH_CRED_NO_DEFAULT_CREDS;
    infof(data, "schannel: disabled automatic use of client certificate");
  }
  else
    infof(data, "schannel: enabled automatic use of client certificate");

  switch(conn->ssl_config.version) {
  case CURL_SSLVERSION_DEFAULT:
  case CURL_SSLVERSION_TLSv1:
  case CURL_SSLVERSION_TLSv1_0:
  case CURL_SSLVERSION_TLSv1_1:
  case CURL_SSLVERSION_TLSv1_2:
  case CURL_SSLVERSION_TLSv1_3:
  {
    result = set_ssl_version_min_max(&enabled_protocols, data, conn);
    if(result != CURLE_OK)
      return result;
    break;
  }
  case CURL_SSLVERSION_SSLv3:
  case CURL_SSLVERSION_SSLv2:
    failf(data, "SSL versions not supported");
    return CURLE_NOT_BUILT_IN;
  default:
    failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
    return CURLE_SSL_CONNECT_ERROR;
  }











#ifdef HAS_CLIENT_CERT_PATH
  /* client certificate */
  if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
    DWORD cert_store_name = 0;
    TCHAR *cert_store_path = NULL;
    TCHAR *cert_thumbprint_str = NULL;
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
    else {
      cert_path = curlx_convert_UTF8_to_tchar(
        data->set.ssl.primary.clientcert);
      if(!cert_path)
        return CURLE_OUT_OF_MEMORY;

      result = get_cert_location(cert_path, &cert_store_name,
        &cert_store_path, &cert_thumbprint_str);

      if(result && (data->set.ssl.primary.clientcert[0]!='\0'))
        fInCert = fopen(data->set.ssl.primary.clientcert, "rb");

      if(result && !fInCert) {
        failf(data, "schannel: Failed to get certificate location"
              " or file for %s",
              data->set.ssl.primary.clientcert);
        curlx_unicodefree(cert_path);
        return result;
      }
    }

    if((fInCert || blob) && (data->set.ssl.cert_type) &&
        (!strcasecompare(data->set.ssl.cert_type, "P12"))) {
      failf(data, "schannel: certificate format compatibility error "
              " for %s",
              blob ? "(memory blob)" : data->set.ssl.primary.clientcert);
      curlx_unicodefree(cert_path);
      return CURLE_SSL_CERTPROBLEM;
    }

    if(fInCert || blob) {
      /* Reading a .P12 or .pfx file, like the example at bottom of
           https://social.msdn.microsoft.com/Forums/windowsdesktop/
                          en-US/3e7bc95f-b21a-4bcd-bd2c-7f996718cae5
      */
      CRYPT_DATA_BLOB datablob;
      WCHAR* pszPassword;
      size_t pwd_len = 0;
      int str_w_len = 0;
      const char *cert_showfilename_error = blob ?
        "(memory blob)" : data->set.ssl.primary.clientcert;







|














|

|
|






|
|







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
    else {
      cert_path = curlx_convert_UTF8_to_tchar(
        data->set.ssl.primary.clientcert);
      if(!cert_path)
        return CURLE_OUT_OF_MEMORY;

      result = get_cert_location(cert_path, &cert_store_name,
                                 &cert_store_path, &cert_thumbprint_str);

      if(result && (data->set.ssl.primary.clientcert[0]!='\0'))
        fInCert = fopen(data->set.ssl.primary.clientcert, "rb");

      if(result && !fInCert) {
        failf(data, "schannel: Failed to get certificate location"
              " or file for %s",
              data->set.ssl.primary.clientcert);
        curlx_unicodefree(cert_path);
        return result;
      }
    }

    if((fInCert || blob) && (data->set.ssl.cert_type) &&
       (!strcasecompare(data->set.ssl.cert_type, "P12"))) {
      failf(data, "schannel: certificate format compatibility error "
            " for %s",
            blob ? "(memory blob)" : data->set.ssl.primary.clientcert);
      curlx_unicodefree(cert_path);
      return CURLE_SSL_CERTPROBLEM;
    }

    if(fInCert || blob) {
      /* Reading a .P12 or .pfx file, like the example at bottom of
         https://social.msdn.microsoft.com/Forums/windowsdesktop/
         en-US/3e7bc95f-b21a-4bcd-bd2c-7f996718cae5
      */
      CRYPT_DATA_BLOB datablob;
      WCHAR* pszPassword;
      size_t pwd_len = 0;
      int str_w_len = 0;
      const char *cert_showfilename_error = blob ?
        "(memory blob)" : data->set.ssl.primary.clientcert;
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
          certdata = malloc(certsize + 1);
        if((!certdata) ||
           ((int) fread(certdata, certsize, 1, fInCert) != 1))
          continue_reading = FALSE;
        fclose(fInCert);
        if(!continue_reading) {
          failf(data, "schannel: Failed to read cert file %s",
              data->set.ssl.primary.clientcert);
          free(certdata);
          return CURLE_SSL_CERTPROBLEM;
        }
      }

      /* Convert key-pair data to the in-memory certificate store */
      datablob.pbData = (BYTE*)certdata;
      datablob.cbData = (DWORD)certsize;

      if(data->set.ssl.key_passwd)
        pwd_len = strlen(data->set.ssl.key_passwd);
      pszPassword = (WCHAR*)malloc(sizeof(WCHAR)*(pwd_len + 1));
      if(pszPassword) {
        if(pwd_len > 0)
          str_w_len = MultiByteToWideChar(CP_UTF8,
             MB_ERR_INVALID_CHARS,
             data->set.ssl.key_passwd, (int)pwd_len,

             pszPassword, (int)(pwd_len + 1));

        if((str_w_len >= 0) && (str_w_len <= (int)pwd_len))
          pszPassword[str_w_len] = 0;
        else
          pszPassword[0] = 0;

        cert_store = PFXImportCertStore(&datablob, pszPassword, 0);







|















|
|
>
|







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
          certdata = malloc(certsize + 1);
        if((!certdata) ||
           ((int) fread(certdata, certsize, 1, fInCert) != 1))
          continue_reading = FALSE;
        fclose(fInCert);
        if(!continue_reading) {
          failf(data, "schannel: Failed to read cert file %s",
                data->set.ssl.primary.clientcert);
          free(certdata);
          return CURLE_SSL_CERTPROBLEM;
        }
      }

      /* Convert key-pair data to the in-memory certificate store */
      datablob.pbData = (BYTE*)certdata;
      datablob.cbData = (DWORD)certsize;

      if(data->set.ssl.key_passwd)
        pwd_len = strlen(data->set.ssl.key_passwd);
      pszPassword = (WCHAR*)malloc(sizeof(WCHAR)*(pwd_len + 1));
      if(pszPassword) {
        if(pwd_len > 0)
          str_w_len = MultiByteToWideChar(CP_UTF8,
                                          MB_ERR_INVALID_CHARS,
                                          data->set.ssl.key_passwd,
                                          (int)pwd_len,
                                          pszPassword, (int)(pwd_len + 1));

        if((str_w_len >= 0) && (str_w_len <= (int)pwd_len))
          pszPassword[str_w_len] = 0;
        else
          pszPassword[0] = 0;

        cert_store = PFXImportCertStore(&datablob, pszPassword, 0);
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
      if(!client_certs[0]) {
        failf(data, "schannel: Failed to get certificate from file %s"
              ", last error is 0x%x",
              cert_showfilename_error, GetLastError());
        CertCloseStore(cert_store, 0);
        return CURLE_SSL_CERTPROBLEM;
      }

      schannel_cred.cCreds = 1;
      schannel_cred.paCred = client_certs;
    }
    else {
      cert_store =
        CertOpenStore(CURL_CERT_STORE_PROV_SYSTEM, 0,
                      (HCRYPTPROV)NULL,
                      CERT_STORE_OPEN_EXISTING_FLAG | cert_store_name,
                      cert_store_path);







<
<
<







701
702
703
704
705
706
707



708
709
710
711
712
713
714
      if(!client_certs[0]) {
        failf(data, "schannel: Failed to get certificate from file %s"
              ", last error is 0x%x",
              cert_showfilename_error, GetLastError());
        CertCloseStore(cert_store, 0);
        return CURLE_SSL_CERTPROBLEM;
      }



    }
    else {
      cert_store =
        CertOpenStore(CURL_CERT_STORE_PROV_SYSTEM, 0,
                      (HCRYPTPROV)NULL,
                      CERT_STORE_OPEN_EXISTING_FLAG | cert_store_name,
                      cert_store_path);
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

      client_certs[0] = CertFindCertificateInStore(
        cert_store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0,
        CERT_FIND_HASH, &cert_thumbprint, NULL);

      curlx_unicodefree(cert_path);

      if(client_certs[0]) {
        schannel_cred.cCreds = 1;
        schannel_cred.paCred = client_certs;
      }
      else {
        /* CRYPT_E_NOT_FOUND / E_INVALIDARG */
        CertCloseStore(cert_store, 0);
        return CURLE_SSL_CERTPROBLEM;
      }
    }
    CertCloseStore(cert_store, 0);
  }
#else
  if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
    failf(data, "schannel: client cert support not built in");
    return CURLE_NOT_BUILT_IN;
  }
#endif

  /* allocate memory for the re-usable credential handle */
  backend->cred = (struct Curl_schannel_cred *)
    calloc(1, sizeof(struct Curl_schannel_cred));
  if(!backend->cred) {
    failf(data, "schannel: unable to allocate memory");


    if(client_certs[0])
      CertFreeCertificateContext(client_certs[0]);


    return CURLE_OUT_OF_MEMORY;
  }
  backend->cred->refcount = 1;

  sspi_status =
    s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR *)UNISP_NAME,
                                       SECPKG_CRED_OUTBOUND, NULL,
                                       &schannel_cred, NULL, NULL,
                                       &backend->cred->cred_handle,
                                       &backend->cred->time_stamp);

























































































































































































































































  if(client_certs[0])
    CertFreeCertificateContext(client_certs[0]);


  if(sspi_status != SEC_E_OK) {
    char buffer[STRERROR_LEN];
    failf(data, "schannel: AcquireCredentialsHandle failed: %s",
          Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
    Curl_safefree(backend->cred);
    switch(sspi_status) {







|
<
<
<
<




















>


>





|
|
|
<
<
<

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


>







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

      client_certs[0] = CertFindCertificateInStore(
        cert_store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0,
        CERT_FIND_HASH, &cert_thumbprint, NULL);

      curlx_unicodefree(cert_path);

      if(!client_certs[0]) {




        /* CRYPT_E_NOT_FOUND / E_INVALIDARG */
        CertCloseStore(cert_store, 0);
        return CURLE_SSL_CERTPROBLEM;
      }
    }
    CertCloseStore(cert_store, 0);
  }
#else
  if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
    failf(data, "schannel: client cert support not built in");
    return CURLE_NOT_BUILT_IN;
  }
#endif

  /* allocate memory for the re-usable credential handle */
  backend->cred = (struct Curl_schannel_cred *)
    calloc(1, sizeof(struct Curl_schannel_cred));
  if(!backend->cred) {
    failf(data, "schannel: unable to allocate memory");

#ifdef HAS_CLIENT_CERT_PATH
    if(client_certs[0])
      CertFreeCertificateContext(client_certs[0]);
#endif

    return CURLE_OUT_OF_MEMORY;
  }
  backend->cred->refcount = 1;

  /* Windows 10, 1809 (a.k.a. Windows 10 build 17763) */
  if(curlx_verify_windows_version(10, 0, 17763, PLATFORM_WINNT,
                                  VERSION_GREATER_THAN_EQUAL)) {




    char *ciphers13 = 0;

    bool disable_aes_gcm_sha384 = FALSE;
    bool disable_aes_gcm_sha256 = FALSE;
    bool disable_chacha_poly = FALSE;
    bool disable_aes_ccm_8_sha256 = FALSE;
    bool disable_aes_ccm_sha256 = FALSE;

    SCH_CREDENTIALS credentials = { 0 };
    TLS_PARAMETERS tls_parameters = { 0 };
    CRYPTO_SETTINGS crypto_settings[4] = { 0 };
    UNICODE_STRING blocked_ccm_modes[1] = { 0 };
    UNICODE_STRING blocked_gcm_modes[1] = { 0 };

    int crypto_settings_idx = 0;


    /* If TLS 1.3 ciphers are explictly listed, then
     * disable all the ciphers and re-enable which
     * ciphers the user has provided.
     */
    ciphers13 = SSL_CONN_CONFIG(cipher_list13);
    if(ciphers13) {
      const int remaining_ciphers = 5;

      /* detect which remaining ciphers to enable
         and then disable everything else.
      */

      char *startCur = ciphers13;
      int algCount = 0;
      char tmp[LONGEST_ALG_ID] = { 0 };
      char *nameEnd;
      size_t n;

      disable_aes_gcm_sha384 = TRUE;
      disable_aes_gcm_sha256 = TRUE;
      disable_chacha_poly = TRUE;
      disable_aes_ccm_8_sha256 = TRUE;
      disable_aes_ccm_sha256 = TRUE;

      while(startCur && (0 != *startCur) && (algCount < remaining_ciphers)) {
        nameEnd = strchr(startCur, ':');
        n = nameEnd ? (size_t)(nameEnd - startCur) : strlen(startCur);

        /* reject too-long cipher names */
        if(n > (LONGEST_ALG_ID - 1)) {
          failf(data, "Cipher name too long, not checked.");
          return CURLE_SSL_CIPHER;
        }

        strncpy(tmp, startCur, n);
        tmp[n] = 0;

        if(disable_aes_gcm_sha384
           && !strcmp("TLS_AES_256_GCM_SHA384", tmp)) {
          disable_aes_gcm_sha384 = FALSE;
        }
        else if(disable_aes_gcm_sha256
                && !strcmp("TLS_AES_128_GCM_SHA256", tmp)) {
          disable_aes_gcm_sha256 = FALSE;
        }
        else if(disable_chacha_poly
                && !strcmp("TLS_CHACHA20_POLY1305_SHA256", tmp)) {
          disable_chacha_poly = FALSE;
        }
        else if(disable_aes_ccm_8_sha256
                && !strcmp("TLS_AES_128_CCM_8_SHA256", tmp)) {
          disable_aes_ccm_8_sha256 = FALSE;
        }
        else if(disable_aes_ccm_sha256
                && !strcmp("TLS_AES_128_CCM_SHA256", tmp)) {
          disable_aes_ccm_sha256 = FALSE;
        }
        else {
          failf(data, "Passed in an unknown TLS 1.3 cipher.");
          return CURLE_SSL_CIPHER;
        }

        startCur = nameEnd;
        if(startCur)
          startCur++;

        algCount++;
      }
    }

    if(disable_aes_gcm_sha384 && disable_aes_gcm_sha256
       && disable_chacha_poly && disable_aes_ccm_8_sha256
       && disable_aes_ccm_sha256) {
      failf(data, "All available TLS 1.3 ciphers were disabled.");
      return CURLE_SSL_CIPHER;
    }

    /* Disable TLS_AES_128_CCM_8_SHA256 and/or TLS_AES_128_CCM_SHA256 */
    if(disable_aes_ccm_8_sha256 || disable_aes_ccm_sha256) {
      /*
        Disallow AES_CCM algorithm.
      */
      blocked_ccm_modes[0].Length = sizeof(BCRYPT_CHAIN_MODE_CCM);
      blocked_ccm_modes[0].MaximumLength = sizeof(BCRYPT_CHAIN_MODE_CCM);
      blocked_ccm_modes[0].Buffer = (PWSTR)BCRYPT_CHAIN_MODE_CCM;

      crypto_settings[crypto_settings_idx].eAlgorithmUsage =
        TlsParametersCngAlgUsageCipher;
      crypto_settings[crypto_settings_idx].rgstrChainingModes =
        blocked_ccm_modes;
      crypto_settings[crypto_settings_idx].cChainingModes =
        ARRAYSIZE(blocked_ccm_modes);
      crypto_settings[crypto_settings_idx].strCngAlgId.Length =
        sizeof(BCRYPT_AES_ALGORITHM);
      crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
        sizeof(BCRYPT_AES_ALGORITHM);
      crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
        (PWSTR)BCRYPT_AES_ALGORITHM;

      /* only disabling one of the CCM modes */
      if(disable_aes_ccm_8_sha256 != disable_aes_ccm_sha256) {
        if(disable_aes_ccm_8_sha256)
          crypto_settings[crypto_settings_idx].dwMinBitLength = 128;
        else /* disable_aes_ccm_sha256 */
          crypto_settings[crypto_settings_idx].dwMaxBitLength = 64;
      }

      crypto_settings_idx++;
    }

    /* Disable TLS_AES_256_GCM_SHA384 and/or TLS_AES_128_GCM_SHA256 */
    if(disable_aes_gcm_sha384 || disable_aes_gcm_sha256) {

      /*
        Disallow AES_GCM algorithm
      */
      blocked_gcm_modes[0].Length = sizeof(BCRYPT_CHAIN_MODE_GCM);
      blocked_gcm_modes[0].MaximumLength = sizeof(BCRYPT_CHAIN_MODE_GCM);
      blocked_gcm_modes[0].Buffer = (PWSTR)BCRYPT_CHAIN_MODE_GCM;

      /* if only one is disabled, then explictly disable the
         digest cipher suite (sha384 or sha256) */
      if(disable_aes_gcm_sha384 != disable_aes_gcm_sha256) {
        crypto_settings[crypto_settings_idx].eAlgorithmUsage =
          TlsParametersCngAlgUsageDigest;
        crypto_settings[crypto_settings_idx].strCngAlgId.Length =
          sizeof(disable_aes_gcm_sha384 ?
                 BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
        crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
          sizeof(disable_aes_gcm_sha384 ?
                 BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
        crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
          (PWSTR)(disable_aes_gcm_sha384 ?
                  BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
      }
      else { /* Disable both AES_GCM ciphers */
        crypto_settings[crypto_settings_idx].eAlgorithmUsage =
          TlsParametersCngAlgUsageCipher;
        crypto_settings[crypto_settings_idx].strCngAlgId.Length =
          sizeof(BCRYPT_AES_ALGORITHM);
        crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
          sizeof(BCRYPT_AES_ALGORITHM);
        crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
          (PWSTR)BCRYPT_AES_ALGORITHM;
      }

      crypto_settings[crypto_settings_idx].rgstrChainingModes =
        blocked_gcm_modes;
      crypto_settings[crypto_settings_idx].cChainingModes = 1;

      crypto_settings_idx++;
    }

    /*
      Disable ChaCha20-Poly1305.
    */
    if(disable_chacha_poly) {
      crypto_settings[crypto_settings_idx].eAlgorithmUsage =
        TlsParametersCngAlgUsageCipher;
      crypto_settings[crypto_settings_idx].strCngAlgId.Length =
        sizeof(BCRYPT_CHACHA20_POLY1305_ALGORITHM);
      crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
        sizeof(BCRYPT_CHACHA20_POLY1305_ALGORITHM);
      crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
        (PWSTR)BCRYPT_CHACHA20_POLY1305_ALGORITHM;
      crypto_settings_idx++;
    }

    tls_parameters.pDisabledCrypto = crypto_settings;

    /* The number of blocked suites */
    tls_parameters.cDisabledCrypto = crypto_settings_idx;
    credentials.pTlsParameters = &tls_parameters;
    credentials.cTlsParameters = 1;

    credentials.dwVersion = SCH_CREDENTIALS_VERSION;
    credentials.dwFlags = flags | SCH_USE_STRONG_CRYPTO;

    credentials.pTlsParameters->grbitDisabledProtocols =
      (DWORD)~enabled_protocols;

#ifdef HAS_CLIENT_CERT_PATH
    if(client_certs[0]) {
      credentials.cCreds = 1;
      credentials.paCred = client_certs;
    }
#endif

    sspi_status =
      s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR*)UNISP_NAME,
                                         SECPKG_CRED_OUTBOUND, NULL,
                                         &credentials, NULL, NULL,
                                         &backend->cred->cred_handle,
                                         &backend->cred->time_stamp);
  }
  else {
    /* Pre-Windows 10 1809 */
    ALG_ID algIds[NUM_CIPHERS];
    char *ciphers = SSL_CONN_CONFIG(cipher_list);
    SCHANNEL_CRED schannel_cred = { 0 };
    schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;
    schannel_cred.dwFlags = flags;
    schannel_cred.grbitEnabledProtocols = enabled_protocols;

    if(ciphers) {
      result = set_ssl_ciphers(&schannel_cred, ciphers, algIds);
      if(CURLE_OK != result) {
        failf(data, "Unable to set ciphers to passed via SSL_CONN_CONFIG");
        return result;
      }
    }
    else {
      schannel_cred.dwFlags = flags | SCH_USE_STRONG_CRYPTO;
    }

#ifdef HAS_CLIENT_CERT_PATH
    if(client_certs[0]) {
      schannel_cred.cCreds = 1;
      schannel_cred.paCred = client_certs;
    }
#endif

    sspi_status =
      s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR*)UNISP_NAME,
                                         SECPKG_CRED_OUTBOUND, NULL,
                                         &schannel_cred, NULL, NULL,
                                         &backend->cred->cred_handle,
                                         &backend->cred->time_stamp);
  }

#ifdef HAS_CLIENT_CERT_PATH
  if(client_certs[0])
    CertFreeCertificateContext(client_certs[0]);
#endif

  if(sspi_status != SEC_E_OK) {
    char buffer[STRERROR_LEN];
    failf(data, "schannel: AcquireCredentialsHandle failed: %s",
          Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
    Curl_safefree(backend->cred);
    switch(sspi_status) {
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
      /* check if server wants to renegotiate the connection context */
      if(sspi_status == SEC_I_RENEGOTIATE) {
        infof(data, "schannel: remote party requests renegotiation");
        if(*err && *err != CURLE_AGAIN) {
          infof(data, "schannel: can't renegotiate, an error is pending");
          goto cleanup;
        }
        if(backend->encdata_offset) {
          *err = CURLE_RECV_ERROR;
          infof(data, "schannel: can't renegotiate, "
                "encrypted data available");
          goto cleanup;
        }
        /* begin renegotiation */
        infof(data, "schannel: renegotiating SSL/TLS connection");
        connssl->state = ssl_connection_negotiating;
        connssl->connecting_state = ssl_connect_2_writing;
        *err = schannel_connect_common(data, conn, sockindex, FALSE, &done);
        if(*err) {
          infof(data, "schannel: renegotiation failed");







<
<
<
<
<
|







2284
2285
2286
2287
2288
2289
2290





2291
2292
2293
2294
2295
2296
2297
2298
      /* check if server wants to renegotiate the connection context */
      if(sspi_status == SEC_I_RENEGOTIATE) {
        infof(data, "schannel: remote party requests renegotiation");
        if(*err && *err != CURLE_AGAIN) {
          infof(data, "schannel: can't renegotiate, an error is pending");
          goto cleanup;
        }






        /* begin renegotiation */
        infof(data, "schannel: renegotiating SSL/TLS connection");
        connssl->state = ssl_connection_negotiating;
        connssl->connecting_state = ssl_connect_2_writing;
        *err = schannel_connect_common(data, conn, sockindex, FALSE, &done);
        if(*err) {
          infof(data, "schannel: renegotiation failed");
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

  return size;
}

static CURLcode schannel_random(struct Curl_easy *data UNUSED_PARAM,
                                unsigned char *entropy, size_t length)
{
  HCRYPTPROV hCryptProv = 0;

  (void)data;

  if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
                          CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
    return CURLE_FAILED_INIT;

  if(!CryptGenRandom(hCryptProv, (DWORD)length, entropy)) {
    CryptReleaseContext(hCryptProv, 0UL);
    return CURLE_FAILED_INIT;
  }

  CryptReleaseContext(hCryptProv, 0UL);
  return CURLE_OK;
}

static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
                                    struct connectdata *conn, int sockindex,
                                    const char *pinnedpubkey)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];







<
<


<
<
<
|
<
<
<
<
<
<
<







2585
2586
2587
2588
2589
2590
2591


2592
2593



2594







2595
2596
2597
2598
2599
2600
2601

  return size;
}

static CURLcode schannel_random(struct Curl_easy *data UNUSED_PARAM,
                                unsigned char *entropy, size_t length)
{


  (void)data;




  return Curl_win32_random(entropy, length);







}

static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
                                    struct connectdata *conn, int sockindex,
                                    const char *pinnedpubkey)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
2455
2456
2457
2458
2459
2460
2461
2462

2463
2464
2465
2466
2467
2468
2469
const struct Curl_ssl Curl_ssl_schannel = {
  { CURLSSLBACKEND_SCHANNEL, "schannel" }, /* info */

  SSLSUPP_CERTINFO |
#ifdef HAS_MANUAL_VERIFY_API
  SSLSUPP_CAINFO_BLOB |
#endif
  SSLSUPP_PINNEDPUBKEY,


  sizeof(struct ssl_backend_data),

  schannel_init,                     /* init */
  schannel_cleanup,                  /* cleanup */
  schannel_version,                  /* version */
  Curl_none_check_cxn,               /* check_cxn */







|
>







2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
const struct Curl_ssl Curl_ssl_schannel = {
  { CURLSSLBACKEND_SCHANNEL, "schannel" }, /* info */

  SSLSUPP_CERTINFO |
#ifdef HAS_MANUAL_VERIFY_API
  SSLSUPP_CAINFO_BLOB |
#endif
  SSLSUPP_PINNEDPUBKEY |
  SSLSUPP_TLS13_CIPHERSUITES,

  sizeof(struct ssl_backend_data),

  schannel_init,                     /* init */
  schannel_cleanup,                  /* cleanup */
  schannel_version,                  /* version */
  Curl_none_check_cxn,               /* check_cxn */
Changes to jni/curl/lib/vtls/schannel.h.
23
24
25
26
27
28
29






















30
31
32
33
34
35
36
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#include "curl_setup.h"

#ifdef USE_SCHANNEL























#include <schnlsp.h>
#include <schannel.h>
#include "curl_sspi.h"

#include "urldata.h"








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







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#include "curl_setup.h"

#ifdef USE_SCHANNEL

#define SCHANNEL_USE_BLACKLISTS 1

#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4201)
#endif
#include <subauth.h>
#ifdef _MSC_VER
#pragma warning(pop)
#endif
/* Wincrypt must be included before anything that could include OpenSSL. */
#if defined(USE_WIN32_CRYPTO)
#include <wincrypt.h>
/* Undefine wincrypt conflicting symbols for BoringSSL. */
#undef X509_NAME
#undef X509_EXTENSIONS
#undef PKCS7_ISSUER_AND_SERIAL
#undef PKCS7_SIGNER_INFO
#undef OCSP_REQUEST
#undef OCSP_RESPONSE
#endif

#include <schnlsp.h>
#include <schannel.h>
#include "curl_sspi.h"

#include "urldata.h"

66
67
68
69
70
71
72

























































73
74
75
76
77
78
79
#define HAS_MANUAL_VERIFY_API
#endif
#else
#include <wincrypt.h>
#ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN
#define HAS_MANUAL_VERIFY_API
#endif

























































#endif

struct Curl_schannel_cred {
  CredHandle cred_handle;
  TimeStamp time_stamp;
  TCHAR *sni_hostname;
  int refcount;







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







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
#define HAS_MANUAL_VERIFY_API
#endif
#else
#include <wincrypt.h>
#ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN
#define HAS_MANUAL_VERIFY_API
#endif
#endif

#ifndef SCH_CREDENTIALS_VERSION

#define SCH_CREDENTIALS_VERSION  0x00000005

typedef enum _eTlsAlgorithmUsage
{
    TlsParametersCngAlgUsageKeyExchange,
    TlsParametersCngAlgUsageSignature,
    TlsParametersCngAlgUsageCipher,
    TlsParametersCngAlgUsageDigest,
    TlsParametersCngAlgUsageCertSig
} eTlsAlgorithmUsage;

typedef struct _CRYPTO_SETTINGS
{
    eTlsAlgorithmUsage  eAlgorithmUsage;
    UNICODE_STRING      strCngAlgId;
    DWORD               cChainingModes;
    PUNICODE_STRING     rgstrChainingModes;
    DWORD               dwMinBitLength;
    DWORD               dwMaxBitLength;
} CRYPTO_SETTINGS, * PCRYPTO_SETTINGS;

typedef struct _TLS_PARAMETERS
{
    DWORD               cAlpnIds;
    PUNICODE_STRING     rgstrAlpnIds;
    DWORD               grbitDisabledProtocols;
    DWORD               cDisabledCrypto;
    PCRYPTO_SETTINGS    pDisabledCrypto;
    DWORD               dwFlags;
} TLS_PARAMETERS, * PTLS_PARAMETERS;

typedef struct _SCH_CREDENTIALS
{
    DWORD               dwVersion;
    DWORD               dwCredFormat;
    DWORD               cCreds;
    PCCERT_CONTEXT* paCred;
    HCERTSTORE          hRootStore;

    DWORD               cMappers;
    struct _HMAPPER **aphMappers;

    DWORD               dwSessionLifespan;
    DWORD               dwFlags;
    DWORD               cTlsParameters;
    PTLS_PARAMETERS     pTlsParameters;
} SCH_CREDENTIALS, * PSCH_CREDENTIALS;

#define SCH_CRED_MAX_SUPPORTED_PARAMETERS 16
#define SCH_CRED_MAX_SUPPORTED_ALPN_IDS 16
#define SCH_CRED_MAX_SUPPORTED_CRYPTO_SETTINGS 16
#define SCH_CRED_MAX_SUPPORTED_CHAINING_MODES 16

#endif

struct Curl_schannel_cred {
  CredHandle cred_handle;
  TimeStamp time_stamp;
  TCHAR *sni_hostname;
  int refcount;
Changes to jni/curl/lib/vtls/vtls.c.
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#endif
}

#ifdef USE_SSL
static int multissl_setup(const struct Curl_ssl *backend);
#endif

int Curl_ssl_backend(void)
{
#ifdef USE_SSL
  multissl_setup(NULL);
  return Curl_ssl->info.id;
#else
  return (int)CURLSSLBACKEND_NONE;
#endif
}

#ifdef USE_SSL

/* "global" init done? */
static bool init_ssl = FALSE;







|





|







215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#endif
}

#ifdef USE_SSL
static int multissl_setup(const struct Curl_ssl *backend);
#endif

curl_sslbackend Curl_ssl_backend(void)
{
#ifdef USE_SSL
  multissl_setup(NULL);
  return Curl_ssl->info.id;
#else
  return CURLSSLBACKEND_NONE;
#endif
}

#ifdef USE_SSL

/* "global" init done? */
static bool init_ssl = FALSE;
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
 */

char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen)
{
  size_t len = strlen(host);
  if(len && (host[len-1] == '.'))
    len--;
  if((long)len >= data->set.buffer_size)
    return NULL;

  Curl_strntolower(data->state.buffer, host, len);
  data->state.buffer[len] = 0;
  if(olen)
    *olen = len;
  return data->state.buffer;







|







895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
 */

char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen)
{
  size_t len = strlen(host);
  if(len && (host[len-1] == '.'))
    len--;
  if(len >= data->set.buffer_size)
    return NULL;

  Curl_strntolower(data->state.buffer, host, len);
  data->state.buffer[len] = 0;
  if(olen)
    *olen = len;
  return data->state.buffer;
Changes to jni/curl/lib/vtls/vtls.h.
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
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);
CURLcode Curl_ssl_connect(struct Curl_easy *data, struct connectdata *conn,
                          int sockindex);
CURLcode Curl_ssl_connect_nonblocking(struct Curl_easy *data,







|







196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
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);

curl_sslbackend Curl_ssl_backend(void);

#ifdef USE_SSL
int Curl_ssl_init(void);
void Curl_ssl_cleanup(void);
CURLcode Curl_ssl_connect(struct Curl_easy *data, struct connectdata *conn,
                          int sockindex);
CURLcode Curl_ssl_connect_nonblocking(struct Curl_easy *data,
jni/curl/ltmain.sh became executable.
Deleted jni/curl/m4/ax_compile_check_sizeof.m4.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
# ============================================================================
#  https://www.gnu.org/software/autoconf-archive/ax_compile_check_sizeof.html
# ============================================================================
#
# SYNOPSIS
#
#   AX_COMPILE_CHECK_SIZEOF(TYPE [, HEADERS [, EXTRA_SIZES...]])
#
# DESCRIPTION
#
#   This macro checks for the size of TYPE using compile checks, not run
#   checks. You can supply extra HEADERS to look into. the check will cycle
#   through 1 2 4 8 16 and any EXTRA_SIZES the user supplies. If a match is
#   found, it will #define SIZEOF_`TYPE' to that value. Otherwise it will
#   emit a configure time error indicating the size of the type could not be
#   determined.
#
#   The trick is that C will not allow duplicate case labels. While this is
#   valid C code:
#
#     switch (0) case 0: case 1:;
#
#   The following is not:
#
#     switch (0) case 0: case 0:;
#
#   Thus, the AC_TRY_COMPILE will fail if the currently tried size does not
#   match.
#
#   Here is an example skeleton configure.in script, demonstrating the
#   macro's usage:
#
#     AC_PROG_CC
#     AC_CHECK_HEADERS(stddef.h unistd.h)
#     AC_TYPE_SIZE_T
#     AC_CHECK_TYPE(ssize_t, int)
#
#     headers='#ifdef HAVE_STDDEF_H
#     #include <stddef.h>
#     #endif
#     #ifdef HAVE_UNISTD_H
#     #include <unistd.h>
#     #endif
#     '
#
#     AX_COMPILE_CHECK_SIZEOF(char)
#     AX_COMPILE_CHECK_SIZEOF(short)
#     AX_COMPILE_CHECK_SIZEOF(int)
#     AX_COMPILE_CHECK_SIZEOF(long)
#     AX_COMPILE_CHECK_SIZEOF(unsigned char *)
#     AX_COMPILE_CHECK_SIZEOF(void *)
#     AX_COMPILE_CHECK_SIZEOF(size_t, $headers)
#     AX_COMPILE_CHECK_SIZEOF(ssize_t, $headers)
#     AX_COMPILE_CHECK_SIZEOF(ptrdiff_t, $headers)
#     AX_COMPILE_CHECK_SIZEOF(off_t, $headers)
#
# LICENSE
#
#   Copyright (c) 2008 Kaveh Ghazi <ghazi@caip.rutgers.edu>
#   Copyright (c) 2017 Reini Urban <rurban@cpan.org>
#
#   This program is free software: you can redistribute it and/or modify it
#   under the terms of the GNU General Public License as published by the
#   Free Software Foundation, either version 3 of the License, or (at your
#   option) any later version.
#
#   This program is distributed in the hope that it will be useful, but
#   WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
#   Public License for more details.
#
#   You should have received a copy of the GNU General Public License along
#   with this program. If not, see <https://www.gnu.org/licenses/>.
#
#   As a special exception, the respective Autoconf Macro's copyright owner
#   gives unlimited permission to copy, distribute and modify the configure
#   scripts that are the output of Autoconf when processing the Macro. You
#   need not follow the terms of the GNU General Public License when using
#   or distributing such scripts, even though portions of the text of the
#   Macro appear in them. The GNU General Public License (GPL) does govern
#   all other use of the material that constitutes the Autoconf Macro.
#
#   This special exception to the GPL applies to versions of the Autoconf
#   Macro released by the Autoconf Archive. When you make and distribute a
#   modified version of the Autoconf Macro, you may extend this special
#   exception to the GPL to apply to your modified version as well.
#
#   SPDX-License-Identifier: GPL-3.0-or-later

#serial 7

AU_ALIAS([AC_COMPILE_CHECK_SIZEOF], [AX_COMPILE_CHECK_SIZEOF])
AC_DEFUN([AX_COMPILE_CHECK_SIZEOF],
[changequote(<<, >>)dnl
dnl The name to #define.
define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
changequote([, ])dnl
AC_MSG_CHECKING(size of $1)
AC_CACHE_VAL(AC_CV_NAME,
[for ac_size in 4 8 1 2 16 $3 ; do # List sizes in rough order of prevalence.
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
$2
]], [[switch (0) case 0: case (sizeof ($1) == $ac_size):;]])], [AC_CV_NAME=$ac_size])
  if test x$AC_CV_NAME != x ; then break; fi
done
])
if test x$AC_CV_NAME = x ; then
  AC_MSG_ERROR([cannot determine a size for $1])
fi
AC_MSG_RESULT($AC_CV_NAME)
AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1])
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
])
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<










































































































































































































































Changes to jni/curl/m4/curl-amissl.m4.
19
20
21
22
23
24
25
26
27
28
29







30






31
32
33
34




35
36
37
38









39
40

41
42
43
44
45
46
47
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
#***************************************************************************

AC_DEFUN([CURL_WITH_AMISSL], [
AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)])
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
  if test "x$OPT_AMISSL" != xno; then
    ssl_msg=







    if test "x$OPT_AMISSL" != "xno"; then






      AC_MSG_RESULT(yes)
      ssl_msg="AmiSSL"
      test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
      AMISSL_ENABLED=1




      LIBS="-lamisslauto $LIBS"
      AC_DEFINE(USE_AMISSL, 1, [if AmiSSL is in use])
      AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use])
    else









      AC_MSG_RESULT(no)
    fi

    test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
  else
    AC_MSG_RESULT(no)
  fi
else
  AC_MSG_RESULT(no)
fi







|



>
>
>
>
>
>
>
|
>
>
>
>
>
>
|



>
>
>
>
|


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







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

55
56
57
58
59
60
61
62
63
64

65
66
67
68
69
70
71
72
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
#***************************************************************************

AC_DEFUN([CURL_WITH_AMISSL], [
AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL v5)])
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
  if test "x$OPT_AMISSL" != xno; then
    ssl_msg=
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        #include <libraries/amisslmaster.h>
        #include <openssl/opensslv.h>
      ]],[[
        #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
            defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
            defined(PROTO_AMISSL_H)
        return 0;
        #else
        #error not AmiSSL v5 / OpenSSL 3
        #endif
      ]])
    ],[
      AC_MSG_RESULT([yes])
      ssl_msg="AmiSSL"
      test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
      AMISSL_ENABLED=1
      OPENSSL_ENABLED=1
      # Use AmiSSL's built-in ca bundle
      check_for_ca_bundle=1
      with_ca_fallback=yes
      LIBS="-lamisslstubs -lamisslauto $LIBS"
      AC_DEFINE(USE_AMISSL, 1, [if AmiSSL is in use])
      AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use])

      AC_DEFINE_UNQUOTED(HAVE_OPENSSL3, 1, [Define to 1 if using OpenSSL 3 or later.])
      AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
                       openssl/pem.h openssl/ssl.h openssl/err.h)
      dnl OpenSSLv3 marks the DES functions deprecated but we have no
      dnl replacements (yet) so tell the compiler to not warn for them
      dnl
      dnl Ask OpenSSL to suppress the warnings.
      CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED"
    ],[
      AC_MSG_RESULT([no])

    ])
    test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
  else
    AC_MSG_RESULT(no)
  fi
else
  AC_MSG_RESULT(no)
fi
Changes to jni/curl/m4/curl-compilers.m4.
563
564
565
566
567
568
569
570
571
572
573

574

575
576
577
578
579
580
581
582
        dnl we select ANSI C89 dialect plus GNU extensions.
        tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
        dnl Change some warnings into errors
        dnl #140: too many arguments in function call
        dnl #147: declaration is incompatible with 'previous one'
        dnl #165: too few arguments in function call
        dnl #266: function declared implicitly
        tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
        dnl Disable some remarks
        dnl #279: controlling expression is constant
        dnl #981: operands are evaluated in unspecified order

        dnl #1469: "cc" clobber ignored

        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
        ;;
        #
      INTEL_WINDOWS_C)
        #
        dnl Placeholder
        tmp_CFLAGS="$tmp_CFLAGS"
        ;;







|



>

>
|







563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
        dnl we select ANSI C89 dialect plus GNU extensions.
        tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
        dnl Change some warnings into errors
        dnl #140: too many arguments in function call
        dnl #147: declaration is incompatible with 'previous one'
        dnl #165: too few arguments in function call
        dnl #266: function declared implicitly
        tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266"
        dnl Disable some remarks
        dnl #279: controlling expression is constant
        dnl #981: operands are evaluated in unspecified order
        dnl #1025: zero extending result of unary operation
        dnl #1469: "cc" clobber ignored
        dnl #2259: non-pointer conversion from X to Y may lose significant bits
        tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259"
        ;;
        #
      INTEL_WINDOWS_C)
        #
        dnl Placeholder
        tmp_CFLAGS="$tmp_CFLAGS"
        ;;
Changes to jni/curl/m4/curl-confopts.m4.
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434

dnl CURL_CHECK_NONBLOCKING_SOCKET
dnl -------------------------------------------------
dnl Check for how to set a socket into non-blocking state.

AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], [
  AC_REQUIRE([CURL_CHECK_FUNC_FCNTL])dnl
  AC_REQUIRE([CURL_CHECK_FUNC_IOCTL])dnl
  AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET])dnl
  AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL])dnl
  AC_REQUIRE([CURL_CHECK_FUNC_SETSOCKOPT])dnl
  #
  tst_method="unknown"

  AC_MSG_CHECKING([how to set a socket into non-blocking mode])
  if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then
    tst_method="fcntl O_NONBLOCK"
  elif test "x$curl_cv_func_ioctl_fionbio" = "xyes"; then







<


<







417
418
419
420
421
422
423

424
425

426
427
428
429
430
431
432

dnl CURL_CHECK_NONBLOCKING_SOCKET
dnl -------------------------------------------------
dnl Check for how to set a socket into non-blocking state.

AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], [
  AC_REQUIRE([CURL_CHECK_FUNC_FCNTL])dnl

  AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET])dnl
  AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL])dnl

  #
  tst_method="unknown"

  AC_MSG_CHECKING([how to set a socket into non-blocking mode])
  if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then
    tst_method="fcntl O_NONBLOCK"
  elif test "x$curl_cv_func_ioctl_fionbio" = "xyes"; then
Changes to jni/curl/m4/curl-functions.m4.
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
#endif
/* includes end */"
  AC_CHECK_HEADERS(
    sys/types.h socket.h,
    [], [], [$curl_includes_socket])
])


dnl CURL_INCLUDES_STDIO
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when stdio.h is to be included.

AC_DEFUN([CURL_INCLUDES_STDIO], [
curl_includes_stdio="\
/* includes start */
#ifdef HAVE_SYS_TYPES_H
#  include <sys/types.h>
#endif
#ifdef HAVE_STDIO_H
#  include <stdio.h>
#endif
/* includes end */"
  AC_CHECK_HEADERS(
    sys/types.h stdio.h,
    [], [], [$curl_includes_stdio])
])


dnl CURL_INCLUDES_STDLIB
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when stdlib.h is to be included.

AC_DEFUN([CURL_INCLUDES_STDLIB], [







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







261
262
263
264
265
266
267





















268
269
270
271
272
273
274
#endif
/* includes end */"
  AC_CHECK_HEADERS(
    sys/types.h socket.h,
    [], [], [$curl_includes_socket])
])























dnl CURL_INCLUDES_STDLIB
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when stdlib.h is to be included.

AC_DEFUN([CURL_INCLUDES_STDLIB], [
539
540
541
542
543
544
545
546


547






548


549
550
551
552
553
554
555
556
557
558
559
560
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when bsdsocket.h is to be included.

AC_DEFUN([CURL_INCLUDES_BSDSOCKET], [
curl_includes_bsdsocket="\
/* includes start */
#ifdef HAVE_PROTO_BSDSOCKET_H


#  include <proto/bsdsocket.h>






  struct Library *SocketBase = NULL;


#endif
/* includes end */"
  AC_CHECK_HEADERS(
    proto/bsdsocket.h,
    [], [], [      $curl_includes_bsdsocket])
])

dnl CURL_INCLUDES_NETIF
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when net/if.h is to be included.








|
>
>

>
>
>
>
>
>
|
>
>




|







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
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when bsdsocket.h is to be included.

AC_DEFUN([CURL_INCLUDES_BSDSOCKET], [
curl_includes_bsdsocket="\
/* includes start */
#if defined(HAVE_PROTO_BSDSOCKET_H)
#  define __NO_NET_API
#  define __USE_INLINE__
#  include <proto/bsdsocket.h>
#  ifdef HAVE_SYS_IOCTL_H
#    include <sys/ioctl.h>
#  endif
#  ifdef __amigaos4__
struct SocketIFace *ISocket = NULL;
#  else
struct Library *SocketBase = NULL;
#  endif
#  define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
/* includes end */"
  AC_CHECK_HEADERS(
    proto/bsdsocket.h,
    [], [], [$curl_includes_bsdsocket])
])

dnl CURL_INCLUDES_NETIF
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
dnl included when net/if.h is to be included.

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
  tst_compi_closesocket="unknown"
  tst_allow_closesocket="unknown"
  #
  AC_MSG_CHECKING([if closesocket can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_socket
    ]],[[
      if(0 != closesocket(0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_closesocket="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_closesocket="no"
  ])
  #
  if test "$tst_links_closesocket" = "yes"; then
    AC_MSG_CHECKING([if closesocket is prototyped])
    AC_EGREP_CPP([closesocket],[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_socket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_closesocket="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_closesocket="no"
    ])
  fi
  #
  if test "$tst_proto_closesocket" = "yes"; then
    AC_MSG_CHECKING([if closesocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_socket
      ]],[[
        if(0 != closesocket(0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])







<

















<















<







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
  tst_compi_closesocket="unknown"
  tst_allow_closesocket="unknown"
  #
  AC_MSG_CHECKING([if closesocket can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_winsock2

      $curl_includes_socket
    ]],[[
      if(0 != closesocket(0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_closesocket="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_closesocket="no"
  ])
  #
  if test "$tst_links_closesocket" = "yes"; then
    AC_MSG_CHECKING([if closesocket is prototyped])
    AC_EGREP_CPP([closesocket],[
      $curl_includes_winsock2

      $curl_includes_socket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_closesocket="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_closesocket="no"
    ])
  fi
  #
  if test "$tst_proto_closesocket" = "yes"; then
    AC_MSG_CHECKING([if closesocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2

        $curl_includes_socket
      ]],[[
        if(0 != closesocket(0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
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
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_closesocket_camel,
dnl then HAVE_CLOSESOCKET_CAMEL will be defined.

AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl

  #
  tst_links_closesocket_camel="unknown"
  tst_proto_closesocket_camel="unknown"
  tst_compi_closesocket_camel="unknown"
  tst_allow_closesocket_camel="unknown"
  #
  AC_MSG_CHECKING([if CloseSocket can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[

      $curl_includes_sys_socket
    ]],[[
      if(0 != CloseSocket(0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_closesocket_camel="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_closesocket_camel="no"
  ])
  #
  if test "$tst_links_closesocket_camel" = "yes"; then
    AC_MSG_CHECKING([if CloseSocket is prototyped])
    AC_EGREP_CPP([CloseSocket],[

      $curl_includes_sys_socket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_closesocket_camel="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_closesocket_camel="no"
    ])
  fi
  #
  if test "$tst_proto_closesocket_camel" = "yes"; then
    AC_MSG_CHECKING([if CloseSocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[

        $curl_includes_sys_socket
      ]],[[
        if(0 != CloseSocket(0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])







>









>
















>














>







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
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_closesocket_camel,
dnl then HAVE_CLOSESOCKET_CAMEL will be defined.

AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  #
  tst_links_closesocket_camel="unknown"
  tst_proto_closesocket_camel="unknown"
  tst_compi_closesocket_camel="unknown"
  tst_allow_closesocket_camel="unknown"
  #
  AC_MSG_CHECKING([if CloseSocket can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_bsdsocket
      $curl_includes_sys_socket
    ]],[[
      if(0 != CloseSocket(0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_closesocket_camel="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_closesocket_camel="no"
  ])
  #
  if test "$tst_links_closesocket_camel" = "yes"; then
    AC_MSG_CHECKING([if CloseSocket is prototyped])
    AC_EGREP_CPP([CloseSocket],[
      $curl_includes_bsdsocket
      $curl_includes_sys_socket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_closesocket_camel="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_closesocket_camel="no"
    ])
  fi
  #
  if test "$tst_proto_closesocket_camel" = "yes"; then
    AC_MSG_CHECKING([if CloseSocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_bsdsocket
        $curl_includes_sys_socket
      ]],[[
        if(0 != CloseSocket(0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
958
959
960
961
962
963
964

965
966
967
968
969
970
971
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_connect, then
dnl HAVE_CONNECT will be defined.

AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl

  AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
  #
  tst_links_connect="unknown"
  tst_proto_connect="unknown"
  tst_compi_connect="unknown"
  tst_allow_connect="unknown"
  #







>







948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_connect, then
dnl HAVE_CONNECT will be defined.

AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
  #
  tst_links_connect="unknown"
  tst_proto_connect="unknown"
  tst_compi_connect="unknown"
  tst_allow_connect="unknown"
  #
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
  fi
  #
  if test "$tst_proto_connect" = "yes"; then
    AC_MSG_CHECKING([if connect is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket
      ]],[[
        if(0 != connect(0, 0, 0))
          return 1;
      ]])
    ],[







|







996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
  fi
  #
  if test "$tst_proto_connect" = "yes"; then
    AC_MSG_CHECKING([if connect is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
        $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket
      ]],[[
        if(0 != connect(0, 0, 0))
          return 1;
      ]])
    ],[
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
  fi
  #
  if test "$tst_proto_gethostbyname" = "yes"; then
    AC_MSG_CHECKING([if gethostbyname is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_netdb
      ]],[[
        if(0 != gethostbyname(0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])







|







2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
  fi
  #
  if test "$tst_proto_gethostbyname" = "yes"; then
    AC_MSG_CHECKING([if gethostbyname is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
        $curl_includes_bsdsocket
        $curl_includes_netdb
      ]],[[
        if(0 != gethostbyname(0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
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
  #
  if test "$tst_proto_gethostbyname_r" = "yes"; then
    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
      AC_MSG_CHECKING([if gethostbyname_r takes 3 args.])
      AC_COMPILE_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_netdb

        ]],[[
          if(0 != gethostbyname_r(0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_compi_gethostbyname_r="yes"
        tst_nargs_gethostbyname_r="3"
      ],[
        AC_MSG_RESULT([no])
        tst_compi_gethostbyname_r="no"
      ])
    fi
    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
      AC_MSG_CHECKING([if gethostbyname_r takes 5 args.])
      AC_COMPILE_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_netdb

        ]],[[
          if(0 != gethostbyname_r(0, 0, 0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_compi_gethostbyname_r="yes"
        tst_nargs_gethostbyname_r="5"
      ],[
        AC_MSG_RESULT([no])
        tst_compi_gethostbyname_r="no"
      ])
    fi
    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
      AC_MSG_CHECKING([if gethostbyname_r takes 6 args.])
      AC_COMPILE_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_netdb

        ]],[[
          if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_compi_gethostbyname_r="yes"







>


















>


















>







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
  #
  if test "$tst_proto_gethostbyname_r" = "yes"; then
    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
      AC_MSG_CHECKING([if gethostbyname_r takes 3 args.])
      AC_COMPILE_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_netdb
          $curl_includes_bsdsocket
        ]],[[
          if(0 != gethostbyname_r(0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_compi_gethostbyname_r="yes"
        tst_nargs_gethostbyname_r="3"
      ],[
        AC_MSG_RESULT([no])
        tst_compi_gethostbyname_r="no"
      ])
    fi
    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
      AC_MSG_CHECKING([if gethostbyname_r takes 5 args.])
      AC_COMPILE_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_netdb
          $curl_includes_bsdsocket
        ]],[[
          if(0 != gethostbyname_r(0, 0, 0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_compi_gethostbyname_r="yes"
        tst_nargs_gethostbyname_r="5"
      ],[
        AC_MSG_RESULT([no])
        tst_compi_gethostbyname_r="no"
      ])
    fi
    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
      AC_MSG_CHECKING([if gethostbyname_r takes 6 args.])
      AC_COMPILE_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_netdb
          $curl_includes_bsdsocket
        ]],[[
          if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_compi_gethostbyname_r="yes"
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
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_gethostname, then
dnl HAVE_GETHOSTNAME will be defined.

AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl

  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
  AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  #
  tst_links_gethostname="unknown"
  tst_proto_gethostname="unknown"
  tst_compi_gethostname="unknown"
  tst_allow_gethostname="unknown"
  #
  AC_MSG_CHECKING([if gethostname can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_unistd
    ]],[[
      if(0 != gethostname(0, 0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_gethostname="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_gethostname="no"
  ])
  #
  if test "$tst_links_gethostname" = "yes"; then
    AC_MSG_CHECKING([if gethostname is prototyped])
    AC_EGREP_CPP([gethostname],[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_unistd
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_gethostname="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_gethostname="no"
    ])
  fi
  #
  if test "$tst_proto_gethostname" = "yes"; then
    AC_MSG_CHECKING([if gethostname is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_unistd
      ]],[[
        if(0 != gethostname(0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_gethostname="yes"







>


<










|
|
















|
|














|
|







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
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_gethostname, then
dnl HAVE_GETHOSTNAME will be defined.

AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
  AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl

  #
  tst_links_gethostname="unknown"
  tst_proto_gethostname="unknown"
  tst_compi_gethostname="unknown"
  tst_allow_gethostname="unknown"
  #
  AC_MSG_CHECKING([if gethostname can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_winsock2
      $curl_includes_unistd
      $curl_includes_bsdsocket
    ]],[[
      if(0 != gethostname(0, 0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_gethostname="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_gethostname="no"
  ])
  #
  if test "$tst_links_gethostname" = "yes"; then
    AC_MSG_CHECKING([if gethostname is prototyped])
    AC_EGREP_CPP([gethostname],[
      $curl_includes_winsock2
      $curl_includes_unistd
      $curl_includes_bsdsocket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_gethostname="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_gethostname="no"
    ])
  fi
  #
  if test "$tst_proto_gethostname" = "yes"; then
    AC_MSG_CHECKING([if gethostname is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
        $curl_includes_unistd
        $curl_includes_bsdsocket
      ]],[[
        if(0 != gethostname(0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_gethostname="yes"
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
    tst_gethostname_type_arg2="unknown"
    for tst_arg1 in 'char *' 'unsigned char *' 'void *'; do
      for tst_arg2 in 'int' 'unsigned int' 'size_t'; do
        if test "$tst_gethostname_type_arg2" = "unknown"; then
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              $curl_includes_winsock2
      $curl_includes_bsdsocket
              $curl_includes_unistd
              $curl_preprocess_callconv
              extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
            ]],[[
              if(0 != gethostname(0, 0))
                return 1;
            ]])
          ],[







|
|







2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
    tst_gethostname_type_arg2="unknown"
    for tst_arg1 in 'char *' 'unsigned char *' 'void *'; do
      for tst_arg2 in 'int' 'unsigned int' 'size_t'; do
        if test "$tst_gethostname_type_arg2" = "unknown"; then
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              $curl_includes_winsock2
              $curl_includes_unistd
              $curl_includes_bsdsocket
              $curl_preprocess_callconv
              extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
            ]],[[
              if(0 != gethostname(0, 0))
                return 1;
            ]])
          ],[
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
    curl_cv_func_inet_pton="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_inet_pton="no"
  fi
])


dnl CURL_CHECK_FUNC_IOCTL
dnl -------------------------------------------------
dnl Verify if ioctl 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_ioctl, then
dnl HAVE_IOCTL will be defined.

AC_DEFUN([CURL_CHECK_FUNC_IOCTL], [
  AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
  #
  tst_links_ioctl="unknown"
  tst_proto_ioctl="unknown"
  tst_compi_ioctl="unknown"
  tst_allow_ioctl="unknown"
  #
  AC_MSG_CHECKING([if ioctl can be linked])
  AC_LINK_IFELSE([
    AC_LANG_FUNC_LINK_TRY([ioctl])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_ioctl="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_ioctl="no"
  ])
  #
  if test "$tst_links_ioctl" = "yes"; then
    AC_MSG_CHECKING([if ioctl is prototyped])
    AC_EGREP_CPP([ioctl],[
      $curl_includes_stropts
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_ioctl="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_ioctl="no"
    ])
  fi
  #
  if test "$tst_proto_ioctl" = "yes"; then
    AC_MSG_CHECKING([if ioctl is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_stropts
      ]],[[
        if(0 != ioctl(0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_ioctl="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_ioctl="no"
    ])
  fi
  #
  if test "$tst_compi_ioctl" = "yes"; then
    AC_MSG_CHECKING([if ioctl usage allowed])
    if test "x$curl_disallow_ioctl" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_ioctl="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_ioctl="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if ioctl might be used])
  if test "$tst_links_ioctl" = "yes" &&
     test "$tst_proto_ioctl" = "yes" &&
     test "$tst_compi_ioctl" = "yes" &&
     test "$tst_allow_ioctl" = "yes"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_IOCTL, 1,
      [Define to 1 if you have the ioctl function.])
    curl_cv_func_ioctl="yes"
    CURL_CHECK_FUNC_IOCTL_FIONBIO
    CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
  else
    AC_MSG_RESULT([no])
    curl_cv_func_ioctl="no"
  fi
])


dnl CURL_CHECK_FUNC_IOCTL_FIONBIO
dnl -------------------------------------------------
dnl Verify if ioctl with the FIONBIO command is
dnl available, can be compiled, and seems to work. If
dnl all of these are true, then HAVE_IOCTL_FIONBIO
dnl will be defined.







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







3450
3451
3452
3453
3454
3455
3456























































































3457
3458
3459
3460
3461
3462
3463
    curl_cv_func_inet_pton="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_inet_pton="no"
  fi
])

























































































dnl CURL_CHECK_FUNC_IOCTL_FIONBIO
dnl -------------------------------------------------
dnl Verify if ioctl with the FIONBIO command is
dnl available, can be compiled, and seems to work. If
dnl all of these are true, then HAVE_IOCTL_FIONBIO
dnl will be defined.
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
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
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
  tst_compi_ioctlsocket="unknown"
  tst_allow_ioctlsocket="unknown"
  #
  AC_MSG_CHECKING([if ioctlsocket can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
    ]],[[
      if(0 != ioctlsocket(0, 0, 0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_ioctlsocket="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_ioctlsocket="no"
  ])
  #
  if test "$tst_links_ioctlsocket" = "yes"; then
    AC_MSG_CHECKING([if ioctlsocket is prototyped])
    AC_EGREP_CPP([ioctlsocket],[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_ioctlsocket="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_ioctlsocket="no"
    ])
  fi
  #
  if test "$tst_proto_ioctlsocket" = "yes"; then
    AC_MSG_CHECKING([if ioctlsocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
      ]],[[
        if(0 != ioctlsocket(0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_ioctlsocket="yes"







<
















<














<







3584
3585
3586
3587
3588
3589
3590

3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606

3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620

3621
3622
3623
3624
3625
3626
3627
  tst_compi_ioctlsocket="unknown"
  tst_allow_ioctlsocket="unknown"
  #
  AC_MSG_CHECKING([if ioctlsocket can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_winsock2

    ]],[[
      if(0 != ioctlsocket(0, 0, 0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_ioctlsocket="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_ioctlsocket="no"
  ])
  #
  if test "$tst_links_ioctlsocket" = "yes"; then
    AC_MSG_CHECKING([if ioctlsocket is prototyped])
    AC_EGREP_CPP([ioctlsocket],[
      $curl_includes_winsock2

    ],[
      AC_MSG_RESULT([yes])
      tst_proto_ioctlsocket="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_ioctlsocket="no"
    ])
  fi
  #
  if test "$tst_proto_ioctlsocket" = "yes"; then
    AC_MSG_CHECKING([if ioctlsocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2

      ]],[[
        if(0 != ioctlsocket(0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_ioctlsocket="yes"
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
  tst_allow_ioctlsocket_fionbio="unknown"
  #
  if test "$curl_cv_func_ioctlsocket" = "yes"; then
    AC_MSG_CHECKING([if ioctlsocket FIONBIO is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
      ]],[[
        int flags = 0;
        if(0 != ioctlsocket(0, FIONBIO, &flags))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])







<







3672
3673
3674
3675
3676
3677
3678

3679
3680
3681
3682
3683
3684
3685
  tst_allow_ioctlsocket_fionbio="unknown"
  #
  if test "$curl_cv_func_ioctlsocket" = "yes"; then
    AC_MSG_CHECKING([if ioctlsocket FIONBIO is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2

      ]],[[
        int flags = 0;
        if(0 != ioctlsocket(0, FIONBIO, &flags))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832



3833

3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
dnl Verify if IoctlSocket 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_ioctlsocket_camel,
dnl then HAVE_IOCTLSOCKET_CAMEL will be defined.

AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
  AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
  #
  tst_links_ioctlsocket_camel="unknown"
  tst_proto_ioctlsocket_camel="unknown"
  tst_compi_ioctlsocket_camel="unknown"
  tst_allow_ioctlsocket_camel="unknown"
  #
  AC_MSG_CHECKING([if IoctlSocket can be linked])
  AC_LINK_IFELSE([



    AC_LANG_FUNC_LINK_TRY([IoctlSocket])

  ],[
    AC_MSG_RESULT([yes])
    tst_links_ioctlsocket_camel="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_ioctlsocket_camel="no"
  ])
  #
  if test "$tst_links_ioctlsocket_camel" = "yes"; then
    AC_MSG_CHECKING([if IoctlSocket is prototyped])
    AC_EGREP_CPP([IoctlSocket],[
      $curl_includes_stropts
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_ioctlsocket_camel="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_ioctlsocket_camel="no"
    ])
  fi
  #
  if test "$tst_proto_ioctlsocket_camel" = "yes"; then
    AC_MSG_CHECKING([if IoctlSocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_stropts
      ]],[[
        if(0 != IoctlSocket(0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_ioctlsocket_camel="yes"







|








>
>
>
|
>











|













|







3720
3721
3722
3723
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
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
dnl Verify if IoctlSocket 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_ioctlsocket_camel,
dnl then HAVE_IOCTLSOCKET_CAMEL will be defined.

AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  #
  tst_links_ioctlsocket_camel="unknown"
  tst_proto_ioctlsocket_camel="unknown"
  tst_compi_ioctlsocket_camel="unknown"
  tst_allow_ioctlsocket_camel="unknown"
  #
  AC_MSG_CHECKING([if IoctlSocket can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_bsdsocket
    ]],[[
      IoctlSocket(0, 0, 0);
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_ioctlsocket_camel="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_ioctlsocket_camel="no"
  ])
  #
  if test "$tst_links_ioctlsocket_camel" = "yes"; then
    AC_MSG_CHECKING([if IoctlSocket is prototyped])
    AC_EGREP_CPP([IoctlSocket],[
      $curl_includes_bsdsocket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_ioctlsocket_camel="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_ioctlsocket_camel="no"
    ])
  fi
  #
  if test "$tst_proto_ioctlsocket_camel" = "yes"; then
    AC_MSG_CHECKING([if IoctlSocket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_bsdsocket
      ]],[[
        if(0 != IoctlSocket(0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_ioctlsocket_camel="yes"
3901
3902
3903
3904
3905
3906
3907

3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
dnl CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
dnl -------------------------------------------------
dnl Verify if IoctlSocket with FIONBIO command is available,
dnl can be compiled, and seems to work. If all of these are
dnl true, then HAVE_IOCTLSOCKET_CAMEL_FIONBIO will be defined.

AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [

  #
  tst_compi_ioctlsocket_camel_fionbio="unknown"
  tst_allow_ioctlsocket_camel_fionbio="unknown"
  #
  if test "$curl_cv_func_ioctlsocket_camel" = "yes"; then
    AC_MSG_CHECKING([if IoctlSocket FIONBIO is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_stropts
      ]],[[
        long flags = 0;
        if(0 != IoctlSocket(0, FIONBIO, &flags))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])







>








|







3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
dnl CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
dnl -------------------------------------------------
dnl Verify if IoctlSocket with FIONBIO command is available,
dnl can be compiled, and seems to work. If all of these are
dnl true, then HAVE_IOCTLSOCKET_CAMEL_FIONBIO will be defined.

AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
  #
  tst_compi_ioctlsocket_camel_fionbio="unknown"
  tst_allow_ioctlsocket_camel_fionbio="unknown"
  #
  if test "$curl_cv_func_ioctlsocket_camel" = "yes"; then
    AC_MSG_CHECKING([if IoctlSocket FIONBIO is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_bsdsocket
      ]],[[
        long flags = 0;
        if(0 != IoctlSocket(0, FIONBIO, &flags))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
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
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
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
    curl_cv_func_listxattr="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_listxattr="no"
  fi
])


dnl CURL_CHECK_FUNC_LOCALTIME_R
dnl -------------------------------------------------
dnl Verify if localtime_r is available, prototyped, can
dnl be compiled and seems to work. If all of these are
dnl true, and usage has not been previously disallowed
dnl with shell variable curl_disallow_localtime_r, then
dnl HAVE_LOCALTIME_R will be defined.

AC_DEFUN([CURL_CHECK_FUNC_LOCALTIME_R], [
  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
  AC_REQUIRE([CURL_INCLUDES_TIME])dnl
  #
  tst_links_localtime_r="unknown"
  tst_proto_localtime_r="unknown"
  tst_compi_localtime_r="unknown"
  tst_works_localtime_r="unknown"
  tst_allow_localtime_r="unknown"
  #
  AC_MSG_CHECKING([if localtime_r can be linked])
  AC_LINK_IFELSE([
    AC_LANG_FUNC_LINK_TRY([localtime_r])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_localtime_r="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_localtime_r="no"
  ])
  #
  if test "$tst_links_localtime_r" = "yes"; then
    AC_MSG_CHECKING([if localtime_r is prototyped])
    AC_EGREP_CPP([localtime_r],[
      $curl_includes_time
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_localtime_r="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_localtime_r="no"
    ])
  fi
  #
  if test "$tst_proto_localtime_r" = "yes"; then
    AC_MSG_CHECKING([if localtime_r is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_time
      ]],[[
        if(0 != localtime_r(0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_localtime_r="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_localtime_r="no"
    ])
  fi
  #
  dnl only do runtime verification when not cross-compiling
  if test "x$cross_compiling" != "xyes" &&
    test "$tst_compi_localtime_r" = "yes"; then
    AC_MSG_CHECKING([if localtime_r seems to work])
    CURL_RUN_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_stdlib
        $curl_includes_time
      ]],[[
        time_t clock = 1170352587;
        struct tm *tmp = 0;
        struct tm result;
        tmp = localtime_r(&clock, &result);
        if(tmp)
          exit(0);
        else
          exit(1);
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_works_localtime_r="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_works_localtime_r="no"
    ])
  fi
  #
  if test "$tst_compi_localtime_r" = "yes" &&
    test "$tst_works_localtime_r" != "no"; then
    AC_MSG_CHECKING([if localtime_r usage allowed])
    if test "x$curl_disallow_localtime_r" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_localtime_r="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_localtime_r="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if localtime_r might be used])
  if test "$tst_links_localtime_r" = "yes" &&
     test "$tst_proto_localtime_r" = "yes" &&
     test "$tst_compi_localtime_r" = "yes" &&
     test "$tst_allow_localtime_r" = "yes" &&
     test "$tst_works_localtime_r" != "no"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_LOCALTIME_R, 1,
      [Define to 1 if you have a working localtime_r function.])
    curl_cv_func_localtime_r="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_localtime_r="no"
  fi
])


dnl CURL_CHECK_FUNC_MEMRCHR
dnl -------------------------------------------------
dnl Verify if memrchr 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_memrchr, then







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







3978
3979
3980
3981
3982
3983
3984




















































































































3985
3986
3987
3988
3989
3990
3991
    curl_cv_func_listxattr="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_listxattr="no"
  fi
])






















































































































dnl CURL_CHECK_FUNC_MEMRCHR
dnl -------------------------------------------------
dnl Verify if memrchr 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_memrchr, then
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
  fi
])


dnl CURL_CHECK_FUNC_POLL
dnl -------------------------------------------------
dnl Verify if poll is available, prototyped, can
dnl be compiled and seems to work. If all of these are
dnl true, and usage has not been previously disallowed
dnl with shell variable curl_disallow_poll, then
dnl HAVE_POLL will be defined.

AC_DEFUN([CURL_CHECK_FUNC_POLL], [
  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
  AC_REQUIRE([CURL_INCLUDES_POLL])dnl
  #
  tst_links_poll="unknown"
  tst_proto_poll="unknown"







|
<
<
<







4087
4088
4089
4090
4091
4092
4093
4094



4095
4096
4097
4098
4099
4100
4101
  fi
])


dnl CURL_CHECK_FUNC_POLL
dnl -------------------------------------------------
dnl Verify if poll is available, prototyped, can
dnl be compiled and seems to work.




AC_DEFUN([CURL_CHECK_FUNC_POLL], [
  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
  AC_REQUIRE([CURL_INCLUDES_POLL])dnl
  #
  tst_links_poll="unknown"
  tst_proto_poll="unknown"
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
  AC_MSG_CHECKING([if poll might be used])
  if test "$tst_links_poll" = "yes" &&
     test "$tst_proto_poll" = "yes" &&
     test "$tst_compi_poll" = "yes" &&
     test "$tst_allow_poll" = "yes" &&
     test "$tst_works_poll" != "no"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_POLL, 1,
      [Define to 1 if you have a working poll function.])
    AC_DEFINE_UNQUOTED(HAVE_POLL_FINE, 1,
      [If you have a fine poll])
    curl_cv_func_poll="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_poll="no"
  fi







<
<







4217
4218
4219
4220
4221
4222
4223


4224
4225
4226
4227
4228
4229
4230
  AC_MSG_CHECKING([if poll might be used])
  if test "$tst_links_poll" = "yes" &&
     test "$tst_proto_poll" = "yes" &&
     test "$tst_compi_poll" = "yes" &&
     test "$tst_allow_poll" = "yes" &&
     test "$tst_works_poll" != "no"; then
    AC_MSG_RESULT([yes])


    AC_DEFINE_UNQUOTED(HAVE_POLL_FINE, 1,
      [If you have a fine poll])
    curl_cv_func_poll="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_poll="no"
  fi
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
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
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
    curl_cv_func_removexattr="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_removexattr="no"
  fi
])


dnl CURL_CHECK_FUNC_SETSOCKOPT
dnl -------------------------------------------------
dnl Verify if setsockopt 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_setsockopt, then
dnl HAVE_SETSOCKOPT will be defined.

AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT], [
  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
  #
  tst_links_setsockopt="unknown"
  tst_proto_setsockopt="unknown"
  tst_compi_setsockopt="unknown"
  tst_allow_setsockopt="unknown"
  #
  AC_MSG_CHECKING([if setsockopt can be linked])
  AC_LINK_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_sys_socket
    ]],[[
      if(0 != setsockopt(0, 0, 0, 0, 0))
        return 1;
    ]])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_setsockopt="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_setsockopt="no"
  ])
  #
  if test "$tst_links_setsockopt" = "yes"; then
    AC_MSG_CHECKING([if setsockopt is prototyped])
    AC_EGREP_CPP([setsockopt],[
      $curl_includes_winsock2
      $curl_includes_bsdsocket
      $curl_includes_sys_socket
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_setsockopt="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_setsockopt="no"
    ])
  fi
  #
  if test "$tst_proto_setsockopt" = "yes"; then
    AC_MSG_CHECKING([if setsockopt is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket
      ]],[[
        if(0 != setsockopt(0, 0, 0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_setsockopt="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_setsockopt="no"
    ])
  fi
  #
  if test "$tst_compi_setsockopt" = "yes"; then
    AC_MSG_CHECKING([if setsockopt usage allowed])
    if test "x$curl_disallow_setsockopt" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_setsockopt="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_setsockopt="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if setsockopt might be used])
  if test "$tst_links_setsockopt" = "yes" &&
     test "$tst_proto_setsockopt" = "yes" &&
     test "$tst_compi_setsockopt" = "yes" &&
     test "$tst_allow_setsockopt" = "yes"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_SETSOCKOPT, 1,
      [Define to 1 if you have the setsockopt function.])
    curl_cv_func_setsockopt="yes"
    CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
  else
    AC_MSG_RESULT([no])
    curl_cv_func_setsockopt="no"
  fi
])


dnl CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
dnl -------------------------------------------------
dnl Verify if setsockopt with the SO_NONBLOCK command is
dnl available, can be compiled, and seems to work. If
dnl all of these are true, then HAVE_SETSOCKOPT_SO_NONBLOCK
dnl will be defined.

AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK], [
  #
  tst_compi_setsockopt_so_nonblock="unknown"
  tst_allow_setsockopt_so_nonblock="unknown"
  #
  if test "$curl_cv_func_setsockopt" = "yes"; then
    AC_MSG_CHECKING([if setsockopt SO_NONBLOCK is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket
      ]],[[
        if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])







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


















|







4348
4349
4350
4351
4352
4353
4354


































































































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
    curl_cv_func_removexattr="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_removexattr="no"
  fi
])




































































































dnl CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
dnl -------------------------------------------------
dnl Verify if setsockopt with the SO_NONBLOCK command is
dnl available, can be compiled, and seems to work. If
dnl all of these are true, then HAVE_SETSOCKOPT_SO_NONBLOCK
dnl will be defined.

AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK], [
  #
  tst_compi_setsockopt_so_nonblock="unknown"
  tst_allow_setsockopt_so_nonblock="unknown"
  #
  if test "$curl_cv_func_setsockopt" = "yes"; then
    AC_MSG_CHECKING([if setsockopt SO_NONBLOCK is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
        $curl_includes_bsdsocket
        $curl_includes_sys_socket
      ]],[[
        if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
  fi
  #
  if test "$tst_proto_socket" = "yes"; then
    AC_MSG_CHECKING([if socket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
      $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket
      ]],[[
        if(0 != socket(0, 0, 0))
          return 1;
      ]])
    ],[







|







4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
  fi
  #
  if test "$tst_proto_socket" = "yes"; then
    AC_MSG_CHECKING([if socket is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_winsock2
        $curl_includes_bsdsocket
        $curl_includes_sys_socket
        $curl_includes_socket
      ]],[[
        if(0 != socket(0, 0, 0))
          return 1;
      ]])
    ],[
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665


dnl CURL_CHECK_FUNC_STRERROR_R
dnl -------------------------------------------------
dnl Verify if strerror_r is available, prototyped, can be compiled and
dnl seems to work. If all of these are true, and usage has not been
dnl previously disallowed with shell variable curl_disallow_strerror_r,
dnl then HAVE_STRERROR_R and STRERROR_R_TYPE_ARG3 will be defined, as
dnl well as one of HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
dnl
dnl glibc-style strerror_r:
dnl
dnl      char *strerror_r(int errnum, char *workbuf, size_t bufsize);
dnl
dnl  glibc-style strerror_r returns a pointer to the error string,
dnl  and might use the provided workbuf as a scratch area if needed. A







|
|







5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354


dnl CURL_CHECK_FUNC_STRERROR_R
dnl -------------------------------------------------
dnl Verify if strerror_r is available, prototyped, can be compiled and
dnl seems to work. If all of these are true, and usage has not been
dnl previously disallowed with shell variable curl_disallow_strerror_r,
dnl then HAVE_STRERROR_R will be defined, as well as one of
dnl HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
dnl
dnl glibc-style strerror_r:
dnl
dnl      char *strerror_r(int errnum, char *workbuf, size_t bufsize);
dnl
dnl  glibc-style strerror_r returns a pointer to the error string,
dnl  and might use the provided workbuf as a scratch area if needed. A
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
     test "$tst_allow_strerror_r" = "yes"; then
    AC_MSG_RESULT([yes])
    if test "$tst_glibc_strerror_r" = "yes"; then
      AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
        [Define to 1 if you have the strerror_r function.])
      AC_DEFINE_UNQUOTED(HAVE_GLIBC_STRERROR_R, 1,
        [Define to 1 if you have a working glibc-style strerror_r function.])
      AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_glibc_strerror_r_type_arg3,
        [Define to the type of arg 3 for strerror_r.])
    fi
    if test "$tst_posix_strerror_r" = "yes"; then
      AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
        [Define to 1 if you have the strerror_r function.])
      AC_DEFINE_UNQUOTED(HAVE_POSIX_STRERROR_R, 1,
        [Define to 1 if you have a working POSIX-style strerror_r function.])
      AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_posix_strerror_r_type_arg3,
        [Define to the type of arg 3 for strerror_r.])
    fi
    curl_cv_func_strerror_r="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strerror_r="no"
  fi
  #







<
<






<
<







5574
5575
5576
5577
5578
5579
5580


5581
5582
5583
5584
5585
5586


5587
5588
5589
5590
5591
5592
5593
     test "$tst_allow_strerror_r" = "yes"; then
    AC_MSG_RESULT([yes])
    if test "$tst_glibc_strerror_r" = "yes"; then
      AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
        [Define to 1 if you have the strerror_r function.])
      AC_DEFINE_UNQUOTED(HAVE_GLIBC_STRERROR_R, 1,
        [Define to 1 if you have a working glibc-style strerror_r function.])


    fi
    if test "$tst_posix_strerror_r" = "yes"; then
      AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
        [Define to 1 if you have the strerror_r function.])
      AC_DEFINE_UNQUOTED(HAVE_POSIX_STRERROR_R, 1,
        [Define to 1 if you have a working POSIX-style strerror_r function.])


    fi
    curl_cv_func_strerror_r="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strerror_r="no"
  fi
  #
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
    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
dnl HAVE_STRNCMPI will be defined.

AC_DEFUN([CURL_CHECK_FUNC_STRNCMPI], [
  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
  #
  tst_links_strncmpi="unknown"
  tst_proto_strncmpi="unknown"
  tst_compi_strncmpi="unknown"
  tst_allow_strncmpi="unknown"
  #
  AC_MSG_CHECKING([if strncmpi can be linked])
  AC_LINK_IFELSE([
    AC_LANG_FUNC_LINK_TRY([strncmpi])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_strncmpi="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_strncmpi="no"
  ])
  #
  if test "$tst_links_strncmpi" = "yes"; then
    AC_MSG_CHECKING([if strncmpi is prototyped])
    AC_EGREP_CPP([strncmpi],[
      $curl_includes_string
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_strncmpi="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_strncmpi="no"
    ])
  fi
  #
  if test "$tst_proto_strncmpi" = "yes"; then
    AC_MSG_CHECKING([if strncmpi is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_string
      ]],[[
        if(0 != strncmpi(0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_strncmpi="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_strncmpi="no"
    ])
  fi
  #
  if test "$tst_compi_strncmpi" = "yes"; then
    AC_MSG_CHECKING([if strncmpi usage allowed])
    if test "x$curl_disallow_strncmpi" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_strncmpi="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_strncmpi="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if strncmpi might be used])
  if test "$tst_links_strncmpi" = "yes" &&
     test "$tst_proto_strncmpi" = "yes" &&
     test "$tst_compi_strncmpi" = "yes" &&
     test "$tst_allow_strncmpi" = "yes"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_STRNCMPI, 1,
      [Define to 1 if you have the strncmpi function.])
    curl_cv_func_strncmpi="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strncmpi="no"
  fi
])


dnl CURL_CHECK_FUNC_STRNICMP
dnl -------------------------------------------------
dnl Verify if strnicmp 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_strnicmp, then
dnl HAVE_STRNICMP will be defined.

AC_DEFUN([CURL_CHECK_FUNC_STRNICMP], [
  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
  #
  tst_links_strnicmp="unknown"
  tst_proto_strnicmp="unknown"
  tst_compi_strnicmp="unknown"
  tst_allow_strnicmp="unknown"
  #
  AC_MSG_CHECKING([if strnicmp can be linked])
  AC_LINK_IFELSE([
    AC_LANG_FUNC_LINK_TRY([strnicmp])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_strnicmp="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_strnicmp="no"
  ])
  #
  if test "$tst_links_strnicmp" = "yes"; then
    AC_MSG_CHECKING([if strnicmp is prototyped])
    AC_EGREP_CPP([strnicmp],[
      $curl_includes_string
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_strnicmp="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_strnicmp="no"
    ])
  fi
  #
  if test "$tst_proto_strnicmp" = "yes"; then
    AC_MSG_CHECKING([if strnicmp is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_string
      ]],[[
        if(0 != strnicmp(0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_strnicmp="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_strnicmp="no"
    ])
  fi
  #
  if test "$tst_compi_strnicmp" = "yes"; then
    AC_MSG_CHECKING([if strnicmp usage allowed])
    if test "x$curl_disallow_strnicmp" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_strnicmp="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_strnicmp="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if strnicmp might be used])
  if test "$tst_links_strnicmp" = "yes" &&
     test "$tst_proto_strnicmp" = "yes" &&
     test "$tst_compi_strnicmp" = "yes" &&
     test "$tst_allow_strnicmp" = "yes"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_STRNICMP, 1,
      [Define to 1 if you have the strnicmp function.])
    curl_cv_func_strnicmp="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strnicmp="no"
  fi
])


dnl CURL_CHECK_FUNC_STRSTR
dnl -------------------------------------------------
dnl Verify if strstr 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_strstr, then
dnl HAVE_STRSTR will be defined.

AC_DEFUN([CURL_CHECK_FUNC_STRSTR], [
  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
  #
  tst_links_strstr="unknown"
  tst_proto_strstr="unknown"
  tst_compi_strstr="unknown"
  tst_allow_strstr="unknown"
  #
  AC_MSG_CHECKING([if strstr can be linked])
  AC_LINK_IFELSE([
    AC_LANG_FUNC_LINK_TRY([strstr])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_strstr="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_strstr="no"
  ])
  #
  if test "$tst_links_strstr" = "yes"; then
    AC_MSG_CHECKING([if strstr is prototyped])
    AC_EGREP_CPP([strstr],[
      $curl_includes_string
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_strstr="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_strstr="no"
    ])
  fi
  #
  if test "$tst_proto_strstr" = "yes"; then
    AC_MSG_CHECKING([if strstr is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_string
      ]],[[
        if(0 != strstr(0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_strstr="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_strstr="no"
    ])
  fi
  #
  if test "$tst_compi_strstr" = "yes"; then
    AC_MSG_CHECKING([if strstr usage allowed])
    if test "x$curl_disallow_strstr" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_strstr="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_strstr="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if strstr might be used])
  if test "$tst_links_strstr" = "yes" &&
     test "$tst_proto_strstr" = "yes" &&
     test "$tst_compi_strstr" = "yes" &&
     test "$tst_allow_strstr" = "yes"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_STRSTR, 1,
      [Define to 1 if you have the strstr function.])
    curl_cv_func_strstr="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strstr="no"
  fi
])


dnl CURL_CHECK_FUNC_STRTOK_R
dnl -------------------------------------------------
dnl Verify if strtok_r 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_strtok_r, then







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







5679
5680
5681
5682
5683
5684
5685































































































































































































































































5686
5687
5688
5689
5690
5691
5692
    curl_cv_func_stricmp="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_stricmp="no"
  fi
])

































































































































































































































































dnl CURL_CHECK_FUNC_STRTOK_R
dnl -------------------------------------------------
dnl Verify if strtok_r 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_strtok_r, then
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
    curl_cv_func_strtoll="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strtoll="no"
  fi
])


dnl CURL_CHECK_FUNC_WRITEV
dnl -------------------------------------------------
dnl Verify if writev 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_writev, then
dnl HAVE_WRITEV will be defined.

AC_DEFUN([CURL_CHECK_FUNC_WRITEV], [
  AC_REQUIRE([CURL_INCLUDES_SYS_UIO])dnl
  #
  tst_links_writev="unknown"
  tst_proto_writev="unknown"
  tst_compi_writev="unknown"
  tst_allow_writev="unknown"
  #
  AC_MSG_CHECKING([if writev can be linked])
  AC_LINK_IFELSE([
    AC_LANG_FUNC_LINK_TRY([writev])
  ],[
    AC_MSG_RESULT([yes])
    tst_links_writev="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_links_writev="no"
  ])
  #
  if test "$tst_links_writev" = "yes"; then
    AC_MSG_CHECKING([if writev is prototyped])
    AC_EGREP_CPP([writev],[
      $curl_includes_sys_uio
    ],[
      AC_MSG_RESULT([yes])
      tst_proto_writev="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_proto_writev="no"
    ])
  fi
  #
  if test "$tst_proto_writev" = "yes"; then
    AC_MSG_CHECKING([if writev is compilable])
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_sys_uio
      ]],[[
        if(0 != writev(0, 0, 0))
          return 1;
      ]])
    ],[
      AC_MSG_RESULT([yes])
      tst_compi_writev="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_compi_writev="no"
    ])
  fi
  #
  if test "$tst_compi_writev" = "yes"; then
    AC_MSG_CHECKING([if writev usage allowed])
    if test "x$curl_disallow_writev" != "xyes"; then
      AC_MSG_RESULT([yes])
      tst_allow_writev="yes"
    else
      AC_MSG_RESULT([no])
      tst_allow_writev="no"
    fi
  fi
  #
  AC_MSG_CHECKING([if writev might be used])
  if test "$tst_links_writev" = "yes" &&
     test "$tst_proto_writev" = "yes" &&
     test "$tst_compi_writev" = "yes" &&
     test "$tst_allow_writev" = "yes"; then
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_WRITEV, 1,
      [Define to 1 if you have the writev function.])
    curl_cv_func_writev="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_writev="no"
  fi
])

dnl CURL_RUN_IFELSE
dnl -------------------------------------------------
dnl Wrapper macro to use instead of AC_RUN_IFELSE. It
dnl sets LD_LIBRARY_PATH locally for this run only, from the
dnl CURL_LIBRARY_PATH variable. It keeps the LD_LIBRARY_PATH
dnl changes contained within this macro.








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







5849
5850
5851
5852
5853
5854
5855





















































































5856
5857
5858
5859
5860
5861
5862
    curl_cv_func_strtoll="yes"
  else
    AC_MSG_RESULT([no])
    curl_cv_func_strtoll="no"
  fi
])






















































































dnl CURL_RUN_IFELSE
dnl -------------------------------------------------
dnl Wrapper macro to use instead of AC_RUN_IFELSE. It
dnl sets LD_LIBRARY_PATH locally for this run only, from the
dnl CURL_LIBRARY_PATH variable. It keeps the LD_LIBRARY_PATH
dnl changes contained within this macro.

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



























































    CPPFLAGS="$CPPFLAGS -DNDEBUG"
    CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
    LIBS="$LIBS -lgcov"
  fi
])

dnl CURL_ATOMIC
dnl --------------------------------------------------
dnl Check if _Atomic works
dnl
AC_DEFUN([CURL_ATOMIC],[

  AC_MSG_CHECKING([if _Atomic is available])
  AC_COMPILE_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_unistd
    ]],[[
      _Atomic int i = 0;

    ]])
  ],[
    AC_MSG_RESULT([yes])
    AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
      [Define to 1 if you have _Atomic support.])
    tst_atomic="yes"
  ],[
    AC_MSG_RESULT([no])
    tst_atomic="no"

  ])
])


































































|
|


>
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
>


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
    CPPFLAGS="$CPPFLAGS -DNDEBUG"
    CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
    LIBS="$LIBS -lgcov"
  fi
])

dnl CURL_ATOMIC
dnl -------------------------------------------------------------
dnl Check if _Atomic works. But only check if stdatomic.h exists.
dnl
AC_DEFUN([CURL_ATOMIC],[
  AC_CHECK_HEADERS(stdatomic.h, [
    AC_MSG_CHECKING([if _Atomic is available])
    AC_LINK_IFELSE([
      AC_LANG_PROGRAM([[
        $curl_includes_unistd
      ]],[[
        _Atomic int i = 0;
        i = 4;  // Force an atomic-write operation.
      ]])
    ],[
      AC_MSG_RESULT([yes])
      AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
        [Define to 1 if you have _Atomic support.])
      tst_atomic="yes"
    ],[
      AC_MSG_RESULT([no])
      tst_atomic="no"
    ])
  ])
])

# Rewrite inspired by the functionality once provided by
# AX_COMPILE_CHECK_SIZEOF. Uses the switch() "trick" to find the size of the
# given type.
#
# This code fails to compile:
#
#   switch() { case 0: case 0: }
#
# By making the second case number a boolean check, it fails to compile the
# test code when the boolean is false and thus creating a zero, making it a
# duplicated case label. If the boolean equals true, it becomes a one, the
# code compiles and we know it was a match.
#
# The check iterates over all possible sizes and stops as soon it compiles
# error-free.
#
# Usage:
#
#   CURL_SIZEOF(TYPE, [HEADERS])
#

AC_DEFUN([CURL_SIZEOF], [
  dnl The #define name to make autoheader put the name in curl_config.h.in
  define(TYPE, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl

  AC_MSG_CHECKING(size of $1)
  r=0
  dnl Check the sizes in a reasonable order
  for typesize in 8 4 2 16 1; do
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
$2
]],
     [switch(0) {
       case 0:
       case (sizeof($1) == $typesize):;
     }
    ]) ],
      [
       r=$typesize],
      [
       r=0])
    dnl get out of the loop once matched
    if test $r -gt 0; then
      break;
    fi
  done
  if test $r -eq 0; then
    AC_MSG_ERROR([Failed to find size of $1])
  fi
  AC_MSG_RESULT($r)
  dnl lowercase and underscore instead of space
  tname=$(echo "ac_cv_sizeof_$1" | tr A-Z a-z | tr " " "_")
  eval "$tname=$r"

  AC_DEFINE_UNQUOTED(TYPE, [$r], [Size of $1 in number of bytes])

])
Changes to jni/curl/m4/curl-wolfssl.m4.
91
92
93
94
95
96
97

98
99
100
101
102
103
104
      AC_MSG_CHECKING([for wolfSSL_Init in -lwolfssl])
      AC_LINK_IFELSE([
	AC_LANG_PROGRAM([[
/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG

#include <wolfssl/ssl.h>
	]],[[
	  return wolfSSL_Init();
	]])
      ],[
         AC_MSG_RESULT(yes)
         AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])







>







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
      AC_MSG_CHECKING([for wolfSSL_Init in -lwolfssl])
      AC_LINK_IFELSE([
	AC_LANG_PROGRAM([[
/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
#include <wolfssl/options.h>
#include <wolfssl/ssl.h>
	]],[[
	  return wolfSSL_Init();
	]])
      ],[
         AC_MSG_RESULT(yes)
         AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      AC_MSG_NOTICE([detected wolfSSL])
      check_for_ca_bundle=1

      dnl wolfssl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
      AX_COMPILE_CHECK_SIZEOF(long long)

      LIBS="$addlib -lm $LIBS"

      dnl WolfSSL needs configure --enable-opensslextra to have *get_peer*
      dnl DES* is needed for NTLM support and lives in the OpenSSL compatibility
      dnl layer
      AC_CHECK_FUNCS(wolfSSL_get_peer_certificate \







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      AC_MSG_NOTICE([detected wolfSSL])
      check_for_ca_bundle=1

      dnl wolfssl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
      CURL_SIZEOF(long long)

      LIBS="$addlib -lm $LIBS"

      dnl WolfSSL needs configure --enable-opensslextra to have *get_peer*
      dnl DES* is needed for NTLM support and lives in the OpenSSL compatibility
      dnl layer
      AC_CHECK_FUNCS(wolfSSL_get_peer_certificate \
Changes to jni/curl/packages/DOS/common.dj.
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
  CFLAGS += -DOPENSSL_SUPPRESS_DEPRECATED

  #
  # Use some of these too?
  #
  # CFLAGS += -DUSE_TLS_SRP=1                    \
  #           -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES \
  #           -DHAVE_OPENSSL_PKCS12_H            \
  #           -DHAVE_SSLV2_CLIENT_METHOD         \
  #           -DOPENSSL_NO_DEPRECATED

  #
  # 'libcomm.a' is normally 'libcommon.a'. But to keep it 8+3 clean, it's
  # shortened to 'libcomm.a'. The official OpenSSL build was recently changed
  # and this "Common" library was added for several of the Crypto Providers.







<







142
143
144
145
146
147
148

149
150
151
152
153
154
155
  CFLAGS += -DOPENSSL_SUPPRESS_DEPRECATED

  #
  # Use some of these too?
  #
  # CFLAGS += -DUSE_TLS_SRP=1                    \
  #           -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES \

  #           -DHAVE_SSLV2_CLIENT_METHOD         \
  #           -DOPENSSL_NO_DEPRECATED

  #
  # 'libcomm.a' is normally 'libcommon.a'. But to keep it 8+3 clean, it's
  # shortened to 'libcomm.a'. The official OpenSSL build was recently changed
  # and this "Common" library was added for several of the Crypto Providers.
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
endif

ifeq ($(USE_ARES),1)
  CFLAGS += -DUSE_ARES -I$(ARES_ROOT)/include
endif

ifeq ($(USE_IDNA),1)
  CFLAGS += -DHAVE_LIBIDN -DHAVE_IDN_FREE_H -DHAVE_IDN_FREE -DHAVE_TLD_H \
            -DHAVE_TLD_STRERROR -I$(LIBIDN_ROOT)/lib
endif

ifeq ($(USE_DEBUG),1)
  CFLAGS += -DDEBUG=1 -DDEBUGBUILD
endif

ifeq ($(USE_CURLDEBUG),1)







|
<







168
169
170
171
172
173
174
175

176
177
178
179
180
181
182
endif

ifeq ($(USE_ARES),1)
  CFLAGS += -DUSE_ARES -I$(ARES_ROOT)/include
endif

ifeq ($(USE_IDNA),1)
  CFLAGS += -DHAVE_LIBIDN -I$(LIBIDN_ROOT)/lib

endif

ifeq ($(USE_DEBUG),1)
  CFLAGS += -DDEBUG=1 -DDEBUGBUILD
endif

ifeq ($(USE_CURLDEBUG),1)
Changes to jni/curl/packages/Makefile.in.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
342
343
344
345
346
347
348

349
350
351
352
353
354
355
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/packages/OS400/curl.inc.in.
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
     d                 c                   20108
     d  CURLOPT_SSL_CTX_DATA...
     d                 c                   10109
     d  CURLOPT_FTP_CREATE_MISSING_DIRS...
     d                 c                   00110
     d  CURLOPT_PROXYAUTH...
     d                 c                   00111
     d  CURLOPT_FTP_RESPONSE_TIMEOUT...
     d                 c                   00112
     d  CURLOPT_SERVER_RESPONSE_TIMEOUT...                                      Alias
     d                 c                   00112
     d  CURLOPT_IPRESOLVE...
     d                 c                   00113
     d  CURLOPT_MAXFILESIZE...
     d                 c                   00114







|







1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
     d                 c                   20108
     d  CURLOPT_SSL_CTX_DATA...
     d                 c                   10109
     d  CURLOPT_FTP_CREATE_MISSING_DIRS...
     d                 c                   00110
     d  CURLOPT_PROXYAUTH...
     d                 c                   00111
     d  CURLOPT_SERVER_RESPONSE_TIMEOUT...
     d                 c                   00112
     d  CURLOPT_SERVER_RESPONSE_TIMEOUT...                                      Alias
     d                 c                   00112
     d  CURLOPT_IPRESOLVE...
     d                 c                   00113
     d  CURLOPT_MAXFILESIZE...
     d                 c                   00114
Changes to jni/curl/packages/vms/Makefile.in.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/vms
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = packages/vms
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
284
285
286
287
288
289
290

291
292
293
294
295
296
297
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/packages/vms/config_h.com.
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
$	then
$	    write tf "#ifndef ''key2'"
$	    write tf "#define ''key2' 1"
$	    write tf "#endif"
$	    goto cfgh_in_loop1
$	endif
$!
$	if key2 .eqs. "HAVE_LIBDL"
$	then
$	    write tf "#ifndef ''key2'"
$	    write tf "#define ''key2' 1"
$	    write tf "#endif"
$	    goto cfgh_in_loop1
$	endif
$!
$	if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
$	then
$	    if (key2c .eqs. "EGD") .or. -
	       (key2c .eqs. "STATUS") .or. -
	       (key2c .eqs. "SCREEN")
$	    then
$		if f$search("''ssl_header_dir'rand.h") .nes. ""







<
<
<
<
<
<
<
<







793
794
795
796
797
798
799








800
801
802
803
804
805
806
$	then
$	    write tf "#ifndef ''key2'"
$	    write tf "#define ''key2' 1"
$	    write tf "#endif"
$	    goto cfgh_in_loop1
$	endif
$!








$	if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
$	then
$	    if (key2c .eqs. "EGD") .or. -
	       (key2c .eqs. "STATUS") .or. -
	       (key2c .eqs. "SCREEN")
$	    then
$		if f$search("''ssl_header_dir'rand.h") .nes. ""
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
$		write tf "#define ''key2' int"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	endif
$!
$!
$!	Process RECVFROM directives
$!-------------------------------------
$	if key2a .eqs. "RECVFROM"
$	then
$	    if key2 .eqs. "RECVFROM_QUAL_ARG5"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2'"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	    if key2 .eqs. "RECVFROM_TYPE_ARG1"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2' int"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	    if key2 .eqs. "RECVFROM_TYPE_ARG2"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2' void *"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	    if key2 .eqs. "RECVFROM_TYPE_ARG3"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2' size_t"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	    if key2 .eqs. "RECVFROM_TYPE_ARG4"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2' int"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	    if key2 .eqs. "RECVFROM_TYPE_ARG5"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2' struct sockaddr"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	    if key2 .eqs. "RECVFROM_TYPE_ARG6"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2' unsigned int"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	    if key2 .eqs. "RECVFROM_TYPE_RETV"
$	    then
$		write tf "#ifndef ''key2'"
$		write tf "#define ''key2' int"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	endif
$!
$!	Process SELECT directives
$!-------------------------------------
$	if key2a .eqs. "SELECT"
$	then
$	    if key2 .eqs. "SELECT_QUAL_ARG5"
$	    then
$		write tf "#ifndef ''key2'"







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







1658
1659
1660
1661
1662
1663
1664






























































1665
1666
1667
1668
1669
1670
1671
$		write tf "#define ''key2' int"
$		write tf "#endif"
$		goto cfgh_in_loop1
$	    endif
$	endif
$!
$!






























































$!	Process SELECT directives
$!-------------------------------------
$	if key2a .eqs. "SELECT"
$	then
$	    if key2 .eqs. "SELECT_QUAL_ARG5"
$	    then
$		write tf "#ifndef ''key2'"
Changes to jni/curl/scripts/Makefile.in.
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = scripts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







109
110
111
112
113
114
115
116

117
118
119
120
121
122
123
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = scripts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
308
309
310
311
312
313
314

315
316
317
318
319
320
321
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
jni/curl/scripts/firefox-db2pem.sh became executable.
Changes to jni/curl/src/CMakeLists.txt.
107
108
109
110
111
112
113
114
115
116
#SET_TARGET_PROPERTIES(${EXE_NAME} RUNTIME_OUTPUT_DIRECTORY "blah blah blah")
#SET_TARGET_PROPERTIES(${EXE_NAME} LIBRARY_OUTPUT_DIRECTORY "blah blah blah")

#INCLUDE(ModuleInstall OPTIONAL)

install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
export(TARGETS ${EXE_NAME}
       APPEND FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
       NAMESPACE ${PROJECT_NAME}::
)







|


107
108
109
110
111
112
113
114
115
116
#SET_TARGET_PROPERTIES(${EXE_NAME} RUNTIME_OUTPUT_DIRECTORY "blah blah blah")
#SET_TARGET_PROPERTIES(${EXE_NAME} LIBRARY_OUTPUT_DIRECTORY "blah blah blah")

#INCLUDE(ModuleInstall OPTIONAL)

install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
export(TARGETS ${EXE_NAME}
       FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
       NAMESPACE ${PROJECT_NAME}::
)
Changes to jni/curl/src/Makefile.in.
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = curl$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







120
121
122
123
124
125
126
127

128
129
130
131
132
133
134
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = curl$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
586
587
588
589
590
591
592

593
594
595
596
597
598
599
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/src/Makefile.m32.
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

ifeq ($(CURL_CC),)
CURL_CC := $(CROSSPREFIX)gcc
endif
ifeq ($(CURL_AR),)
CURL_AR := $(CROSSPREFIX)ar
endif







CC = $(CURL_CC)
CFLAGS = -O3 $(CURL_CFLAG_EXTRAS) -W -Wall
LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE)
AR = $(CURL_AR)
RC = $(CROSSPREFIX)windres
RCFLAGS = --include-dir=$(PROOT)/include -O coff -DCURL_EMBED_MANIFEST
STRIP   = $(CROSSPREFIX)strip -g

# We may need these someday
# PERL = perl
# NROFF = nroff

# Set environment var ARCH to your architecture to override autodetection.
ifndef ARCH
ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
ARCH = w64
else
ARCH = w32
endif
endif


ifeq ($(ARCH),w64)
CFLAGS  += -m64
LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS  += -m32
LDFLAGS += -m32
RCFLAGS += -F pe-i386

endif

# Platform-dependent helper tool macros
ifeq ($(findstring /sh,$(SHELL)),/sh)
DEL     = rm -f $1
RMDIR   = rm -fr $1
MKDIR   = mkdir -p $1







>
>
>
>
>
>





|
|
|














>








>







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

ifeq ($(CURL_CC),)
CURL_CC := $(CROSSPREFIX)gcc
endif
ifeq ($(CURL_AR),)
CURL_AR := $(CROSSPREFIX)ar
endif
ifeq ($(CURL_RC),)
CURL_RC := $(CROSSPREFIX)windres
endif
ifeq ($(CURL_STRIP),)
CURL_STRIP := $(CROSSPREFIX)strip
endif

CC = $(CURL_CC)
CFLAGS = -O3 $(CURL_CFLAG_EXTRAS) -W -Wall
LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE)
AR = $(CURL_AR)
RC = $(CURL_RC)
RCFLAGS = --include-dir=$(PROOT)/include -O coff -DCURL_EMBED_MANIFEST $(CURL_RCFLAG_EXTRAS)
STRIP   = $(CURL_STRIP) -g

# We may need these someday
# PERL = perl
# NROFF = nroff

# Set environment var ARCH to your architecture to override autodetection.
ifndef ARCH
ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
ARCH = w64
else
ARCH = w32
endif
endif

ifneq ($(ARCH),custom)
ifeq ($(ARCH),w64)
CFLAGS  += -m64
LDFLAGS += -m64
RCFLAGS += -F pe-x86-64
else
CFLAGS  += -m32
LDFLAGS += -m32
RCFLAGS += -F pe-i386
endif
endif

# Platform-dependent helper tool macros
ifeq ($(findstring /sh,$(SHELL)),/sh)
DEL     = rm -f $1
RMDIR   = rm -fr $1
MKDIR   = mkdir -p $1
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
  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
endif
ifdef SSH2
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
  ifdef SCHANNEL
    ifndef DYN
      curl_LDADD += -lbcrypt -lcrypt32
















    endif
  endif
endif
ifdef SSL
  ifdef NGHTTP3
    CFLAGS += -DUSE_NGHTTP3
    curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
    ifdef NGTCP2
      CFLAGS += -DUSE_NGTCP2
      curl_LDADD += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
    endif
  endif

  ifndef OPENSSL_INCLUDE
    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
    endif
    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
    endif







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
<
<
<
<
<
<
<
<







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
  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
endif
ifdef SSH2
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
  ifdef SCHANNEL
    ifndef DYN
      curl_LDADD += -lcrypt32
    endif
  endif
endif
ifdef NGHTTP3
  CFLAGS += -DUSE_NGHTTP3
  curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
  ifdef NGTCP2
    CFLAGS += -DUSE_NGTCP2
    curl_LDADD += -L"$(NGTCP2_PATH)/lib"
    ifdef NGTCP2_LIBS
      curl_LDADD += $(NGTCP2_LIBS)
    else
      curl_LDADD += -lngtcp2
      ifdef SSL
        curl_LDADD += -lngtcp2_crypto_openssl
      endif
    endif
  endif
endif
ifdef SSL









  ifndef OPENSSL_INCLUDE
    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
    endif
    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
    endif
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
  curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
endif
ifndef USE_LDAP_NOVELL
ifndef USE_LDAP_OPENLDAP
curl_LDADD += -lwldap32
endif
endif
curl_LDADD += -lws2_32

# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc

curl_PROGRAMS = curl.exe
curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))







|







410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
  curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
endif
ifndef USE_LDAP_NOVELL
ifndef USE_LDAP_OPENLDAP
curl_LDADD += -lwldap32
endif
endif
curl_LDADD += -lws2_32 -lbcrypt

# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc

curl_PROGRAMS = curl.exe
curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
jni/curl/src/mkhelp.pl became executable.
Changes to jni/curl/src/tool_cb_dbg.c.
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
      if((tracetype == TRACE_ASCII) &&
         (i + c + 1 < size) && (ptr[i + c] == 0x0D) &&
         (ptr[i + c + 1] == 0x0A)) {
        i += (c + 2 - width);
        break;
      }
      (void)infotype;
      fprintf(stream, "%c", ((ptr[i + c] >= 0x20) && (ptr[i + c] < 0x80)) ?
              ptr[i + c] : UNPRINTABLE_CHAR);
      /* check again for 0D0A, to avoid an extra \n if it's at width */
      if((tracetype == TRACE_ASCII) &&
         (i + c + 2 < size) && (ptr[i + c + 1] == 0x0D) &&
         (ptr[i + c + 2] == 0x0A)) {
        i += (c + 3 - width);
        break;







|







228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
      if((tracetype == TRACE_ASCII) &&
         (i + c + 1 < size) && (ptr[i + c] == 0x0D) &&
         (ptr[i + c + 1] == 0x0A)) {
        i += (c + 2 - width);
        break;
      }
      (void)infotype;
      fprintf(stream, "%c", ((ptr[i + c] >= 0x20) && (ptr[i + c] < 0x7F)) ?
              ptr[i + c] : UNPRINTABLE_CHAR);
      /* check again for 0D0A, to avoid an extra \n if it's at width */
      if((tracetype == TRACE_ASCII) &&
         (i + c + 2 < size) && (ptr[i + c + 1] == 0x0D) &&
         (ptr[i + c + 2] == 0x0A)) {
        i += (c + 3 - width);
        break;
Changes to jni/curl/src/tool_cb_wrt.c.
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

  if(is_tty && (outs->bytes < 2000) && !config->terminal_binary_ok) {
    /* binary output to terminal? */
    if(memchr(buffer, 0, bytes)) {
      warnf(config->global, "Binary output can mess up your terminal. "
            "Use \"--output -\" to tell curl to output it to your terminal "
            "anyway, or consider \"--output <FILE>\" to save to a file.\n");
      config->synthetic_error = ERR_BINARY_TERMINAL;
      return failure;
    }
  }

#ifdef WIN32
  fhnd = _get_osfhandle(fileno(outs->stream));
  if(isatty(fileno(outs->stream)) &&







|







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

  if(is_tty && (outs->bytes < 2000) && !config->terminal_binary_ok) {
    /* binary output to terminal? */
    if(memchr(buffer, 0, bytes)) {
      warnf(config->global, "Binary output can mess up your terminal. "
            "Use \"--output -\" to tell curl to output it to your terminal "
            "anyway, or consider \"--output <FILE>\" to save to a file.\n");
      config->synthetic_error = TRUE;
      return failure;
    }
  }

#ifdef WIN32
  fhnd = _get_osfhandle(fileno(outs->stream));
  if(isatty(fileno(outs->stream)) &&
Changes to jni/curl/src/tool_cfgable.c.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{
  memset(config, 0, sizeof(struct OperationConfig));

  config->postfieldsize = -1;
  config->use_httpget = FALSE;
  config->create_dirs = FALSE;
  config->maxredirs = DEFAULT_MAXREDIRS;
  config->proto = CURLPROTO_ALL;
  config->proto_present = FALSE;
  config->proto_redir = CURLPROTO_ALL & /* All except FILE, SCP and SMB */
    ~(CURLPROTO_FILE | CURLPROTO_SCP | CURLPROTO_SMB |
      CURLPROTO_SMBS);
  config->proto_redir_present = FALSE;
  config->proto_default = NULL;
  config->tcp_nodelay = TRUE; /* enabled by default */
  config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
  config->http09_allowed = FALSE;
  config->ftp_skip_ip = TRUE;
  config->file_clobber_mode = CLOBBER_DEFAULT;







<

<
<
<







32
33
34
35
36
37
38

39



40
41
42
43
44
45
46
{
  memset(config, 0, sizeof(struct OperationConfig));

  config->postfieldsize = -1;
  config->use_httpget = FALSE;
  config->create_dirs = FALSE;
  config->maxredirs = DEFAULT_MAXREDIRS;

  config->proto_present = FALSE;



  config->proto_redir_present = FALSE;
  config->proto_default = NULL;
  config->tcp_nodelay = TRUE; /* enabled by default */
  config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
  config->http09_allowed = FALSE;
  config->ftp_skip_ip = TRUE;
  config->file_clobber_mode = CLOBBER_DEFAULT;
168
169
170
171
172
173
174


175
176
177
178
179
180
181
  Curl_safefree(config->proxy_service_name);
  Curl_safefree(config->service_name);

  Curl_safefree(config->ftp_account);
  Curl_safefree(config->ftp_alternative_to_user);

  Curl_safefree(config->aws_sigv4);


}

void config_free(struct OperationConfig *config)
{
  struct OperationConfig *last = config;

  /* Free each of the structures in reverse order */







>
>







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
  Curl_safefree(config->proxy_service_name);
  Curl_safefree(config->service_name);

  Curl_safefree(config->ftp_account);
  Curl_safefree(config->ftp_alternative_to_user);

  Curl_safefree(config->aws_sigv4);
  Curl_safefree(config->proto_str);
  Curl_safefree(config->proto_redir_str);
}

void config_free(struct OperationConfig *config)
{
  struct OperationConfig *last = config;

  /* Free each of the structures in reverse order */
Changes to jni/curl/src/tool_cfgable.h.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 *
 ***************************************************************************/
#include "tool_setup.h"
#include "tool_sdecls.h"
#include "tool_urlglob.h"
#include "tool_formparse.h"

typedef enum {
  ERR_NONE,
  ERR_BINARY_TERMINAL = 1, /* binary to terminal detected */
  ERR_LAST
} curl_error;

struct GlobalConfig;

struct State {
  struct getout *urlnode;
  struct URLGlob *inglob;
  struct URLGlob *urls;
  char *outfiles;







<
<
<
<
<
<







24
25
26
27
28
29
30






31
32
33
34
35
36
37
 *
 ***************************************************************************/
#include "tool_setup.h"
#include "tool_sdecls.h"
#include "tool_urlglob.h"
#include "tool_formparse.h"







struct GlobalConfig;

struct State {
  struct getout *urlnode;
  struct URLGlob *inglob;
  struct URLGlob *urls;
  char *outfiles;
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  bool tr_encoding;         /* Transfer-Encoding please */
  unsigned long authtype;   /* auth bitmask */
  bool use_resume;
  bool resume_from_current;
  bool disable_epsv;
  bool disable_eprt;
  bool ftp_pret;
  long proto;
  bool proto_present;
  long proto_redir;
  bool proto_redir_present;
  char *proto_default;
  curl_off_t resume_from;
  char *postfields;
  curl_off_t postfieldsize;
  char *referer;
  double timeout;







|

|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  bool tr_encoding;         /* Transfer-Encoding please */
  unsigned long authtype;   /* auth bitmask */
  bool use_resume;
  bool resume_from_current;
  bool disable_epsv;
  bool disable_eprt;
  bool ftp_pret;
  char *proto_str;
  bool proto_present;
  char *proto_redir_str;
  bool proto_redir_present;
  char *proto_default;
  curl_off_t resume_from;
  char *postfields;
  curl_off_t postfieldsize;
  char *referer;
  double timeout;
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
  char *unix_socket_path;         /* path to Unix domain socket */
  bool abstract_unix_socket;      /* path to an abstract Unix domain socket */
  bool falsestart;
  bool path_as_is;
  double expect100timeout;
  bool suppress_connect_headers;  /* suppress proxy CONNECT response headers
                                     from user callbacks */
  curl_error synthetic_error;     /* if non-zero, it overrides any libcurl
                                     error */
  bool ssh_compression;           /* enable/disable SSH compression */
  long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
                                     0 is valid. default: CURL_HET_DEFAULT. */
  bool haproxy_protocol;          /* whether to send HAProxy protocol v1 */
  bool disallow_username_in_url;  /* disallow usernames in URLs */
  char *aws_sigv4;
  enum {







|
<







272
273
274
275
276
277
278
279

280
281
282
283
284
285
286
  char *unix_socket_path;         /* path to Unix domain socket */
  bool abstract_unix_socket;      /* path to an abstract Unix domain socket */
  bool falsestart;
  bool path_as_is;
  double expect100timeout;
  bool suppress_connect_headers;  /* suppress proxy CONNECT response headers
                                     from user callbacks */
  bool synthetic_error;           /* if TRUE, this is tool-internal error */

  bool ssh_compression;           /* enable/disable SSH compression */
  long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
                                     0 is valid. default: CURL_HET_DEFAULT. */
  bool haproxy_protocol;          /* whether to send HAProxy protocol v1 */
  bool disallow_username_in_url;  /* disallow usernames in URLs */
  char *aws_sigv4;
  enum {
Changes to jni/curl/src/tool_formparse.c.
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
                              const char *filename, FILE *fp,
                              struct curl_slist **pheaders)
{
  size_t hdrlen = 0;
  size_t pos = 0;
  bool incomment = FALSE;
  int lineno = 1;
  char hdrbuf[999]; /* Max. header length + 1. */

  for(;;) {
    int c = getc(fp);
    if(c == EOF || (!pos && !ISSPACE(c))) {
      /* Strip and flush the current header. */
      while(hdrlen && ISSPACE(hdrbuf[hdrlen - 1]))
        hdrlen--;







|







405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
                              const char *filename, FILE *fp,
                              struct curl_slist **pheaders)
{
  size_t hdrlen = 0;
  size_t pos = 0;
  bool incomment = FALSE;
  int lineno = 1;
  char hdrbuf[999] = ""; /* Max. header length + 1. */

  for(;;) {
    int c = getc(fp);
    if(c == EOF || (!pos && !ISSPACE(c))) {
      /* Strip and flush the current header. */
      while(hdrlen && ISSPACE(hdrbuf[hdrlen - 1]))
        hdrlen--;
Changes to jni/curl/src/tool_getparam.c.
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
  parse_cert_parameter(nextarg, &certname, &passphrase);
  Curl_safefree(*file);
  *file = certname;
  if(passphrase) {
    Curl_safefree(*password);
    *password = passphrase;
  }
  cleanarg(nextarg);
}

/* Get a size parameter for '--limit-rate' or '--max-filesize'.
 * We support a 'G', 'M' or 'K' suffix too.
  */
static ParameterError GetSizeParameter(struct GlobalConfig *global,
                                       const char *arg,







<







483
484
485
486
487
488
489

490
491
492
493
494
495
496
  parse_cert_parameter(nextarg, &certname, &passphrase);
  Curl_safefree(*file);
  *file = certname;
  if(passphrase) {
    Curl_safefree(*password);
    *password = passphrase;
  }

}

/* Get a size parameter for '--limit-rate' or '--max-filesize'.
 * We support a 'G', 'M' or 'K' suffix too.
  */
static ParameterError GetSizeParameter(struct GlobalConfig *global,
                                       const char *arg,
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
  default:
    warnf(global, "unsupported %s unit. Use G, M, K or B!\n", which);
    return PARAM_BAD_USE;
  }
  *value_out = value;
  return PARAM_OK;
}
















ParameterError getparameter(const char *flag, /* f or -long-flag */
                            char *nextarg,    /* NULL if unset */
                            bool *usedarg,    /* set to TRUE if the arg
                                                 has been used */
                            struct GlobalConfig *global,
                            struct OperationConfig *config)
{
  char letter;
  char subletter = '\0'; /* subletters can only occur on long options */
  int rc;
  const char *parse = NULL;
  unsigned int j;
  time_t now;
  int hit = -1;
  bool longopt = FALSE;
  bool singleopt = FALSE; /* when true means '-o foo' used '-ofoo' */
  ParameterError err;
  bool toggle = TRUE; /* how to switch boolean options, on or off. Controlled
                         by using --OPTION or --no-OPTION */



  *usedarg = FALSE; /* default is that we don't use the arg */

  if(('-' != flag[0]) || ('-' == flag[1])) {
    /* this should be a long name */
    const char *word = ('-' == flag[0]) ? flag + 2 : flag;
    size_t fnam = strlen(word);
    int numhits = 0;







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




















|
>
>







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
  default:
    warnf(global, "unsupported %s unit. Use G, M, K or B!\n", which);
    return PARAM_BAD_USE;
  }
  *value_out = value;
  return PARAM_OK;
}

#ifdef HAVE_WRITABLE_ARGV
static void cleanarg(argv_item_t str)
{
  /* now that GetStr has copied the contents of nextarg, wipe the next
   * argument out so that the username:password isn't displayed in the
   * system process list */
  if(str) {
    size_t len = strlen(str);
    memset(str, ' ', len);
  }
}
#else
#define cleanarg(x)
#endif

ParameterError getparameter(const char *flag, /* f or -long-flag */
                            char *nextarg,    /* NULL if unset */
                            bool *usedarg,    /* set to TRUE if the arg
                                                 has been used */
                            struct GlobalConfig *global,
                            struct OperationConfig *config)
{
  char letter;
  char subletter = '\0'; /* subletters can only occur on long options */
  int rc;
  const char *parse = NULL;
  unsigned int j;
  time_t now;
  int hit = -1;
  bool longopt = FALSE;
  bool singleopt = FALSE; /* when true means '-o foo' used '-ofoo' */
  ParameterError err;
  bool toggle = TRUE; /* how to switch boolean options, on or off. Controlled
                         by using --OPTION or --no-OPTION */
#ifdef HAVE_WRITABLE_ARGV
  argv_item_t clearthis = NULL;
#endif
  *usedarg = FALSE; /* default is that we don't use the arg */

  if(('-' != flag[0]) || ('-' == flag[1])) {
    /* this should be a long name */
    const char *word = ('-' == flag[0]) ? flag + 2 : flag;
    size_t fnam = strlen(word);
    int numhits = 0;
633
634
635
636
637
638
639



640
641
642
643
644
645
646
      }
    }

    if(aliases[hit].desc >= ARG_STRING) {
      /* this option requires an extra parameter */
      if(!longopt && parse[1]) {
        nextarg = (char *)&parse[1]; /* this is the actual extra parameter */



        singleopt = TRUE;   /* don't loop anymore after this */
      }
      else if(!nextarg)
        return PARAM_REQUIRES_PARAMETER;
      else
        *usedarg = TRUE; /* mark it as used */








>
>
>







649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
      }
    }

    if(aliases[hit].desc >= ARG_STRING) {
      /* this option requires an extra parameter */
      if(!longopt && parse[1]) {
        nextarg = (char *)&parse[1]; /* this is the actual extra parameter */
#ifdef HAVE_WRITABLE_ARGV
        clearthis = nextarg;
#endif
        singleopt = TRUE;   /* don't loop anymore after this */
      }
      else if(!nextarg)
        return PARAM_REQUIRES_PARAMETER;
      else
        *usedarg = TRUE; /* mark it as used */

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
        break;
      case 'a': /* random-file */
        break;
      case 'b': /* egd-file */
        break;
      case 'B': /* OAuth 2.0 bearer token */
        GetStr(&config->oauth_bearer, nextarg);
        cleanarg(nextarg);
        config->authtype |= CURLAUTH_BEARER;
        break;
      case 'c': /* connect-timeout */
        err = str2udouble(&config->connecttimeout, nextarg,
                          LONG_MAX/1000);
        if(err)
          return err;
        break;
      case 'C': /* doh-url */
        GetStr(&config->doh_url, nextarg);



        break;
      case 'd': /* ciphers */
        GetStr(&config->cipher_list, nextarg);
        break;
      case 'D': /* --dns-interface */
        if(!curlinfo->ares_num) /* c-ares is needed for this */
          return PARAM_LIBCURL_DOESNT_SUPPORT;







|










>
>
>







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
        break;
      case 'a': /* random-file */
        break;
      case 'b': /* egd-file */
        break;
      case 'B': /* OAuth 2.0 bearer token */
        GetStr(&config->oauth_bearer, nextarg);
        cleanarg(clearthis);
        config->authtype |= CURLAUTH_BEARER;
        break;
      case 'c': /* connect-timeout */
        err = str2udouble(&config->connecttimeout, nextarg,
                          LONG_MAX/1000);
        if(err)
          return err;
        break;
      case 'C': /* doh-url */
        GetStr(&config->doh_url, nextarg);
        if(config->doh_url && !config->doh_url[0])
          /* if given a blank string, we make it NULL again */
          Curl_safefree(config->doh_url);
        break;
      case 'd': /* ciphers */
        GetStr(&config->cipher_list, nextarg);
        break;
      case 'D': /* --dns-interface */
        if(!curlinfo->ares_num) /* c-ares is needed for this */
          return PARAM_LIBCURL_DOESNT_SUPPORT;
1180
1181
1182
1183
1184
1185
1186

1187

1188
1189
1190
1191


1192
1193
1194
1195
1196
1197
1198
1199
          return err;
        break;
      case 'C': /* --ftp-pret */
        config->ftp_pret = toggle;
        break;
      case 'D': /* --proto */
        config->proto_present = TRUE;

        if(proto2num(config, &config->proto, nextarg))

          return PARAM_BAD_USE;
        break;
      case 'E': /* --proto-redir */
        config->proto_redir_present = TRUE;


        if(proto2num(config, &config->proto_redir, nextarg))
          return PARAM_BAD_USE;
        break;
      case 'F': /* --resolve */
        err = add2list(&config->resolve, nextarg);
        if(err)
          return err;
        break;







>
|
>
|



>
>
|







1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
          return err;
        break;
      case 'C': /* --ftp-pret */
        config->ftp_pret = toggle;
        break;
      case 'D': /* --proto */
        config->proto_present = TRUE;
        err = proto2num(config, (unsigned int)CURLPROTO_ALL,
                        &config->proto_str, nextarg);
        if(err)
          return err;
        break;
      case 'E': /* --proto-redir */
        config->proto_redir_present = TRUE;
        if(proto2num(config, CURLPROTO_HTTP|CURLPROTO_HTTPS|
                     CURLPROTO_FTP|CURLPROTO_FTPS,
                     &config->proto_redir_str, nextarg))
          return PARAM_BAD_USE;
        break;
      case 'F': /* --resolve */
        err = add2list(&config->resolve, nextarg);
        if(err)
          return err;
        break;
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
      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;
      case 'a': /* CA info PEM file */
        GetStr(&config->cacert, nextarg);
        break;
      case 'b': /* cert file type */
        GetStr(&config->cert_type, nextarg);
        break;
      case 'c': /* private key file */
        GetStr(&config->key, nextarg);
        break;
      case 'd': /* private key file type */
        GetStr(&config->key_type, nextarg);
        break;
      case 'e': /* private key passphrase */
        GetStr(&config->key_passwd, nextarg);
        cleanarg(nextarg);
        break;
      case 'f': /* crypto engine */
        GetStr(&config->engine, nextarg);
        if(config->engine && curl_strequal(config->engine, "list"))
          return PARAM_ENGINES_REQUESTED;
        break;
      case 'g': /* CA cert directory */







>
















|







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
      ptr = *nextarg ? nextarg : NULL;
      GetStr(&config->referer, ptr);
    }
    break;
    case 'E':
      switch(subletter) {
      case '\0': /* certificate file */
        cleanarg(clearthis);
        GetFileAndPassword(nextarg, &config->cert, &config->key_passwd);
        break;
      case 'a': /* CA info PEM file */
        GetStr(&config->cacert, nextarg);
        break;
      case 'b': /* cert file type */
        GetStr(&config->cert_type, nextarg);
        break;
      case 'c': /* private key file */
        GetStr(&config->key, nextarg);
        break;
      case 'd': /* private key file type */
        GetStr(&config->key_type, nextarg);
        break;
      case 'e': /* private key passphrase */
        GetStr(&config->key_passwd, nextarg);
        cleanarg(clearthis);
        break;
      case 'f': /* crypto engine */
        GetStr(&config->engine, nextarg);
        if(config->engine && curl_strequal(config->engine, "list"))
          return PARAM_ENGINES_REQUESTED;
        break;
      case 'g': /* CA cert directory */
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
        GetStr(&config->hostpubsha256, nextarg);
        break;
      case 'j': /* CRL file */
        GetStr(&config->crlfile, nextarg);
        break;
      case 'k': /* TLS username */
        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
          cleanarg(nextarg);
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->tls_username, nextarg);
        cleanarg(nextarg);
        break;
      case 'l': /* TLS password */
        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
          cleanarg(nextarg);
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->tls_password, nextarg);
        cleanarg(nextarg);
        break;
      case 'm': /* TLS authentication type */
        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
          GetStr(&config->tls_authtype, nextarg);
          if(!curl_strequal(config->tls_authtype, "SRP"))
            return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
        }







|



|



|



|







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
        GetStr(&config->hostpubsha256, nextarg);
        break;
      case 'j': /* CRL file */
        GetStr(&config->crlfile, nextarg);
        break;
      case 'k': /* TLS username */
        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
          cleanarg(clearthis);
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->tls_username, nextarg);
        cleanarg(clearthis);
        break;
      case 'l': /* TLS password */
        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
          cleanarg(clearthis);
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->tls_password, nextarg);
        cleanarg(clearthis);
        break;
      case 'm': /* TLS authentication type */
        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
          GetStr(&config->tls_authtype, nextarg);
          if(!curl_strequal(config->tls_authtype, "SRP"))
            return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
        }
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
        break;

      case 't': /* --tcp-fastopen */
        config->tcp_fastopen = TRUE;
        break;

      case 'u': /* TLS username for proxy */

        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
          cleanarg(nextarg);
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->proxy_tls_username, nextarg);
        cleanarg(nextarg);
        break;

      case 'v': /* TLS password for proxy */

        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
          cleanarg(nextarg);
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->proxy_tls_password, nextarg);
        cleanarg(nextarg);
        break;

      case 'w': /* TLS authentication type for proxy */
        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
          GetStr(&config->proxy_tls_authtype, nextarg);
          if(!curl_strequal(config->proxy_tls_authtype, "SRP"))
            return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
        }
        else
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        break;

      case 'x': /* certificate file for proxy */

        GetFileAndPassword(nextarg, &config->proxy_cert,
                           &config->proxy_key_passwd);
        break;

      case 'y': /* cert file type for proxy */
        GetStr(&config->proxy_cert_type, nextarg);
        break;

      case 'z': /* private key file for proxy */
        GetStr(&config->proxy_key, nextarg);
        break;

      case '0': /* private key file type for proxy */
        GetStr(&config->proxy_key_type, nextarg);
        break;

      case '1': /* private key passphrase for proxy */
        GetStr(&config->proxy_key_passwd, nextarg);
        cleanarg(nextarg);
        break;

      case '2': /* ciphers for proxy */
        GetStr(&config->proxy_cipher_list, nextarg);
        break;

      case '3': /* CRL file for proxy */







>

<



<



>

<



<













>


















|







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
        break;

      case 't': /* --tcp-fastopen */
        config->tcp_fastopen = TRUE;
        break;

      case 'u': /* TLS username for proxy */
        cleanarg(clearthis);
        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {

          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->proxy_tls_username, nextarg);

        break;

      case 'v': /* TLS password for proxy */
        cleanarg(clearthis);
        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {

          return PARAM_LIBCURL_DOESNT_SUPPORT;
        }
        GetStr(&config->proxy_tls_password, nextarg);

        break;

      case 'w': /* TLS authentication type for proxy */
        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
          GetStr(&config->proxy_tls_authtype, nextarg);
          if(!curl_strequal(config->proxy_tls_authtype, "SRP"))
            return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
        }
        else
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        break;

      case 'x': /* certificate file for proxy */
        cleanarg(clearthis);
        GetFileAndPassword(nextarg, &config->proxy_cert,
                           &config->proxy_key_passwd);
        break;

      case 'y': /* cert file type for proxy */
        GetStr(&config->proxy_cert_type, nextarg);
        break;

      case 'z': /* private key file for proxy */
        GetStr(&config->proxy_key, nextarg);
        break;

      case '0': /* private key file type for proxy */
        GetStr(&config->proxy_key_type, nextarg);
        break;

      case '1': /* private key passphrase for proxy */
        GetStr(&config->proxy_key_passwd, nextarg);
        cleanarg(clearthis);
        break;

      case '2': /* ciphers for proxy */
        GetStr(&config->proxy_cipher_list, nextarg);
        break;

      case '3': /* CRL file for proxy */
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
        GetStr(&url->infile, nextarg);
      }
    }
    break;
    case 'u':
      /* user:password  */
      GetStr(&config->userpwd, nextarg);
      cleanarg(nextarg);
      break;
    case 'U':
      /* Proxy user:password  */
      GetStr(&config->proxyuserpwd, nextarg);
      cleanarg(nextarg);
      break;
    case 'v':
      if(toggle) {
        /* the '%' thing here will cause the trace get sent to stderr */
        Curl_safefree(global->trace_dump);
        global->trace_dump = strdup("%");
        if(!global->trace_dump)







|




|







2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
        GetStr(&url->infile, nextarg);
      }
    }
    break;
    case 'u':
      /* user:password  */
      GetStr(&config->userpwd, nextarg);
      cleanarg(clearthis);
      break;
    case 'U':
      /* Proxy user:password  */
      GetStr(&config->proxyuserpwd, nextarg);
      cleanarg(clearthis);
      break;
    case 'v':
      if(toggle) {
        /* the '%' thing here will cause the trace get sent to stderr */
        Curl_safefree(global->trace_dump);
        global->trace_dump = strdup("%");
        if(!global->trace_dump)
2416
2417
2418
2419
2420
2421
2422
2423

2424
2425


2426


2427

2428
2429
2430
2431
2432
2433
2434
      bool passarg;

      if(!strcmp("--", orig_opt))
        /* This indicates the end of the flags and thus enables the
           following (URL) argument to start with -. */
        stillflags = FALSE;
      else {
        char *nextarg = (i < (argc - 1))

          ? curlx_convert_tchar_to_UTF8(argv[i + 1])
          : NULL;





        result = getparameter(orig_opt, nextarg, &passarg, global, config);


        curlx_unicodefree(nextarg);
        config = global->last;
        if(result == PARAM_NEXT_OPERATION) {
          /* Reset result as PARAM_NEXT_OPERATION is only used here and not
             returned from this function */
          result = PARAM_OK;







|
>
|
|
>
>
|
>
>
|
>







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
      bool passarg;

      if(!strcmp("--", orig_opt))
        /* This indicates the end of the flags and thus enables the
           following (URL) argument to start with -. */
        stillflags = FALSE;
      else {
        char *nextarg = NULL;
        if(i < (argc - 1)) {
          nextarg = curlx_convert_tchar_to_UTF8(argv[i + 1]);
          if(!nextarg) {
            curlx_unicodefree(orig_opt);
            return PARAM_NO_MEM;
          }
        }

        result = getparameter(orig_opt, nextarg, &passarg,
                              global, config);

        curlx_unicodefree(nextarg);
        config = global->last;
        if(result == PARAM_NEXT_OPERATION) {
          /* Reset result as PARAM_NEXT_OPERATION is only used here and not
             returned from this function */
          result = PARAM_OK;
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
          i++; /* we're supposed to skip this */
      }
    }
    else {
      bool used;

      /* Just add the URL please */
      result = getparameter("--url", orig_opt, &used, global,
                            config);
    }

    if(!result)
      curlx_unicodefree(orig_opt);
  }

  if(!result && config->content_disposition) {







|
<







2490
2491
2492
2493
2494
2495
2496
2497

2498
2499
2500
2501
2502
2503
2504
          i++; /* we're supposed to skip this */
      }
    }
    else {
      bool used;

      /* Just add the URL please */
      result = getparameter("--url", orig_opt, &used, global, config);

    }

    if(!result)
      curlx_unicodefree(orig_opt);
  }

  if(!result && config->content_disposition) {
Changes to jni/curl/src/tool_getparam.h.
50
51
52
53
54
55
56
57

58
59
60
61
62
63
64
  PARAM_READ_ERROR,
  PARAM_LAST
} ParameterError;

struct GlobalConfig;
struct OperationConfig;

ParameterError getparameter(const char *flag, char *nextarg, bool *usedarg,

                            struct GlobalConfig *global,
                            struct OperationConfig *operation);

#ifdef UNITTESTS
void parse_cert_parameter(const char *cert_parameter,
                          char **certname,
                          char **passphrase);







|
>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
  PARAM_READ_ERROR,
  PARAM_LAST
} ParameterError;

struct GlobalConfig;
struct OperationConfig;

ParameterError getparameter(const char *flag, char *nextarg,
                            bool *usedarg,
                            struct GlobalConfig *global,
                            struct OperationConfig *operation);

#ifdef UNITTESTS
void parse_cert_parameter(const char *cert_parameter,
                          char **certname,
                          char **passphrase);
Changes to jni/curl/src/tool_hugehelp.c.

more than 10,000 changes

Changes to jni/curl/src/tool_listhelp.c.
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
   "Enable TLS False Start",
   CURLHELP_TLS},
  {"-F, --form <name=content>",
   "Specify multipart MIME data",
   CURLHELP_HTTP | CURLHELP_UPLOAD},
  {"    --form-escape",
   "Escape multipart form field/file names using backslash",
   CURLHELP_HTTP | CURLHELP_POST},
  {"    --form-string <name=string>",
   "Specify multipart MIME data",
   CURLHELP_HTTP | CURLHELP_UPLOAD},
  {"    --ftp-account <data>",
   "Account data string",
   CURLHELP_FTP | CURLHELP_AUTH},
  {"    --ftp-alternative-to-user <command>",







|







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
   "Enable TLS False Start",
   CURLHELP_TLS},
  {"-F, --form <name=content>",
   "Specify multipart MIME data",
   CURLHELP_HTTP | CURLHELP_UPLOAD},
  {"    --form-escape",
   "Escape multipart form field/file names using backslash",
   CURLHELP_HTTP | CURLHELP_UPLOAD},
  {"    --form-string <name=string>",
   "Specify multipart MIME data",
   CURLHELP_HTTP | CURLHELP_UPLOAD},
  {"    --ftp-account <data>",
   "Account data string",
   CURLHELP_FTP | CURLHELP_AUTH},
  {"    --ftp-alternative-to-user <command>",
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
   "Specify request method to use",
   CURLHELP_CONNECTION},
  {"    --request-target <path>",
   "Specify the target for this request",
   CURLHELP_HTTP},
  {"    --resolve <[+]host:port:addr[,addr]...>",
   "Resolve the host+port to this address",
   CURLHELP_CONNECTION},
  {"    --retry <num>",
   "Retry request if transient problems occur",
   CURLHELP_CURL},
  {"    --retry-all-errors",
   "Retry all errors (use with --retry)",
   CURLHELP_CURL},
  {"    --retry-connrefused",







|







589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
   "Specify request method to use",
   CURLHELP_CONNECTION},
  {"    --request-target <path>",
   "Specify the target for this request",
   CURLHELP_HTTP},
  {"    --resolve <[+]host:port:addr[,addr]...>",
   "Resolve the host+port to this address",
   CURLHELP_CONNECTION | CURLHELP_DNS},
  {"    --retry <num>",
   "Retry request if transient problems occur",
   CURLHELP_CURL},
  {"    --retry-all-errors",
   "Retry all errors (use with --retry)",
   CURLHELP_CURL},
  {"    --retry-connrefused",
Changes to jni/curl/src/tool_operate.c.
323
324
325
326
327
328
329
















330
331
332
333
334
335
336
      my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
    }
    per->input.fd = per->infd;
  }
  return result;
}

















/*
 * Call this after a transfer has completed.
 */
static CURLcode post_per_transfer(struct GlobalConfig *global,
                                  struct per_transfer *per,
                                  CURLcode result,
                                  bool *retryp,







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







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
      my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
    }
    per->input.fd = per->infd;
  }
  return result;
}

#ifdef __AMIGA__
static void AmigaSetComment(struct per_transfer *per,
                            CURLcode result)
{
  struct OutStruct *outs = &per->outs;
  if(!result && outs->s_isreg && outs->filename) {
    /* Set the url (up to 80 chars) as comment for the file */
    if(strlen(per->this_url) > 78)
      per->this_url[79] = '\0';
    SetComment(outs->filename, per->this_url);
  }
}
#else
#define AmigaSetComment(x,y) Curl_nop_stmt
#endif

/*
 * Call this after a transfer has completed.
 */
static CURLcode post_per_transfer(struct GlobalConfig *global,
                                  struct per_transfer *per,
                                  CURLcode result,
                                  bool *retryp,
598
599
600
601
602
603
604


605
606
607
608
609
610
611
        fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
    }
    if(result && config->rm_partial) {
      notef(global, "Removing output file: %s\n", outs->filename);
      unlink(outs->filename);
    }
  }



  /* 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);







>
>







614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
        fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
    }
    if(result && config->rm_partial) {
      notef(global, "Removing output file: %s\n", outs->filename);
      unlink(outs->filename);
    }
  }

  AmigaSetComment(per, 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);
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
                break;
              }
            }
          }

          /*
           * If the user has also selected --anyauth or --proxy-anyauth
           * we should warn him/her.
           */
          if(config->proxyanyauth || (authbits>1)) {
            warnf(global,
                  "Using --anyauth or --proxy-anyauth with upload from stdin"
                  " involves a big risk of it not working. Use a temporary"
                  " file or a fixed auth type instead!\n");
          }







|







1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
                break;
              }
            }
          }

          /*
           * If the user has also selected --anyauth or --proxy-anyauth
           * we should warn them.
           */
          if(config->proxyanyauth || (authbits>1)) {
            warnf(global,
                  "Using --anyauth or --proxy-anyauth with upload from stdin"
                  " involves a big risk of it not working. Use a temporary"
                  " file or a fixed auth type instead!\n");
          }
1751
1752
1753
1754
1755
1756
1757

1758
1759
1760
1761
1762
1763
1764
1765



1766

1767
1768
1769
1770
1771
1772
1773
        my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);

        if(config->cookies) {
          struct curlx_dynbuf cookies;
          struct curl_slist *cl;

          /* 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)
              result = curlx_dyn_addf(&cookies, "%s", cl->data);
            else
              result = curlx_dyn_addf(&cookies, ";%s", cl->data);

            if(result)



              break;

          }

          my_setopt_str(curl, CURLOPT_COOKIE, curlx_dyn_ptr(&cookies));
          curlx_dyn_free(&cookies);
        }

        if(config->cookiefiles) {







>
|






|
>
>
>

>







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
        my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);

        if(config->cookies) {
          struct curlx_dynbuf cookies;
          struct curl_slist *cl;

          /* The maximum size needs to match MAX_NAME in cookie.h */
#define MAX_COOKIE_LINE 4096
          curlx_dyn_init(&cookies, MAX_COOKIE_LINE);
          for(cl = config->cookies; cl; cl = cl->next) {
            if(cl == config->cookies)
              result = curlx_dyn_addf(&cookies, "%s", cl->data);
            else
              result = curlx_dyn_addf(&cookies, ";%s", cl->data);

            if(result) {
              warnf(global,
                    "skipped provided cookie, the cookie header "
                    "would go over %u bytes\n", MAX_COOKIE_LINE);
              break;
            }
          }

          my_setopt_str(curl, CURLOPT_COOKIE, curlx_dyn_ptr(&cookies));
          curlx_dyn_free(&cookies);
        }

        if(config->cookiefiles) {
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989

1990
1991
1992
1993
1994
1995
1996
        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))
          hdrcbdata->honor_cd_filename = TRUE;
        else
          hdrcbdata->honor_cd_filename = FALSE;








|

|
>







2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
        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_str(curl, CURLOPT_PROTOCOLS_STR, config->proto_str);
        if(config->proto_redir_present)
          my_setopt_str(curl, CURLOPT_REDIR_PROTOCOLS_STR,
                        config->proto_redir_str);

        if(config->content_disposition
           && (urlnode->flags & GETOUT_USEREMOTE))
          hdrcbdata->honor_cd_filename = TRUE;
        else
          hdrcbdata->honor_cd_filename = FALSE;

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

    /* 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.
     */
    result = curl_easy_getinfo(curltls, CURLINFO_TLS_SSL_PTR,
                               &tls_backend_info);
    if(result)

      return result;


    /* Set the CA cert locations specified in the environment. For Windows if
     * no environment-specified filename is found then check for CA bundle
     * default filename curl-ca-bundle.crt in the user's PATH.
     *
     * 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(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
      char *env;
      env = curlx_getenv("CURL_CA_BUNDLE");
      if(env) {
        config->cacert = strdup(env);
        if(!config->cacert) {
          curl_free(env);

          errorf(global, "out of memory\n");
          return CURLE_OUT_OF_MEMORY;
        }
      }
      else {
        env = curlx_getenv("SSL_CERT_DIR");
        if(env) {
          config->capath = strdup(env);
          if(!config->capath) {
            curl_free(env);

            helpf(global->errors, "out of memory\n");
            return CURLE_OUT_OF_MEMORY;
          }
          capath_from_env = true;
        }
        else {
          env = curlx_getenv("SSL_CERT_FILE");
          if(env) {
            config->cacert = strdup(env);
            if(!config->cacert) {
              curl_free(env);

              errorf(global, "out of memory\n");
              return CURLE_OUT_OF_MEMORY;
            }
          }
        }
      }








|
>

>
















>










>











>







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

    /* 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.
     */
    result = curl_easy_getinfo(curltls, CURLINFO_TLS_SSL_PTR,
                               &tls_backend_info);
    if(result) {
      curl_easy_cleanup(curltls);
      return result;
    }

    /* Set the CA cert locations specified in the environment. For Windows if
     * no environment-specified filename is found then check for CA bundle
     * default filename curl-ca-bundle.crt in the user's PATH.
     *
     * 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(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
      char *env;
      env = curlx_getenv("CURL_CA_BUNDLE");
      if(env) {
        config->cacert = strdup(env);
        if(!config->cacert) {
          curl_free(env);
          curl_easy_cleanup(curltls);
          errorf(global, "out of memory\n");
          return CURLE_OUT_OF_MEMORY;
        }
      }
      else {
        env = curlx_getenv("SSL_CERT_DIR");
        if(env) {
          config->capath = strdup(env);
          if(!config->capath) {
            curl_free(env);
            curl_easy_cleanup(curltls);
            helpf(global->errors, "out of memory\n");
            return CURLE_OUT_OF_MEMORY;
          }
          capath_from_env = true;
        }
        else {
          env = curlx_getenv("SSL_CERT_FILE");
          if(env) {
            config->cacert = strdup(env);
            if(!config->cacert) {
              curl_free(env);
              curl_easy_cleanup(curltls);
              errorf(global, "out of memory\n");
              return CURLE_OUT_OF_MEMORY;
            }
          }
        }
      }

Changes to jni/curl/src/tool_paramhlp.c.
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
  else {
    *size = 0;
    *bufp = NULL;
  }
  return PARAM_OK;
}

void cleanarg(char *str)
{
#ifdef HAVE_WRITABLE_ARGV
  /* now that GetStr has copied the contents of nextarg, wipe the next
   * argument out so that the username:password isn't displayed in the
   * system process list */
  if(str) {
    size_t len = strlen(str);
    memset(str, ' ', len);
  }
#else
  (void)str;
#endif
}

/*
 * Parse the string and write the long in the given address. Return PARAM_OK
 * on success, otherwise a parameter specific error enum.
 *
 * Since this function gets called with the 'nextarg' pointer from within the
 * getparameter a lot, we must check it for NULL before accessing the str
 * data.







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







112
113
114
115
116
117
118















119
120
121
122
123
124
125
  else {
    *size = 0;
    *bufp = NULL;
  }
  return PARAM_OK;
}
















/*
 * Parse the string and write the long in the given address. Return PARAM_OK
 * on success, otherwise a parameter specific error enum.
 *
 * Since this function gets called with the 'nextarg' pointer from within the
 * getparameter a lot, we must check it for NULL before accessing the str
 * data.
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
    return PARAM_NEGATIVE_NUMERIC;

  *valp = value;
  return PARAM_OK;
}

/*
 * Parse the string and modify the long in the given address. Return
 * non-zero on failure, zero on success.
 *
 * The string is a list of protocols
 *
 * Since this function gets called with the 'nextarg' pointer from within the
 * getparameter a lot, we must check it for NULL before accessing the str
 * data.
 */

long proto2num(struct OperationConfig *config, long *val, const char *str)

{
  char *buffer;
  const char *sep = ",";
  char *token;





  static struct sprotos {
    const char *name;
    long bit;
  } const protos[] = {
    { "all", CURLPROTO_ALL },
    { "http", CURLPROTO_HTTP },
    { "https", CURLPROTO_HTTPS },
    { "ftp", CURLPROTO_FTP },
    { "ftps", CURLPROTO_FTPS },
    { "scp", CURLPROTO_SCP },
    { "sftp", CURLPROTO_SFTP },
    { "telnet", CURLPROTO_TELNET },
    { "ldap", CURLPROTO_LDAP },
    { "ldaps", CURLPROTO_LDAPS },

    { "dict", CURLPROTO_DICT },
    { "file", CURLPROTO_FILE },
    { "tftp", CURLPROTO_TFTP },
    { "imap", CURLPROTO_IMAP },
    { "imaps", CURLPROTO_IMAPS },
    { "pop3", CURLPROTO_POP3 },
    { "pop3s", CURLPROTO_POP3S },
    { "smtp", CURLPROTO_SMTP },
    { "smtps", CURLPROTO_SMTPS },
    { "rtsp", CURLPROTO_RTSP },
    { "gopher", CURLPROTO_GOPHER },

    { "smb", CURLPROTO_SMB },
    { "smbs", CURLPROTO_SMBS },
    { NULL, 0 }
  };

  if(!str)
    return 1;

  buffer = strdup(str); /* because strtok corrupts it */
  if(!buffer)
    return 1;

  /* Allow strtok() here since this isn't used threaded */
  /* !checksrc! disable BANNEDFUNC 2 */
  for(token = strtok(buffer, sep);
      token;
      token = strtok(NULL, sep)) {
    enum e_action { allow, deny, set } action = allow;

    struct sprotos const *pp;

    /* Process token modifiers */
    while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
      switch (*token++) {
      case '=':
        action = set;
        break;
      case '-':
        action = deny;
        break;
      case '+':
        action = allow;
        break;
      default: /* Includes case of terminating NULL */
        Curl_safefree(buffer);
        return 1;
      }
    }

    for(pp = protos; pp->name; pp++) {
      if(curl_strequal(token, pp->name)) {
        switch(action) {
        case deny:
          *val &= ~(pp->bit);
          break;
        case allow:
          *val |= pp->bit;
          break;
        case set:
          *val = pp->bit;
          break;
        }
        break;
      }
    }

    if(!(pp->name)) { /* unknown protocol */
      /* If they have specified only this protocol, we say treat it as
         if no protocols are allowed */
      if(action == set)
        *val = 0;
      warnf(config->global, "unrecognized protocol '%s'\n", token);
    }
  }
  Curl_safefree(buffer);













  return 0;
}

/**
 * Check if the given string is a protocol supported by libcurl
 *
 * @param str  the protocol name
 * @return PARAM_OK  protocol supported
 * @return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL  protocol not supported
 * @return PARAM_REQUIRES_PARAMETER   missing parameter
 */
int check_protocol(const char *str)
{
  const char * const *pp;
  const curl_version_info_data *curlinfo = curl_version_info(CURLVERSION_NOW);
  if(!str)
    return PARAM_REQUIRES_PARAMETER;
  for(pp = curlinfo->protocols; *pp; pp++) {
    if(curl_strequal(*pp, str))







|
|








|
>




>
>
>
>



|

|









>











>






|



|








<
<














|







|


|


|










|




>
>
>
>
>
>
>
>
>
>
>
>
>
|










|







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
    return PARAM_NEGATIVE_NUMERIC;

  *valp = value;
  return PARAM_OK;
}

/*
 * Parse the string and provide an allocated libcurl compatible protocol
 * string output. Return non-zero on failure, zero on success.
 *
 * The string is a list of protocols
 *
 * Since this function gets called with the 'nextarg' pointer from within the
 * getparameter a lot, we must check it for NULL before accessing the str
 * data.
 */

ParameterError proto2num(struct OperationConfig *config,
                         unsigned int val, char **ostr, const char *str)
{
  char *buffer;
  const char *sep = ",";
  char *token;
  char obuf[256] = "";
  size_t olen = sizeof(obuf);
  char *optr;
  struct sprotos const *pp;

  static struct sprotos {
    const char *name;
    unsigned int bit;
  } const protos[] = {
    { "all", (unsigned int)CURLPROTO_ALL },
    { "http", CURLPROTO_HTTP },
    { "https", CURLPROTO_HTTPS },
    { "ftp", CURLPROTO_FTP },
    { "ftps", CURLPROTO_FTPS },
    { "scp", CURLPROTO_SCP },
    { "sftp", CURLPROTO_SFTP },
    { "telnet", CURLPROTO_TELNET },
    { "ldap", CURLPROTO_LDAP },
    { "ldaps", CURLPROTO_LDAPS },
    { "mqtt", CURLPROTO_MQTT },
    { "dict", CURLPROTO_DICT },
    { "file", CURLPROTO_FILE },
    { "tftp", CURLPROTO_TFTP },
    { "imap", CURLPROTO_IMAP },
    { "imaps", CURLPROTO_IMAPS },
    { "pop3", CURLPROTO_POP3 },
    { "pop3s", CURLPROTO_POP3S },
    { "smtp", CURLPROTO_SMTP },
    { "smtps", CURLPROTO_SMTPS },
    { "rtsp", CURLPROTO_RTSP },
    { "gopher", CURLPROTO_GOPHER },
    { "gophers", CURLPROTO_GOPHERS },
    { "smb", CURLPROTO_SMB },
    { "smbs", CURLPROTO_SMBS },
    { NULL, 0 }
  };

  if(!str)
    return PARAM_OPTION_AMBIGUOUS;

  buffer = strdup(str); /* because strtok corrupts it */
  if(!buffer)
    return PARAM_NO_MEM;

  /* Allow strtok() here since this isn't used threaded */
  /* !checksrc! disable BANNEDFUNC 2 */
  for(token = strtok(buffer, sep);
      token;
      token = strtok(NULL, sep)) {
    enum e_action { allow, deny, set } action = allow;



    /* Process token modifiers */
    while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
      switch (*token++) {
      case '=':
        action = set;
        break;
      case '-':
        action = deny;
        break;
      case '+':
        action = allow;
        break;
      default: /* Includes case of terminating NULL */
        Curl_safefree(buffer);
        return PARAM_BAD_USE;
      }
    }

    for(pp = protos; pp->name; pp++) {
      if(curl_strequal(token, pp->name)) {
        switch(action) {
        case deny:
          val &= ~(pp->bit);
          break;
        case allow:
          val |= pp->bit;
          break;
        case set:
          val = pp->bit;
          break;
        }
        break;
      }
    }

    if(!(pp->name)) { /* unknown protocol */
      /* If they have specified only this protocol, we say treat it as
         if no protocols are allowed */
      if(action == set)
        val = 0;
      warnf(config->global, "unrecognized protocol '%s'\n", token);
    }
  }
  Curl_safefree(buffer);

  optr = obuf;
  for(pp = &protos[1]; pp->name; pp++) {
    if(val & pp->bit) {
      size_t n = msnprintf(optr, olen, "%s%s",
                           olen != sizeof(obuf) ? "," : "",
                           pp->name);
      olen -= n;
      optr += n;
    }
  }
  *ostr = strdup(obuf);

  return *ostr ? PARAM_OK : PARAM_NO_MEM;
}

/**
 * Check if the given string is a protocol supported by libcurl
 *
 * @param str  the protocol name
 * @return PARAM_OK  protocol supported
 * @return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL  protocol not supported
 * @return PARAM_REQUIRES_PARAMETER   missing parameter
 */
ParameterError check_protocol(const char *str)
{
  const char * const *pp;
  const curl_version_info_data *curlinfo = curl_version_info(CURLVERSION_NOW);
  if(!str)
    return PARAM_REQUIRES_PARAMETER;
  for(pp = curlinfo->protocols; *pp; pp++) {
    if(curl_strequal(*pp, str))
Changes to jni/curl/src/tool_paramhlp.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

struct getout *new_getout(struct OperationConfig *config);

ParameterError file2string(char **bufp, FILE *file);

ParameterError file2memory(char **bufp, size_t *size, FILE *file);

void cleanarg(char *str);

ParameterError str2num(long *val, const char *str);
ParameterError str2unum(long *val, const char *str);
ParameterError oct2nummax(long *val, const char *str, long max);
ParameterError str2unummax(long *val, const char *str, long max);
ParameterError str2udouble(double *val, const char *str, long max);

long proto2num(struct OperationConfig *config, long *val, const char *str);



int check_protocol(const char *str);

ParameterError str2offset(curl_off_t *val, const char *str);

CURLcode get_args(struct OperationConfig *config, const size_t i);

ParameterError add2list(struct curl_slist **list, const char *ptr);








<
<






|
>
>

|







27
28
29
30
31
32
33


34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

struct getout *new_getout(struct OperationConfig *config);

ParameterError file2string(char **bufp, FILE *file);

ParameterError file2memory(char **bufp, size_t *size, FILE *file);



ParameterError str2num(long *val, const char *str);
ParameterError str2unum(long *val, const char *str);
ParameterError oct2nummax(long *val, const char *str, long max);
ParameterError str2unummax(long *val, const char *str, long max);
ParameterError str2udouble(double *val, const char *str, long max);

ParameterError proto2num(struct OperationConfig *config,
                         unsigned int val, char **obuf,
                         const char *str);

ParameterError check_protocol(const char *str);

ParameterError str2offset(curl_off_t *val, const char *str);

CURLcode get_args(struct OperationConfig *config, const size_t i);

ParameterError add2list(struct curl_slist **list, const char *ptr);

Changes to jni/curl/src/tool_progress.c.
264
265
266
267
268
269
270


271
272
273
274
275
276
277
      }
      else {
        /* since the beginning */
        deltams = tvdiff(now, *start);
        dl = all_dlnow;
        ul = all_ulnow;
      }


      dls = (curl_off_t)((double)dl / ((double)deltams/1000.0));
      uls = (curl_off_t)((double)ul / ((double)deltams/1000.0));
      speed = dls > uls ? dls : uls;
    }


    if(dlknown && speed) {







>
>







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
      }
      else {
        /* since the beginning */
        deltams = tvdiff(now, *start);
        dl = all_dlnow;
        ul = all_ulnow;
      }
      if(!deltams) /* no division by zero please */
        deltams++;
      dls = (curl_off_t)((double)dl / ((double)deltams/1000.0));
      uls = (curl_off_t)((double)ul / ((double)deltams/1000.0));
      speed = dls > uls ? dls : uls;
    }


    if(dlknown && speed) {
Changes to jni/curl/src/tool_version.h.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.84.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 */







|






23
24
25
26
27
28
29
30
31
32
33
34
35
36
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.85.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.
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
   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},
  {"header_json", VAR_HEADER_JSON, 0, NULL},
  {"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;







|
|
|

|



|




|

|

















|
|











|

|
|







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
   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, CURLINFO_NONE, writeString},
  {"exitcode", VAR_EXITCODE, CURLINFO_NONE, writeLong},
  {"filename_effective", VAR_EFFECTIVE_FILENAME, CURLINFO_NONE, writeString},
  {"ftp_entry_path", VAR_FTP_ENTRY_PATH, CURLINFO_FTP_ENTRY_PATH, writeString},
  {"header_json", VAR_HEADER_JSON, CURLINFO_NONE, NULL},
  {"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, CURLINFO_NONE, 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, CURLINFO_NONE, writeLong},
  {"num_redirects", VAR_REDIRECT_COUNT, CURLINFO_REDIRECT_COUNT, writeLong},
  {"onerror", VAR_ONERROR, CURLINFO_NONE, 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, CURLINFO_NONE, NULL},
  {"stdout", VAR_STDOUT, CURLINFO_NONE, 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, CURLINFO_NONE, writeString},
  {"url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString},
  {"urlnum", VAR_URLNUM, CURLINFO_NONE, writeLong},
  {NULL, VAR_NONE, CURLINFO_NONE, NULL}
};

static int writeTime(FILE *stream, const struct writeoutvar *wovar,
                     struct per_transfer *per, CURLcode per_result,
                     bool use_json)
{
  bool valid = false;
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
        /* an escaped %-letter */
        fputc('%', stream);
        ptr += 2;
      }
      else {
        /* this is meant as a variable to output */
        char *end;

        if('{' == ptr[1]) {
          char keepit;
          int i;
          bool match = FALSE;
          end = strchr(ptr, '}');
          ptr += 2; /* pass the % and the { */
          if(!end) {
            fputs("%{", stream);
            continue;
          }
          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;







>

<








|
<

>
|







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
        /* an escaped %-letter */
        fputc('%', stream);
        ptr += 2;
      }
      else {
        /* this is meant as a variable to output */
        char *end;
        size_t vlen;
        if('{' == ptr[1]) {

          int i;
          bool match = FALSE;
          end = strchr(ptr, '}');
          ptr += 2; /* pass the % and the { */
          if(!end) {
            fputs("%{", stream);
            continue;
          }
          vlen = end - ptr;

          for(i = 0; variables[i].name; i++) {
            if((strlen(variables[i].name) == vlen) &&
               curl_strnequal(ptr, variables[i].name, vlen)) {
              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;
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
                                             per, per_result, false);
                break;
              }
              break;
            }
          }
          if(!match) {
            fprintf(stderr, "curl: unknown --write-out variable: '%s'\n", ptr);

          }
          ptr = end + 1; /* pass the end */
          *end = keepit;
        }
        else if(!strncmp("header{", &ptr[1], 7)) {
          ptr += 8;
          end = strchr(ptr, '}');
          if(end) {

            struct curl_header *header;



            *end = 0;
            if(CURLHE_OK == curl_easy_header(per->curl, ptr, 0, CURLH_HEADER,
                                             -1, &header))
              fputs(header->value, stream);

            ptr = end + 1; /* pass the end */
          }
          else
            fputs("%header{", stream);
        }
        else {
          /* illegal syntax, then just output the characters that are used */
          fputc('%', stream);







|
>


<





>

>
>
>
|
|
|
|
>
|







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
                                             per, per_result, false);
                break;
              }
              break;
            }
          }
          if(!match) {
            fprintf(stderr, "curl: unknown --write-out variable: '%.*s'\n",
                    (int)vlen, ptr);
          }
          ptr = end + 1; /* pass the end */

        }
        else if(!strncmp("header{", &ptr[1], 7)) {
          ptr += 8;
          end = strchr(ptr, '}');
          if(end) {
            char hname[256]; /* holds the longest header field name */
            struct curl_header *header;
            vlen = end - ptr;
            if(vlen < sizeof(hname)) {
              memcpy(hname, ptr, vlen);
              hname[vlen] = 0;
              if(CURLHE_OK == curl_easy_header(per->curl, hname, 0,
                                               CURLH_HEADER, -1, &header))
                fputs(header->value, stream);
            }
            ptr = end + 1;
          }
          else
            fputs("%header{", stream);
        }
        else {
          /* illegal syntax, then just output the characters that are used */
          fputc('%', stream);
Changes to jni/curl/tests/Makefile.in.
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







109
110
111
112
113
114
115
116

117
118
119
120
121
122
123
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
365
366
367
368
369
370
371

372
373
374
375
376
377
378
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/tests/certs/Makefile.in.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/certs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/certs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
342
343
344
345
346
347
348

349
350
351
352
353
354
355
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/tests/certs/scripts/Makefile.in.
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/certs/scripts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/certs/scripts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
284
285
286
287
288
289
290

291
292
293
294
295
296
297
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/tests/data/CMakeLists.txt.
20
21
22
23
24
25
26
27
28
29
30
#
# SPDX-License-Identifier: curl
#
###########################################################################
# Loads 'TESTCASES' from for the 'make show' target in runtests.pl
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")

# Prints all available test cases. Do not quote TESTCASES, it must be displayed
# as a space-separated string rather than comma-separated (a list in CMake).
add_custom_target(show COMMAND echo ${TESTCASES})







<
<
<
<
20
21
22
23
24
25
26




#
# SPDX-License-Identifier: curl
#
###########################################################################
# Loads 'TESTCASES' from for the 'make show' target in runtests.pl
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")




Changes to jni/curl/tests/data/DISABLED.
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
# listed below
%if hyper
265
266
565
579
587
670
671
672
673
# 1021 re-added here due to flakiness
1021
1117
1274
1417
1533
1540
1591
1940
1941
1942
1943
%endif
2043
# Tests that are disabled here for rustls are SUPPOSED to work
%if rustls







<
<
<
<



<




<







65
66
67
68
69
70
71




72
73
74

75
76
77
78

79
80
81
82
83
84
85
# listed below
%if hyper
265
266
565
579
587




# 1021 re-added here due to flakiness
1021
1117

1417
1533
1540
1591

1941
1942
1943
%endif
2043
# Tests that are disabled here for rustls are SUPPOSED to work
%if rustls
Changes to jni/curl/tests/data/Makefile.am.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
install:
test:

# TESTCASES are taken from Makefile.inc
include Makefile.inc

EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt

filecheck:
	@mkdir test-place; \
	cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
	rm -f test-place/*~; \
	for f in $(EXTRA_DIST); do \
	  if test -f "$(top_srcdir)/tests/data/$$f"; then \
	    rm -f "test-place/$$f"; \
	  else \
	    echo "$$f is listed but missing!"; \
	  fi \
	done; \
	echo "Local files not present in EXTRA_DIST:" ; \
	ls test-place; \
	! ls test-place | grep . >/dev/null ; \
	RC=$$? ; \
	rm -rf test-place ; \
	exit $$RC







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
25
26
27
28
29
30
31


















install:
test:

# TESTCASES are taken from Makefile.inc
include Makefile.inc

EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt


















Changes to jni/curl/tests/data/Makefile.in.
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/data
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







109
110
111
112
113
114
115
116

117
118
119
120
121
122
123
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/data
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
308
309
310
311
312
313
314

315
316
317
318
319
320
321
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
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 test363 test364 test365 test366 test367 test368 test369 \
test370 test371 test372 test373 test374 test375 test376 test378 test379 \
test380 test381 test383 test384 test385 test386 test387 \
\
test390 test391 test392 test393 test394 test395 test396 test397 test398 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 test410 test411 test412 test413 test414 \
\
test430 test431 test432 test433 test434 test435 test436 \
\
test440 test441 test442 test443 test444 \
\
test490 test491 test492 test493 test494 \
\







|
<

<
|
|







422
423
424
425
426
427
428
429

430

431
432
433
434
435
436
437
438
439
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 test363 test364 test365 test366 test367 test368 test369 \
test370 test371 test372 test373 test374 test375 test376 test378 test379 \
test380 test381 test383 test384 test385 test386 test387 test388 test389 \

test390 test391 test392 test393 test394 test395 test396 test397 test398 \

test399 test400 test401 test402 test403 test404 test405 test406 test407 \
test408 test409 test410 test411 test412 test413 test414 \
\
test430 test431 test432 test433 test434 test435 test436 \
\
test440 test441 test442 test443 test444 \
\
test490 test491 test492 test493 test494 \
\
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
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         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 test676 test677 test678 \
test679 test680 test681 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
test718 test719 test720 test721 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \







|







453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
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         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 test676 test677 test678 \
test679 test680 test681 test682 test683 test684 test685 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
test718 test719 test720 test721 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540          test1542 test1543 \
\
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 test1635 \







|







557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540          test1542 test1543 \
\
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 test1597 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1610 test1611 test1612 test1613 \
\
test1620 test1621 \
\
test1630 test1631 test1632 test1633 test1634 test1635 \
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
# SPDX-License-Identifier: curl
#
###########################################################################
iall:
install:
test:

filecheck:
	@mkdir test-place; \
	cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
	rm -f test-place/*~; \
	for f in $(EXTRA_DIST); do \
	  if test -f "$(top_srcdir)/tests/data/$$f"; then \
	    rm -f "test-place/$$f"; \
	  else \
	    echo "$$f is listed but missing!"; \
	  fi \
	done; \
	echo "Local files not present in EXTRA_DIST:" ; \
	ls test-place; \
	! ls test-place | grep . >/dev/null ; \
	RC=$$? ; \
	rm -rf test-place ; \
	exit $$RC

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:







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



829
830
831
832
833
834
835


















836
837
838
# SPDX-License-Identifier: curl
#
###########################################################################
iall:
install:
test:



















# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
Changes to jni/curl/tests/data/Makefile.inc.
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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 test363 test364 test365 test366 test367 test368 test369 \
test370 test371 test372 test373 test374 test375 test376 test378 test379 \
test380 test381 test383 test384 test385 test386 test387 \
\
test390 test391 test392 test393 test394 test395 test396 test397 test398 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 test410 test411 test412 test413 test414 \
\
test430 test431 test432 test433 test434 test435 test436 \
\
test440 test441 test442 test443 test444 \
\
test490 test491 test492 test493 test494 \
\







|
<

<
|
|







60
61
62
63
64
65
66
67

68

69
70
71
72
73
74
75
76
77
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 test363 test364 test365 test366 test367 test368 test369 \
test370 test371 test372 test373 test374 test375 test376 test378 test379 \
test380 test381 test383 test384 test385 test386 test387 test388 test389 \

test390 test391 test392 test393 test394 test395 test396 test397 test398 \

test399 test400 test401 test402 test403 test404 test405 test406 test407 \
test408 test409 test410 test411 test412 test413 test414 \
\
test430 test431 test432 test433 test434 test435 test436 \
\
test440 test441 test442 test443 test444 \
\
test490 test491 test492 test493 test494 \
\
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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         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 test676 test677 test678 \
test679 test680 test681 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
test718 test719 test720 test721 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \







|







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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         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 test676 test677 test678 \
test679 test680 test681 test682 test683 test684 test685 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
test718 test719 test720 test721 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540          test1542 test1543 \
\
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 test1635 \







|







195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
test1540          test1542 test1543 \
\
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 test1597 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1610 test1611 test1612 test1613 \
\
test1620 test1621 \
\
test1630 test1631 test1632 test1633 test1634 test1635 \
Changes to jni/curl/tests/data/test1274.
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
header line folding
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/
 fake
 folded
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"












|







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
header line folding
</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
 folded
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
49
50
51
52
53
54
55



56
57
58

59
60
61



62
63

64
65
66
67
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/out%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT



Server: test-server/
 fake
 folded

Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Content-Length: 6



Connection:                                              
   close


</file>
</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
User-Agent: curl/%VERSION
Accept: */*

</protocol>
<file name="log/out%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
%if hyper
Server: test-server/ fake folded
%else
Server: test-server/
 fake
 folded
%endif
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Content-Length: 6
%if hyper
Connection: close
%else
Connection:                                              
   close
%endif

</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1401.
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_COOKIE, "chocolate=chip");
  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);
  curl_easy_setopt(hnd, CURLOPT_PROTOCOLS, (long)CURLPROTO_FILE |
                                           (long)CURLPROTO_FTP |
                                           (long)CURLPROTO_HTTP);

  /* Here is a list of options the curl code used that cannot get generated
     as source easily. You may choose to either not use them or implement
     them yourself.

  CURLOPT_WRITEDATA set to a objectpointer
  CURLOPT_WRITEFUNCTION set to a functionpointer







|
<
<







87
88
89
90
91
92
93
94


95
96
97
98
99
100
101
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_COOKIE, "chocolate=chip");
  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);
  curl_easy_setopt(hnd, CURLOPT_PROTOCOLS_STR, "http,ftp,file");



  /* Here is a list of options the curl code used that cannot get generated
     as source easily. You may choose to either not use them or implement
     them yourself.

  CURLOPT_WRITEDATA set to a objectpointer
  CURLOPT_WRITEFUNCTION set to a functionpointer
jni/curl/tests/data/test1452 became a regular file.
Changes to jni/curl/tests/data/test1538.
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
e68: TFTP: File Not Found
e69: TFTP: Access Violation
e70: Disk full or allocation exceeded
e71: TFTP: Illegal operation
e72: TFTP: Unknown transfer ID
e73: Remote file already exists
e74: TFTP: No such user
e75: Conversion failed
e76: Unknown error
e77: Problem with the SSL CA cert (path? access rights?)
e78: Remote file not found
e79: Error in the SSH layer
e80: Failed to shut down the SSL connection
e81: Socket not ready for send/recv
e82: Failed to load CRL file (path? access rights?, format?)







|







103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
e68: TFTP: File Not Found
e69: TFTP: Access Violation
e70: Disk full or allocation exceeded
e71: TFTP: Illegal operation
e72: TFTP: Unknown transfer ID
e73: Remote file already exists
e74: TFTP: No such user
e75: Unknown error
e76: Unknown error
e77: Problem with the SSL CA cert (path? access rights?)
e78: Remote file not found
e79: Error in the SSH layer
e80: Failed to shut down the SSL connection
e81: Socket not ready for send/recv
e82: Failed to load CRL file (path? access rights?, format?)
Added jni/curl/tests/data/test1597.
































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<testcase>
<info>
<keywords>
CURLOPT_PROTOCOLS_STR
</keywords>
</info>

# Server-side
<reply>
</reply>
# Client-side
<client>
<server>
none
</server>
<name>
CURLOPT_PROTOCOLS_STR
</name>
<tool>
lib%TESTNUMBER
</tool>
<command>
-
</command>
</client>

<verify>
<stdout>
Tested 15 strings
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1700.
Changes to jni/curl/tests/data/test1701.
jni/curl/tests/data/test2055 became a regular file.
Changes to jni/curl/tests/data/test3026.
14
15
16
17
18
19
20

21
22
23
24
25
26
27
28
29

#
# Client-side
<client>
# require the threaded resolver only because it means pthreads might
# be used for it
<features>

threaded-resolver
!win32
</features>
<server>
none
</server>
<name>
curl_global_init thread-safety
</name>







>

<







14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29

#
# Client-side
<client>
# require the threaded resolver only because it means pthreads might
# be used for it
<features>
threadsafe
threaded-resolver

</features>
<server>
none
</server>
<name>
curl_global_init thread-safety
</name>
Changes to jni/curl/tests/data/test31.
18
19
20
21
22
23
24

25
26
27
28
29
30
31
<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=test31.curl; path=/silly/
Set-Cookie: overwrite=this  ; domain=test31.curl; path=/overwrite/
Set-Cookie: overwrite=this2  ; domain=test31.curl; path=/overwrite
Set-Cookie: sec1value=secure1  ; domain=test31.curl; path=/secure1/ ; secure
Set-Cookie: sec2value=secure2  ; domain=test31.curl; path=/secure2/ ; secure=







>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<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: blankdomain=sure; domain=; path=/
%if !hyper
Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure
Set-Cookie:ismatch=this  ; domain=test31.curl; path=/silly/
Set-Cookie: overwrite=this  ; domain=test31.curl; path=/overwrite/
Set-Cookie: overwrite=this2  ; domain=test31.curl; path=/overwrite
Set-Cookie: sec1value=secure1  ; domain=test31.curl; path=/secure1/ ; secure
Set-Cookie: sec2value=secure2  ; domain=test31.curl; path=/secure2/ ; secure=
158
159
160
161
162
163
164

165
166
167
#HttpOnly_.test31.curl	TRUE	/p4/	FALSE	0	httponly	myvalue1
#HttpOnly_.test31.curl	TRUE	/p4/	FALSE	0	httpo4	value4
#HttpOnly_.test31.curl	TRUE	/p3/	FALSE	0	httpo3	value3
#HttpOnly_.test31.curl	TRUE	/p2/	FALSE	0	httpo2	value2
#HttpOnly_.test31.curl	TRUE	/p1/	FALSE	0	httpo1	value1
.test31.curl	TRUE	/overwrite	FALSE	0	overwrite	this2
.test31.curl	TRUE	/silly/	FALSE	0	ismatch	this

</file>
</verify>
</testcase>







>



159
160
161
162
163
164
165
166
167
168
169
#HttpOnly_.test31.curl	TRUE	/p4/	FALSE	0	httponly	myvalue1
#HttpOnly_.test31.curl	TRUE	/p4/	FALSE	0	httpo4	value4
#HttpOnly_.test31.curl	TRUE	/p3/	FALSE	0	httpo3	value3
#HttpOnly_.test31.curl	TRUE	/p2/	FALSE	0	httpo2	value2
#HttpOnly_.test31.curl	TRUE	/p1/	FALSE	0	httpo1	value1
.test31.curl	TRUE	/overwrite	FALSE	0	overwrite	this2
.test31.curl	TRUE	/silly/	FALSE	0	ismatch	this
test31.curl	FALSE	/	FALSE	0	blankdomain	sure
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test358.
Changes to jni/curl/tests/data/test359.
Added jni/curl/tests/data/test388.
























































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP Digest auth
</keywords>
</info>

# Server-side
<reply>
# First reply back and ask for Digest auth
<data1>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 26

This is not the real page
</data1>

# second reply back
<data2>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 26

This is not the real page
</data2>

# This is supposed to be returned when the server gets a
# Authorization: Digest line passed-in from the client
<data1001>
HTTP/1.1 200 OK
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
Content-Type: text/html; charset=iso-8859-1
Content-Length: 23

This IS the real page!
</data1001>

#
# This is the second request, and this sends back a response saying that
# the request contained stale data. We want an update. Set swsbounce to
# bounce on to data1003 on the second request.
<data1002>
HTTP/1.1 401 Authorization re-negotiation please swsbounce
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 26

This is not the real page
</data1002>

# The second request to the 1002 section will bounce this one back instead
# thanks to the swsbounce keyword up there
<data1003>
HTTP/1.1 200 OK
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
Content-Type: text/html; charset=iso-8859-1
Content-Length: 30

This IS the second real page!
</data1003>
</reply>

# Client-side
<client>
<server>
http
</server>
<features>
!SSPI
crypto
</features>
 <name>
HTTP with Digest and multiple qop values with leading space
 </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="ea598bbfdb5c54b7352c977e3885e44d"
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="921a8e6db782d6359db1f40d9ed7e6a6"
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
WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 26

HTTP/1.1 200 OK
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
Content-Type: text/html; charset=iso-8859-1
Content-Length: 23

This IS the real page!
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 26

HTTP/1.1 401 Authorization re-negotiation please swsbounce
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 26

HTTP/1.1 200 OK
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
Content-Type: text/html; charset=iso-8859-1
Content-Length: 30

This IS the second real page!
</stdout>
</verify>
</testcase>
Added jni/curl/tests/data/test389.


















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
.localhost
</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>
 <name>
*.localhost is a local host
 </name>
 <command>
http://curlmachine.localhost:%HTTPPORT/%TESTNUMBER
</command>
# Ensure that we're running on localhost
<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: curlmachine.localhost:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test399.
































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<testcase>
<info>
<keywords>
URL
</keywords>
</info>


#
# Client-side
<client>
<server>
http
</server>
<name>
65536 bytes long host name in URL
</name>
<file name="log/input%TESTNUM">
url = http://%repeat[65536 x a]%/399
</file>
<command>
-K log/input%TESTNUM
</command>
</client>

<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>
3
</errorcode>
</verify>
</testcase>
Changes to jni/curl/tests/data/test442.
1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
# perl:
#
# for(1 .. 151) {
#    print join("\t",
#               "attack.invalid", "TRUE", "/", "FALSE", "0",
#               "name$_", "could-be-large-$_")."\n";
# }
#
<testcase>
<info>
<keywords>
HTTP
cookies

</keywords>
</info>

#
# Server-side
<reply>
<data>













>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# perl:
#
# for(1 .. 151) {
#    print join("\t",
#               "attack.invalid", "TRUE", "/", "FALSE", "0",
#               "name$_", "could-be-large-$_")."\n";
# }
#
<testcase>
<info>
<keywords>
HTTP
cookies
--resolve
</keywords>
</info>

#
# Server-side
<reply>
<data>
Changes to jni/curl/tests/data/test443.
1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
# perl:
#
#for(1 .. 20) {
#    print join("\t",
#               "attack.invalid", "TRUE", "/", "FALSE", "0",
#               "huge-$_", ('a' x 500)."-$_")."\n";
#}
#
<testcase>
<info>
<keywords>
HTTP
cookies

</keywords>
</info>

#
# Server-side
<reply>
<data>













>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# perl:
#
#for(1 .. 20) {
#    print join("\t",
#               "attack.invalid", "TRUE", "/", "FALSE", "0",
#               "huge-$_", ('a' x 500)."-$_")."\n";
#}
#
<testcase>
<info>
<keywords>
HTTP
cookies
--resolve
</keywords>
</info>

#
# Server-side
<reply>
<data>
Changes to jni/curl/tests/data/test444.
1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
# perl:
#
#for(1 .. 200) {
#
#}
#
<testcase>
<info>
<keywords>
HTTP
cookies

</keywords>
</info>

#
# Server-side
<reply>
<data>











>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# perl:
#
#for(1 .. 200) {
#
#}
#
<testcase>
<info>
<keywords>
HTTP
cookies
--resolve
</keywords>
</info>

#
# Server-side
<reply>
<data>
Added jni/curl/tests/data/test682.










































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
netrc
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Fri, 05 Aug 2022 10:09:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 6
Connection: close

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
netrc with multiple logins - pick first
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user1@%HOSTIP:%HTTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET / HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic %b64[user1:passwd1]b64%
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test683.










































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
netrc
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Fri, 05 Aug 2022 10:09:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 6
Connection: close

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
netrc with multiple logins - pick second
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user2@%HOSTIP:%HTTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
machine %HOSTIP login user1 password passwd1
machine %HOSTIP login user2 password passwd2
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET / HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic %b64[user2:passwd2]b64%
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test684.








































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
netrc
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Fri, 05 Aug 2022 10:09:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 6
Connection: close

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
netrc with no login
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER http://%HOSTIP:%HTTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
machine %HOSTIP password 5up3r53cr37
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
GET / HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic %b64[:5up3r53cr37]b64%
User-Agent: curl/%VERSION
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test685.








































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
netrc
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Fri, 05 Aug 2022 10:09:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 6
Connection: close

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
netrc with no login - provided user
 </name>
 <command>
--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user@%HOSTIP:%HTTPPORT/
</command>
<file name="log/netrc%TESTNUMBER" >
machine %HOSTIP password 5up3r53cr37
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
</protocol>
GET / HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Authorization: Basic %b64[user:5up3r53cr37]b64%
User-Agent: curl/%VERSION
Accept: */*

</verify>
</testcase>
jni/curl/tests/data/test713 became a regular file.
jni/curl/tests/data/test714 became a regular file.
jni/curl/tests/data/test715 became a regular file.
Changes to jni/curl/tests/data/test8.
42
43
44
45
46
47
48






























49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Set-Cookie: cookie=yes; path=/we;
Set-Cookie: cookie=perhaps; path=/we/want;
Set-Cookie: name with space=is weird but; path=/we/want;
Set-Cookie: trailingspace    = removed; path=/we/want;
Set-Cookie: nocookie=yes; path=/WE;
Set-Cookie: blexp=yesyes; domain=%HOSTIP; domain=%HOSTIP; expiry=totally bad;
Set-Cookie: partialip=nono; domain=.0.0.1;































</file>
<precheck>
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>







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














|




42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
Set-Cookie: cookie=yes; path=/we;
Set-Cookie: cookie=perhaps; path=/we/want;
Set-Cookie: name with space=is weird but; path=/we/want;
Set-Cookie: trailingspace    = removed; path=/we/want;
Set-Cookie: nocookie=yes; path=/WE;
Set-Cookie: blexp=yesyes; domain=%HOSTIP; domain=%HOSTIP; expiry=totally bad;
Set-Cookie: partialip=nono; domain=.0.0.1;
Set-Cookie: cookie1=%hex[%01-junk]hex%
Set-Cookie: cookie2=%hex[%02-junk]hex%
Set-Cookie: cookie3=%hex[%03-junk]hex%
Set-Cookie: cookie4=%hex[%04-junk]hex%
Set-Cookie: cookie5=%hex[%05-junk]hex%
Set-Cookie: cookie6=%hex[%06-junk]hex%
Set-Cookie: cookie7=%hex[%07-junk]hex%
Set-Cookie: cookie8=%hex[%08-junk]hex%
Set-Cookie: cookie9=%hex[junk-%09-]hex%
Set-Cookie: cookie11=%hex[%0b-junk]hex%
Set-Cookie: cookie12=%hex[%0c-junk]hex%
Set-Cookie: cookie14=%hex[%0e-junk]hex%
Set-Cookie: cookie15=%hex[%0f-junk]hex%
Set-Cookie: cookie16=%hex[%10-junk]hex%
Set-Cookie: cookie17=%hex[%11-junk]hex%
Set-Cookie: cookie18=%hex[%12-junk]hex%
Set-Cookie: cookie19=%hex[%13-junk]hex%
Set-Cookie: cookie20=%hex[%14-junk]hex%
Set-Cookie: cookie21=%hex[%15-junk]hex%
Set-Cookie: cookie22=%hex[%16-junk]hex%
Set-Cookie: cookie23=%hex[%17-junk]hex%
Set-Cookie: cookie24=%hex[%18-junk]hex%
Set-Cookie: cookie25=%hex[%19-junk]hex%
Set-Cookie: cookie26=%hex[%1a-junk]hex%
Set-Cookie: cookie27=%hex[%1b-junk]hex%
Set-Cookie: cookie28=%hex[%1c-junk]hex%
Set-Cookie: cookie29=%hex[%1d-junk]hex%
Set-Cookie: cookie30=%hex[%1e-junk]hex%
Set-Cookie: cookie31=%hex[%1f-junk]hex%
Set-Cookie: cookie31=%hex[%7f-junk]hex%

</file>
<precheck>
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; cookie9=junk-	-

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/libtest/Makefile.in.
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
	lib1542$(EXEEXT) lib1543$(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) lib1919$(EXEEXT) \
	lib1933$(EXEEXT) lib1934$(EXEEXT) lib1935$(EXEEXT) \
	lib1936$(EXEEXT) lib1937$(EXEEXT) lib1938$(EXEEXT) \
	lib1939$(EXEEXT) lib1940$(EXEEXT) lib1945$(EXEEXT) \
	lib1946$(EXEEXT) lib3010$(EXEEXT) lib3025$(EXEEXT) \
	lib3026$(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)

# Build a stub gssapi implementation for testing
@BUILD_STUB_GSS_TRUE@am__append_7 = libstubgss.la
@BUILD_STUB_GSS_FALSE@libstubgss_la_DEPENDENCIES =
subdir = tests/libtest
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
|
|
|
|
|
|
|
|
|












|
<







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
	lib1542$(EXEEXT) lib1543$(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) lib1597$(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) \
	lib1919$(EXEEXT) lib1933$(EXEEXT) lib1934$(EXEEXT) \
	lib1935$(EXEEXT) lib1936$(EXEEXT) lib1937$(EXEEXT) \
	lib1938$(EXEEXT) lib1939$(EXEEXT) lib1940$(EXEEXT) \
	lib1945$(EXEEXT) lib1946$(EXEEXT) lib3010$(EXEEXT) \
	lib3025$(EXEEXT) lib3026$(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)

# Build a stub gssapi implementation for testing
@BUILD_STUB_GSS_TRUE@am__append_7 = libstubgss.la
@BUILD_STUB_GSS_FALSE@libstubgss_la_DEPENDENCIES =
subdir = tests/libtest
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
688
689
690
691
692
693
694




695
696
697
698
699
700
701
	lib1596-first.$(OBJEXT)
am__objects_147 = lib1596-testutil.$(OBJEXT)
am__objects_148 = ../../lib/lib1596-warnless.$(OBJEXT)
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_146) \
	$(am__objects_147) $(am__objects_148)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)




am__objects_149 = ../../lib/lib1905-timediff.$(OBJEXT) \
	lib1905-first.$(OBJEXT)
am__objects_150 = lib1905-testutil.$(OBJEXT)
am__objects_151 = ../../lib/lib1905-warnless.$(OBJEXT)
am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_149) \
	$(am__objects_150) $(am__objects_151)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)







>
>
>
>







687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
	lib1596-first.$(OBJEXT)
am__objects_147 = lib1596-testutil.$(OBJEXT)
am__objects_148 = ../../lib/lib1596-warnless.$(OBJEXT)
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_146) \
	$(am__objects_147) $(am__objects_148)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1597_OBJECTS = lib1597.$(OBJEXT) $(am__objects_128) \
	$(am__objects_129) $(am__objects_130)
lib1597_OBJECTS = $(am_lib1597_OBJECTS)
lib1597_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_149 = ../../lib/lib1905-timediff.$(OBJEXT) \
	lib1905-first.$(OBJEXT)
am__objects_150 = lib1905-testutil.$(OBJEXT)
am__objects_151 = ../../lib/lib1905-warnless.$(OBJEXT)
am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_149) \
	$(am__objects_150) $(am__objects_151)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
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
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
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
	./$(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 \
	./$(DEPDIR)/lib1906-lib1906.Po ./$(DEPDIR)/lib1906-testutil.Po \
	./$(DEPDIR)/lib1907-first.Po ./$(DEPDIR)/lib1907-lib1907.Po \
	./$(DEPDIR)/lib1907-testutil.Po ./$(DEPDIR)/lib1908-first.Po \
	./$(DEPDIR)/lib1908-lib1908.Po ./$(DEPDIR)/lib1908-testutil.Po \
	./$(DEPDIR)/lib1910-first.Po ./$(DEPDIR)/lib1910-lib1910.Po \
	./$(DEPDIR)/lib1910-testutil.Po ./$(DEPDIR)/lib1911-first.Po \
	./$(DEPDIR)/lib1911-lib1911.Po ./$(DEPDIR)/lib1911-testutil.Po \
	./$(DEPDIR)/lib1912-first.Po ./$(DEPDIR)/lib1912-lib1912.Po \
	./$(DEPDIR)/lib1912-testutil.Po ./$(DEPDIR)/lib1913-first.Po \
	./$(DEPDIR)/lib1913-lib1913.Po ./$(DEPDIR)/lib1913-testutil.Po \
	./$(DEPDIR)/lib1915-first.Po ./$(DEPDIR)/lib1915-lib1915.Po \
	./$(DEPDIR)/lib1915-testutil.Po ./$(DEPDIR)/lib1916-first.Po \
	./$(DEPDIR)/lib1916-lib1916.Po ./$(DEPDIR)/lib1917-first.Po \
	./$(DEPDIR)/lib1917-lib1916.Po ./$(DEPDIR)/lib1918-first.Po \
	./$(DEPDIR)/lib1918-lib1918.Po ./$(DEPDIR)/lib1919-first.Po \
	./$(DEPDIR)/lib1919-lib1919.Po ./$(DEPDIR)/lib1933-first.Po \
	./$(DEPDIR)/lib1933-lib1933.Po ./$(DEPDIR)/lib1933-testutil.Po \

	./$(DEPDIR)/lib1934-first.Po ./$(DEPDIR)/lib1934-lib1934.Po \
	./$(DEPDIR)/lib1934-testutil.Po ./$(DEPDIR)/lib1935-first.Po \
	./$(DEPDIR)/lib1935-lib1935.Po ./$(DEPDIR)/lib1935-testutil.Po \
	./$(DEPDIR)/lib1936-first.Po ./$(DEPDIR)/lib1936-lib1936.Po \
	./$(DEPDIR)/lib1936-testutil.Po ./$(DEPDIR)/lib1937-first.Po \
	./$(DEPDIR)/lib1937-lib1937.Po ./$(DEPDIR)/lib1938-first.Po \
	./$(DEPDIR)/lib1938-lib1938.Po ./$(DEPDIR)/lib1939-first.Po \
	./$(DEPDIR)/lib1939-lib1939.Po ./$(DEPDIR)/lib1940-first.Po \
	./$(DEPDIR)/lib1940-lib1940.Po ./$(DEPDIR)/lib1945-first.Po \
	./$(DEPDIR)/lib1945-lib1945.Po ./$(DEPDIR)/lib1946-first.Po \
	./$(DEPDIR)/lib1946-lib1940.Po ./$(DEPDIR)/lib3010-first.Po \
	./$(DEPDIR)/lib3010-lib3010.Po ./$(DEPDIR)/lib3010-testutil.Po \
	./$(DEPDIR)/lib3025-first.Po ./$(DEPDIR)/lib3025-lib3025.Po \
	./$(DEPDIR)/lib3025-testutil.Po ./$(DEPDIR)/lib3026-first.Po \
	./$(DEPDIR)/lib3026-lib3026.Po ./$(DEPDIR)/lib3026-testutil.Po \
	./$(DEPDIR)/lib500-first.Po ./$(DEPDIR)/lib500-lib500.Po \
	./$(DEPDIR)/lib500-testtrace.Po ./$(DEPDIR)/lib500-testutil.Po \
	./$(DEPDIR)/lib501-first.Po ./$(DEPDIR)/lib501-lib501.Po \
	./$(DEPDIR)/lib502-first.Po ./$(DEPDIR)/lib502-lib502.Po \

	./$(DEPDIR)/lib502-testutil.Po ./$(DEPDIR)/lib503-first.Po \
	./$(DEPDIR)/lib503-lib503.Po ./$(DEPDIR)/lib503-testutil.Po \
	./$(DEPDIR)/lib504-first.Po ./$(DEPDIR)/lib504-lib504.Po \
	./$(DEPDIR)/lib504-testutil.Po ./$(DEPDIR)/lib505-first.Po \
	./$(DEPDIR)/lib505-lib505.Po ./$(DEPDIR)/lib506-first.Po \
	./$(DEPDIR)/lib506-lib506.Po ./$(DEPDIR)/lib507-first.Po \
	./$(DEPDIR)/lib507-lib507.Po ./$(DEPDIR)/lib507-testutil.Po \
	./$(DEPDIR)/lib508-first.Po ./$(DEPDIR)/lib508-lib508.Po \
	./$(DEPDIR)/lib509-first.Po ./$(DEPDIR)/lib509-lib509.Po \
	./$(DEPDIR)/lib510-first.Po ./$(DEPDIR)/lib510-lib510.Po \
	./$(DEPDIR)/lib511-first.Po ./$(DEPDIR)/lib511-lib511.Po \
	./$(DEPDIR)/lib512-first.Po ./$(DEPDIR)/lib512-lib512.Po \
	./$(DEPDIR)/lib513-first.Po ./$(DEPDIR)/lib513-lib513.Po \
	./$(DEPDIR)/lib514-first.Po ./$(DEPDIR)/lib514-lib514.Po \
	./$(DEPDIR)/lib515-first.Po ./$(DEPDIR)/lib515-lib515.Po \
	./$(DEPDIR)/lib516-first.Po ./$(DEPDIR)/lib516-lib516.Po \
	./$(DEPDIR)/lib517-first.Po ./$(DEPDIR)/lib517-lib517.Po \
	./$(DEPDIR)/lib518-first.Po ./$(DEPDIR)/lib518-lib518.Po \
	./$(DEPDIR)/lib519-first.Po ./$(DEPDIR)/lib519-lib519.Po \

	./$(DEPDIR)/lib520-first.Po ./$(DEPDIR)/lib520-lib520.Po \
	./$(DEPDIR)/lib521-first.Po ./$(DEPDIR)/lib521-lib521.Po \
	./$(DEPDIR)/lib523-first.Po ./$(DEPDIR)/lib523-lib523.Po \
	./$(DEPDIR)/lib524-first.Po ./$(DEPDIR)/lib524-lib524.Po \
	./$(DEPDIR)/lib525-first.Po ./$(DEPDIR)/lib525-lib525.Po \
	./$(DEPDIR)/lib525-testutil.Po ./$(DEPDIR)/lib526-first.Po \
	./$(DEPDIR)/lib526-lib526.Po ./$(DEPDIR)/lib526-testutil.Po \
	./$(DEPDIR)/lib527-first.Po ./$(DEPDIR)/lib527-lib526.Po \
	./$(DEPDIR)/lib527-testutil.Po ./$(DEPDIR)/lib529-first.Po \
	./$(DEPDIR)/lib529-lib525.Po ./$(DEPDIR)/lib529-testutil.Po \
	./$(DEPDIR)/lib530-first.Po ./$(DEPDIR)/lib530-lib530.Po \
	./$(DEPDIR)/lib530-testutil.Po ./$(DEPDIR)/lib532-first.Po \
	./$(DEPDIR)/lib532-lib526.Po ./$(DEPDIR)/lib532-testutil.Po \
	./$(DEPDIR)/lib533-first.Po ./$(DEPDIR)/lib533-lib533.Po \
	./$(DEPDIR)/lib533-testutil.Po ./$(DEPDIR)/lib537-first.Po \
	./$(DEPDIR)/lib537-lib537.Po ./$(DEPDIR)/lib539-first.Po \
	./$(DEPDIR)/lib539-lib539.Po ./$(DEPDIR)/lib540-first.Po \
	./$(DEPDIR)/lib540-lib540.Po ./$(DEPDIR)/lib540-testutil.Po \
	./$(DEPDIR)/lib541-first.Po ./$(DEPDIR)/lib541-lib541.Po \
	./$(DEPDIR)/lib542-first.Po ./$(DEPDIR)/lib542-lib542.Po \

	./$(DEPDIR)/lib543-first.Po ./$(DEPDIR)/lib543-lib543.Po \
	./$(DEPDIR)/lib544-first.Po ./$(DEPDIR)/lib544-lib544.Po \
	./$(DEPDIR)/lib545-first.Po ./$(DEPDIR)/lib545-lib544.Po \
	./$(DEPDIR)/lib547-first.Po ./$(DEPDIR)/lib547-lib547.Po \
	./$(DEPDIR)/lib548-first.Po ./$(DEPDIR)/lib548-lib547.Po \
	./$(DEPDIR)/lib549-first.Po ./$(DEPDIR)/lib549-lib549.Po \
	./$(DEPDIR)/lib552-first.Po ./$(DEPDIR)/lib552-lib552.Po \
	./$(DEPDIR)/lib553-first.Po ./$(DEPDIR)/lib553-lib553.Po \
	./$(DEPDIR)/lib554-first.Po ./$(DEPDIR)/lib554-lib554.Po \
	./$(DEPDIR)/lib555-first.Po ./$(DEPDIR)/lib555-lib555.Po \
	./$(DEPDIR)/lib555-testutil.Po ./$(DEPDIR)/lib556-first.Po \
	./$(DEPDIR)/lib556-lib556.Po ./$(DEPDIR)/lib557-first.Po \
	./$(DEPDIR)/lib557-lib557.Po ./$(DEPDIR)/lib558-first.Po \
	./$(DEPDIR)/lib558-lib558.Po ./$(DEPDIR)/lib559-first.Po \
	./$(DEPDIR)/lib559-lib559.Po ./$(DEPDIR)/lib560-first.Po \
	./$(DEPDIR)/lib560-lib560.Po ./$(DEPDIR)/lib560-testutil.Po \
	./$(DEPDIR)/lib562-first.Po ./$(DEPDIR)/lib562-lib562.Po \
	./$(DEPDIR)/lib564-first.Po ./$(DEPDIR)/lib564-lib564.Po \
	./$(DEPDIR)/lib564-testutil.Po ./$(DEPDIR)/lib565-first.Po \

	./$(DEPDIR)/lib565-lib510.Po ./$(DEPDIR)/lib566-first.Po \
	./$(DEPDIR)/lib566-lib566.Po ./$(DEPDIR)/lib567-first.Po \
	./$(DEPDIR)/lib567-lib567.Po ./$(DEPDIR)/lib568-first.Po \
	./$(DEPDIR)/lib568-lib568.Po ./$(DEPDIR)/lib569-first.Po \
	./$(DEPDIR)/lib569-lib569.Po ./$(DEPDIR)/lib570-first.Po \
	./$(DEPDIR)/lib570-lib570.Po ./$(DEPDIR)/lib571-first.Po \
	./$(DEPDIR)/lib571-lib571.Po ./$(DEPDIR)/lib572-first.Po \
	./$(DEPDIR)/lib572-lib572.Po ./$(DEPDIR)/lib573-first.Po \
	./$(DEPDIR)/lib573-lib573.Po ./$(DEPDIR)/lib573-testtrace.Po \
	./$(DEPDIR)/lib573-testutil.Po ./$(DEPDIR)/lib574-first.Po \
	./$(DEPDIR)/lib574-lib574.Po ./$(DEPDIR)/lib575-first.Po \
	./$(DEPDIR)/lib575-lib575.Po ./$(DEPDIR)/lib575-testutil.Po \
	./$(DEPDIR)/lib576-first.Po ./$(DEPDIR)/lib576-lib576.Po \
	./$(DEPDIR)/lib578-first.Po ./$(DEPDIR)/lib578-lib578.Po \
	./$(DEPDIR)/lib579-first.Po ./$(DEPDIR)/lib579-lib579.Po \
	./$(DEPDIR)/lib582-first.Po ./$(DEPDIR)/lib582-lib582.Po \
	./$(DEPDIR)/lib582-testutil.Po ./$(DEPDIR)/lib583-first.Po \
	./$(DEPDIR)/lib583-lib583.Po ./$(DEPDIR)/lib584-first.Po \
	./$(DEPDIR)/lib584-lib589.Po ./$(DEPDIR)/lib585-first.Po \

	./$(DEPDIR)/lib585-lib500.Po ./$(DEPDIR)/lib585-testtrace.Po \
	./$(DEPDIR)/lib585-testutil.Po ./$(DEPDIR)/lib586-first.Po \
	./$(DEPDIR)/lib586-lib586.Po ./$(DEPDIR)/lib587-first.Po \
	./$(DEPDIR)/lib587-lib554.Po ./$(DEPDIR)/lib589-first.Po \
	./$(DEPDIR)/lib589-lib589.Po ./$(DEPDIR)/lib590-first.Po \
	./$(DEPDIR)/lib590-lib590.Po ./$(DEPDIR)/lib591-first.Po \
	./$(DEPDIR)/lib591-lib591.Po ./$(DEPDIR)/lib591-testutil.Po \
	./$(DEPDIR)/lib597-first.Po ./$(DEPDIR)/lib597-lib597.Po \
	./$(DEPDIR)/lib597-testutil.Po ./$(DEPDIR)/lib598-first.Po \
	./$(DEPDIR)/lib598-lib598.Po ./$(DEPDIR)/lib599-first.Po \
	./$(DEPDIR)/lib599-lib599.Po ./$(DEPDIR)/lib643-first.Po \
	./$(DEPDIR)/lib643-lib643.Po ./$(DEPDIR)/lib645-first.Po \
	./$(DEPDIR)/lib645-lib643.Po ./$(DEPDIR)/lib650-first.Po \
	./$(DEPDIR)/lib650-lib650.Po ./$(DEPDIR)/lib651-first.Po \
	./$(DEPDIR)/lib651-lib651.Po ./$(DEPDIR)/lib652-first.Po \
	./$(DEPDIR)/lib652-lib652.Po ./$(DEPDIR)/lib653-first.Po \
	./$(DEPDIR)/lib653-lib653.Po ./$(DEPDIR)/lib654-first.Po \
	./$(DEPDIR)/lib654-lib654.Po ./$(DEPDIR)/lib655-first.Po \
	./$(DEPDIR)/lib655-lib655.Po ./$(DEPDIR)/lib658-first.Po \

	./$(DEPDIR)/lib658-lib658.Po ./$(DEPDIR)/lib658-testutil.Po \
	./$(DEPDIR)/lib659-first.Po ./$(DEPDIR)/lib659-lib659.Po \
	./$(DEPDIR)/lib659-testutil.Po ./$(DEPDIR)/lib661-first.Po \
	./$(DEPDIR)/lib661-lib661.Po ./$(DEPDIR)/lib666-first.Po \
	./$(DEPDIR)/lib666-lib666.Po ./$(DEPDIR)/lib667-first.Po \
	./$(DEPDIR)/lib667-lib667.Po ./$(DEPDIR)/lib667-testutil.Po \
	./$(DEPDIR)/lib668-first.Po ./$(DEPDIR)/lib668-lib668.Po \
	./$(DEPDIR)/lib668-testutil.Po ./$(DEPDIR)/lib670-first.Po \
	./$(DEPDIR)/lib670-lib670.Po ./$(DEPDIR)/lib670-testutil.Po \
	./$(DEPDIR)/lib671-first.Po ./$(DEPDIR)/lib671-lib670.Po \
	./$(DEPDIR)/lib671-testutil.Po ./$(DEPDIR)/lib672-first.Po \
	./$(DEPDIR)/lib672-lib670.Po ./$(DEPDIR)/lib672-testutil.Po \
	./$(DEPDIR)/lib673-first.Po ./$(DEPDIR)/lib673-lib670.Po \
	./$(DEPDIR)/lib673-testutil.Po ./$(DEPDIR)/lib674-first.Po \
	./$(DEPDIR)/lib674-lib674.Po ./$(DEPDIR)/lib674-testutil.Po \
	./$(DEPDIR)/lib676-first.Po ./$(DEPDIR)/lib676-lib676.Po \
	./$(DEPDIR)/lib676-testutil.Po ./$(DEPDIR)/lib677-first.Po \
	./$(DEPDIR)/lib677-lib677.Po ./$(DEPDIR)/lib677-testutil.Po \
	./$(DEPDIR)/lib678-first.Po ./$(DEPDIR)/lib678-lib678.Po \
	./$(DEPDIR)/lib678-testutil.Po \
	./$(DEPDIR)/libauthretry-first.Po \
	./$(DEPDIR)/libauthretry-libauthretry.Po \
	./$(DEPDIR)/libhostname_la-sethostname.Plo \
	./$(DEPDIR)/libntlmconnect-first.Po \
	./$(DEPDIR)/libntlmconnect-libntlmconnect.Po \
	./$(DEPDIR)/libntlmconnect-testutil.Po \
	./$(DEPDIR)/libprereq-first.Po \







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







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
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
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194

2195
2196
2197
2198
2199
2200
2201
2202
	./$(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)/lib1597.Po ./$(DEPDIR)/lib1905-first.Po \
	./$(DEPDIR)/lib1905-lib1905.Po ./$(DEPDIR)/lib1905-testutil.Po \
	./$(DEPDIR)/lib1906-first.Po ./$(DEPDIR)/lib1906-lib1906.Po \
	./$(DEPDIR)/lib1906-testutil.Po ./$(DEPDIR)/lib1907-first.Po \
	./$(DEPDIR)/lib1907-lib1907.Po ./$(DEPDIR)/lib1907-testutil.Po \
	./$(DEPDIR)/lib1908-first.Po ./$(DEPDIR)/lib1908-lib1908.Po \
	./$(DEPDIR)/lib1908-testutil.Po ./$(DEPDIR)/lib1910-first.Po \
	./$(DEPDIR)/lib1910-lib1910.Po ./$(DEPDIR)/lib1910-testutil.Po \
	./$(DEPDIR)/lib1911-first.Po ./$(DEPDIR)/lib1911-lib1911.Po \
	./$(DEPDIR)/lib1911-testutil.Po ./$(DEPDIR)/lib1912-first.Po \
	./$(DEPDIR)/lib1912-lib1912.Po ./$(DEPDIR)/lib1912-testutil.Po \
	./$(DEPDIR)/lib1913-first.Po ./$(DEPDIR)/lib1913-lib1913.Po \
	./$(DEPDIR)/lib1913-testutil.Po ./$(DEPDIR)/lib1915-first.Po \
	./$(DEPDIR)/lib1915-lib1915.Po ./$(DEPDIR)/lib1915-testutil.Po \
	./$(DEPDIR)/lib1916-first.Po ./$(DEPDIR)/lib1916-lib1916.Po \
	./$(DEPDIR)/lib1917-first.Po ./$(DEPDIR)/lib1917-lib1916.Po \
	./$(DEPDIR)/lib1918-first.Po ./$(DEPDIR)/lib1918-lib1918.Po \
	./$(DEPDIR)/lib1919-first.Po ./$(DEPDIR)/lib1919-lib1919.Po \
	./$(DEPDIR)/lib1933-first.Po ./$(DEPDIR)/lib1933-lib1933.Po \

	./$(DEPDIR)/lib1933-testutil.Po ./$(DEPDIR)/lib1934-first.Po \
	./$(DEPDIR)/lib1934-lib1934.Po ./$(DEPDIR)/lib1934-testutil.Po \
	./$(DEPDIR)/lib1935-first.Po ./$(DEPDIR)/lib1935-lib1935.Po \
	./$(DEPDIR)/lib1935-testutil.Po ./$(DEPDIR)/lib1936-first.Po \
	./$(DEPDIR)/lib1936-lib1936.Po ./$(DEPDIR)/lib1936-testutil.Po \
	./$(DEPDIR)/lib1937-first.Po ./$(DEPDIR)/lib1937-lib1937.Po \
	./$(DEPDIR)/lib1938-first.Po ./$(DEPDIR)/lib1938-lib1938.Po \
	./$(DEPDIR)/lib1939-first.Po ./$(DEPDIR)/lib1939-lib1939.Po \
	./$(DEPDIR)/lib1940-first.Po ./$(DEPDIR)/lib1940-lib1940.Po \
	./$(DEPDIR)/lib1945-first.Po ./$(DEPDIR)/lib1945-lib1945.Po \
	./$(DEPDIR)/lib1946-first.Po ./$(DEPDIR)/lib1946-lib1940.Po \
	./$(DEPDIR)/lib3010-first.Po ./$(DEPDIR)/lib3010-lib3010.Po \
	./$(DEPDIR)/lib3010-testutil.Po ./$(DEPDIR)/lib3025-first.Po \
	./$(DEPDIR)/lib3025-lib3025.Po ./$(DEPDIR)/lib3025-testutil.Po \
	./$(DEPDIR)/lib3026-first.Po ./$(DEPDIR)/lib3026-lib3026.Po \
	./$(DEPDIR)/lib3026-testutil.Po ./$(DEPDIR)/lib500-first.Po \
	./$(DEPDIR)/lib500-lib500.Po ./$(DEPDIR)/lib500-testtrace.Po \
	./$(DEPDIR)/lib500-testutil.Po ./$(DEPDIR)/lib501-first.Po \
	./$(DEPDIR)/lib501-lib501.Po ./$(DEPDIR)/lib502-first.Po \

	./$(DEPDIR)/lib502-lib502.Po ./$(DEPDIR)/lib502-testutil.Po \
	./$(DEPDIR)/lib503-first.Po ./$(DEPDIR)/lib503-lib503.Po \
	./$(DEPDIR)/lib503-testutil.Po ./$(DEPDIR)/lib504-first.Po \
	./$(DEPDIR)/lib504-lib504.Po ./$(DEPDIR)/lib504-testutil.Po \
	./$(DEPDIR)/lib505-first.Po ./$(DEPDIR)/lib505-lib505.Po \
	./$(DEPDIR)/lib506-first.Po ./$(DEPDIR)/lib506-lib506.Po \
	./$(DEPDIR)/lib507-first.Po ./$(DEPDIR)/lib507-lib507.Po \
	./$(DEPDIR)/lib507-testutil.Po ./$(DEPDIR)/lib508-first.Po \
	./$(DEPDIR)/lib508-lib508.Po ./$(DEPDIR)/lib509-first.Po \
	./$(DEPDIR)/lib509-lib509.Po ./$(DEPDIR)/lib510-first.Po \
	./$(DEPDIR)/lib510-lib510.Po ./$(DEPDIR)/lib511-first.Po \
	./$(DEPDIR)/lib511-lib511.Po ./$(DEPDIR)/lib512-first.Po \
	./$(DEPDIR)/lib512-lib512.Po ./$(DEPDIR)/lib513-first.Po \
	./$(DEPDIR)/lib513-lib513.Po ./$(DEPDIR)/lib514-first.Po \
	./$(DEPDIR)/lib514-lib514.Po ./$(DEPDIR)/lib515-first.Po \
	./$(DEPDIR)/lib515-lib515.Po ./$(DEPDIR)/lib516-first.Po \
	./$(DEPDIR)/lib516-lib516.Po ./$(DEPDIR)/lib517-first.Po \
	./$(DEPDIR)/lib517-lib517.Po ./$(DEPDIR)/lib518-first.Po \
	./$(DEPDIR)/lib518-lib518.Po ./$(DEPDIR)/lib519-first.Po \

	./$(DEPDIR)/lib519-lib519.Po ./$(DEPDIR)/lib520-first.Po \
	./$(DEPDIR)/lib520-lib520.Po ./$(DEPDIR)/lib521-first.Po \
	./$(DEPDIR)/lib521-lib521.Po ./$(DEPDIR)/lib523-first.Po \
	./$(DEPDIR)/lib523-lib523.Po ./$(DEPDIR)/lib524-first.Po \
	./$(DEPDIR)/lib524-lib524.Po ./$(DEPDIR)/lib525-first.Po \
	./$(DEPDIR)/lib525-lib525.Po ./$(DEPDIR)/lib525-testutil.Po \
	./$(DEPDIR)/lib526-first.Po ./$(DEPDIR)/lib526-lib526.Po \
	./$(DEPDIR)/lib526-testutil.Po ./$(DEPDIR)/lib527-first.Po \
	./$(DEPDIR)/lib527-lib526.Po ./$(DEPDIR)/lib527-testutil.Po \
	./$(DEPDIR)/lib529-first.Po ./$(DEPDIR)/lib529-lib525.Po \
	./$(DEPDIR)/lib529-testutil.Po ./$(DEPDIR)/lib530-first.Po \
	./$(DEPDIR)/lib530-lib530.Po ./$(DEPDIR)/lib530-testutil.Po \
	./$(DEPDIR)/lib532-first.Po ./$(DEPDIR)/lib532-lib526.Po \
	./$(DEPDIR)/lib532-testutil.Po ./$(DEPDIR)/lib533-first.Po \
	./$(DEPDIR)/lib533-lib533.Po ./$(DEPDIR)/lib533-testutil.Po \
	./$(DEPDIR)/lib537-first.Po ./$(DEPDIR)/lib537-lib537.Po \
	./$(DEPDIR)/lib539-first.Po ./$(DEPDIR)/lib539-lib539.Po \
	./$(DEPDIR)/lib540-first.Po ./$(DEPDIR)/lib540-lib540.Po \
	./$(DEPDIR)/lib540-testutil.Po ./$(DEPDIR)/lib541-first.Po \
	./$(DEPDIR)/lib541-lib541.Po ./$(DEPDIR)/lib542-first.Po \

	./$(DEPDIR)/lib542-lib542.Po ./$(DEPDIR)/lib543-first.Po \
	./$(DEPDIR)/lib543-lib543.Po ./$(DEPDIR)/lib544-first.Po \
	./$(DEPDIR)/lib544-lib544.Po ./$(DEPDIR)/lib545-first.Po \
	./$(DEPDIR)/lib545-lib544.Po ./$(DEPDIR)/lib547-first.Po \
	./$(DEPDIR)/lib547-lib547.Po ./$(DEPDIR)/lib548-first.Po \
	./$(DEPDIR)/lib548-lib547.Po ./$(DEPDIR)/lib549-first.Po \
	./$(DEPDIR)/lib549-lib549.Po ./$(DEPDIR)/lib552-first.Po \
	./$(DEPDIR)/lib552-lib552.Po ./$(DEPDIR)/lib553-first.Po \
	./$(DEPDIR)/lib553-lib553.Po ./$(DEPDIR)/lib554-first.Po \
	./$(DEPDIR)/lib554-lib554.Po ./$(DEPDIR)/lib555-first.Po \
	./$(DEPDIR)/lib555-lib555.Po ./$(DEPDIR)/lib555-testutil.Po \
	./$(DEPDIR)/lib556-first.Po ./$(DEPDIR)/lib556-lib556.Po \
	./$(DEPDIR)/lib557-first.Po ./$(DEPDIR)/lib557-lib557.Po \
	./$(DEPDIR)/lib558-first.Po ./$(DEPDIR)/lib558-lib558.Po \
	./$(DEPDIR)/lib559-first.Po ./$(DEPDIR)/lib559-lib559.Po \
	./$(DEPDIR)/lib560-first.Po ./$(DEPDIR)/lib560-lib560.Po \
	./$(DEPDIR)/lib560-testutil.Po ./$(DEPDIR)/lib562-first.Po \
	./$(DEPDIR)/lib562-lib562.Po ./$(DEPDIR)/lib564-first.Po \
	./$(DEPDIR)/lib564-lib564.Po ./$(DEPDIR)/lib564-testutil.Po \

	./$(DEPDIR)/lib565-first.Po ./$(DEPDIR)/lib565-lib510.Po \
	./$(DEPDIR)/lib566-first.Po ./$(DEPDIR)/lib566-lib566.Po \
	./$(DEPDIR)/lib567-first.Po ./$(DEPDIR)/lib567-lib567.Po \
	./$(DEPDIR)/lib568-first.Po ./$(DEPDIR)/lib568-lib568.Po \
	./$(DEPDIR)/lib569-first.Po ./$(DEPDIR)/lib569-lib569.Po \
	./$(DEPDIR)/lib570-first.Po ./$(DEPDIR)/lib570-lib570.Po \
	./$(DEPDIR)/lib571-first.Po ./$(DEPDIR)/lib571-lib571.Po \
	./$(DEPDIR)/lib572-first.Po ./$(DEPDIR)/lib572-lib572.Po \
	./$(DEPDIR)/lib573-first.Po ./$(DEPDIR)/lib573-lib573.Po \
	./$(DEPDIR)/lib573-testtrace.Po ./$(DEPDIR)/lib573-testutil.Po \
	./$(DEPDIR)/lib574-first.Po ./$(DEPDIR)/lib574-lib574.Po \
	./$(DEPDIR)/lib575-first.Po ./$(DEPDIR)/lib575-lib575.Po \
	./$(DEPDIR)/lib575-testutil.Po ./$(DEPDIR)/lib576-first.Po \
	./$(DEPDIR)/lib576-lib576.Po ./$(DEPDIR)/lib578-first.Po \
	./$(DEPDIR)/lib578-lib578.Po ./$(DEPDIR)/lib579-first.Po \
	./$(DEPDIR)/lib579-lib579.Po ./$(DEPDIR)/lib582-first.Po \
	./$(DEPDIR)/lib582-lib582.Po ./$(DEPDIR)/lib582-testutil.Po \
	./$(DEPDIR)/lib583-first.Po ./$(DEPDIR)/lib583-lib583.Po \
	./$(DEPDIR)/lib584-first.Po ./$(DEPDIR)/lib584-lib589.Po \

	./$(DEPDIR)/lib585-first.Po ./$(DEPDIR)/lib585-lib500.Po \
	./$(DEPDIR)/lib585-testtrace.Po ./$(DEPDIR)/lib585-testutil.Po \
	./$(DEPDIR)/lib586-first.Po ./$(DEPDIR)/lib586-lib586.Po \
	./$(DEPDIR)/lib587-first.Po ./$(DEPDIR)/lib587-lib554.Po \
	./$(DEPDIR)/lib589-first.Po ./$(DEPDIR)/lib589-lib589.Po \
	./$(DEPDIR)/lib590-first.Po ./$(DEPDIR)/lib590-lib590.Po \
	./$(DEPDIR)/lib591-first.Po ./$(DEPDIR)/lib591-lib591.Po \
	./$(DEPDIR)/lib591-testutil.Po ./$(DEPDIR)/lib597-first.Po \
	./$(DEPDIR)/lib597-lib597.Po ./$(DEPDIR)/lib597-testutil.Po \
	./$(DEPDIR)/lib598-first.Po ./$(DEPDIR)/lib598-lib598.Po \
	./$(DEPDIR)/lib599-first.Po ./$(DEPDIR)/lib599-lib599.Po \
	./$(DEPDIR)/lib643-first.Po ./$(DEPDIR)/lib643-lib643.Po \
	./$(DEPDIR)/lib645-first.Po ./$(DEPDIR)/lib645-lib643.Po \
	./$(DEPDIR)/lib650-first.Po ./$(DEPDIR)/lib650-lib650.Po \
	./$(DEPDIR)/lib651-first.Po ./$(DEPDIR)/lib651-lib651.Po \
	./$(DEPDIR)/lib652-first.Po ./$(DEPDIR)/lib652-lib652.Po \
	./$(DEPDIR)/lib653-first.Po ./$(DEPDIR)/lib653-lib653.Po \
	./$(DEPDIR)/lib654-first.Po ./$(DEPDIR)/lib654-lib654.Po \
	./$(DEPDIR)/lib655-first.Po ./$(DEPDIR)/lib655-lib655.Po \

	./$(DEPDIR)/lib658-first.Po ./$(DEPDIR)/lib658-lib658.Po \
	./$(DEPDIR)/lib658-testutil.Po ./$(DEPDIR)/lib659-first.Po \
	./$(DEPDIR)/lib659-lib659.Po ./$(DEPDIR)/lib659-testutil.Po \
	./$(DEPDIR)/lib661-first.Po ./$(DEPDIR)/lib661-lib661.Po \
	./$(DEPDIR)/lib666-first.Po ./$(DEPDIR)/lib666-lib666.Po \
	./$(DEPDIR)/lib667-first.Po ./$(DEPDIR)/lib667-lib667.Po \
	./$(DEPDIR)/lib667-testutil.Po ./$(DEPDIR)/lib668-first.Po \
	./$(DEPDIR)/lib668-lib668.Po ./$(DEPDIR)/lib668-testutil.Po \
	./$(DEPDIR)/lib670-first.Po ./$(DEPDIR)/lib670-lib670.Po \
	./$(DEPDIR)/lib670-testutil.Po ./$(DEPDIR)/lib671-first.Po \
	./$(DEPDIR)/lib671-lib670.Po ./$(DEPDIR)/lib671-testutil.Po \
	./$(DEPDIR)/lib672-first.Po ./$(DEPDIR)/lib672-lib670.Po \
	./$(DEPDIR)/lib672-testutil.Po ./$(DEPDIR)/lib673-first.Po \
	./$(DEPDIR)/lib673-lib670.Po ./$(DEPDIR)/lib673-testutil.Po \
	./$(DEPDIR)/lib674-first.Po ./$(DEPDIR)/lib674-lib674.Po \
	./$(DEPDIR)/lib674-testutil.Po ./$(DEPDIR)/lib676-first.Po \
	./$(DEPDIR)/lib676-lib676.Po ./$(DEPDIR)/lib676-testutil.Po \
	./$(DEPDIR)/lib677-first.Po ./$(DEPDIR)/lib677-lib677.Po \
	./$(DEPDIR)/lib677-testutil.Po ./$(DEPDIR)/lib678-first.Po \

	./$(DEPDIR)/lib678-lib678.Po ./$(DEPDIR)/lib678-testutil.Po \
	./$(DEPDIR)/libauthretry-first.Po \
	./$(DEPDIR)/libauthretry-libauthretry.Po \
	./$(DEPDIR)/libhostname_la-sethostname.Plo \
	./$(DEPDIR)/libntlmconnect-first.Po \
	./$(DEPDIR)/libntlmconnect-libntlmconnect.Po \
	./$(DEPDIR)/libntlmconnect-testutil.Po \
	./$(DEPDIR)/libprereq-first.Po \
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
	$(lib1543_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) $(lib1919_SOURCES) $(lib1933_SOURCES) \
	$(lib1934_SOURCES) $(lib1935_SOURCES) $(lib1936_SOURCES) \
	$(lib1937_SOURCES) $(lib1938_SOURCES) $(lib1939_SOURCES) \
	$(lib1940_SOURCES) $(lib1945_SOURCES) $(lib1946_SOURCES) \
	$(lib3010_SOURCES) $(lib3025_SOURCES) $(lib3026_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) $(lib530_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) $(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) $(lib676_SOURCES) \
	$(lib677_SOURCES) $(lib678_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES) $(libprereq_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) \
	$(lib1542_SOURCES) $(lib1543_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) $(lib1919_SOURCES) \
	$(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \
	$(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \
	$(lib1939_SOURCES) $(lib1940_SOURCES) $(lib1945_SOURCES) \







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







2242
2243
2244
2245
2246
2247
2248
2249


































































2250
2251
2252
2253
2254
2255
2256
	$(lib1543_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) $(lib1597_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) $(lib1919_SOURCES) \
	$(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \
	$(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \
	$(lib1939_SOURCES) $(lib1940_SOURCES) $(lib1945_SOURCES) \
2350
2351
2352
2353
2354
2355
2356



































































2357
2358
2359
2360
2361
2362
2363
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
	$(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \
	$(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \
	$(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \
	$(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \
	$(libprereq_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,







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







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
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
	$(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \
	$(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \
	$(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \
	$(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \
	$(libprereq_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) \
	$(lib1542_SOURCES) $(lib1543_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) $(lib1597_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) \
	$(lib1919_SOURCES) $(lib1933_SOURCES) $(lib1934_SOURCES) \
	$(lib1935_SOURCES) $(lib1936_SOURCES) $(lib1937_SOURCES) \
	$(lib1938_SOURCES) $(lib1939_SOURCES) $(lib1940_SOURCES) \
	$(lib1945_SOURCES) $(lib1946_SOURCES) $(lib3010_SOURCES) \
	$(lib3025_SOURCES) $(lib3026_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) \
	$(lib530_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) $(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) $(lib676_SOURCES) $(lib677_SOURCES) \
	$(lib678_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES) $(libprereq_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,
2520
2521
2522
2523
2524
2525
2526

2527
2528
2529
2530
2531
2532
2533
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
3100
3101
3102
3103
3104
3105
3106


3107
3108
3109
3110
3111
3112
3113
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1593_LDADD = $(TESTUTIL_LIBS)
lib1594_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1594_LDADD = $(TESTUTIL_LIBS)
lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1596_LDADD = $(TESTUTIL_LIBS)
lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596


lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)
lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)
lib1906_CPPFLAGS = $(AM_CPPFLAGS)
lib1907_SOURCES = lib1907.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)







>
>







3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1593_LDADD = $(TESTUTIL_LIBS)
lib1594_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1594_LDADD = $(TESTUTIL_LIBS)
lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1596_LDADD = $(TESTUTIL_LIBS)
lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596
lib1597_SOURCES = lib1597.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1597_LDADD = $(TESTUTIL_LIBS)
lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)
lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)
lib1906_CPPFLAGS = $(AM_CPPFLAGS)
lib1907_SOURCES = lib1907.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
3738
3739
3740
3741
3742
3743
3744




3745
3746
3747
3748
3749
3750
3751
	../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1596-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1596$(EXEEXT): $(lib1596_OBJECTS) $(lib1596_DEPENDENCIES) $(EXTRA_lib1596_DEPENDENCIES) 
	@rm -f lib1596$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1596_OBJECTS) $(lib1596_LDADD) $(LIBS)




../../lib/lib1905-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1905-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1905$(EXEEXT): $(lib1905_OBJECTS) $(lib1905_DEPENDENCIES) $(EXTRA_lib1905_DEPENDENCIES) 
	@rm -f lib1905$(EXEEXT)







>
>
>
>







3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
	../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1596-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1596$(EXEEXT): $(lib1596_OBJECTS) $(lib1596_DEPENDENCIES) $(EXTRA_lib1596_DEPENDENCIES) 
	@rm -f lib1596$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1596_OBJECTS) $(lib1596_LDADD) $(LIBS)

lib1597$(EXEEXT): $(lib1597_OBJECTS) $(lib1597_DEPENDENCIES) $(EXTRA_lib1597_DEPENDENCIES) 
	@rm -f lib1597$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1597_OBJECTS) $(lib1597_LDADD) $(LIBS)
../../lib/lib1905-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1905-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1905$(EXEEXT): $(lib1905_OBJECTS) $(lib1905_DEPENDENCIES) $(EXTRA_lib1905_DEPENDENCIES) 
	@rm -f lib1905$(EXEEXT)
5167
5168
5169
5170
5171
5172
5173

5174
5175
5176
5177
5178
5179
5180
@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
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1594.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-lib1594.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-testutil.Po@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-lib1905.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-lib1906.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1907-first.Po@am__quote@ # am--include-marker







>







5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
@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
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1594.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-lib1594.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1597.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-lib1905.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-lib1906.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1907-first.Po@am__quote@ # am--include-marker
17207
17208
17209
17210
17211
17212
17213

17214
17215
17216
17217
17218
17219
17220
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
	-rm -f ./$(DEPDIR)/lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-first.Po
	-rm -f ./$(DEPDIR)/lib1596-lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-testutil.Po

	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po
	-rm -f ./$(DEPDIR)/lib1907-first.Po







>







17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
	-rm -f ./$(DEPDIR)/lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-first.Po
	-rm -f ./$(DEPDIR)/lib1596-lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-testutil.Po
	-rm -f ./$(DEPDIR)/lib1597.Po
	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po
	-rm -f ./$(DEPDIR)/lib1907-first.Po
18053
18054
18055
18056
18057
18058
18059

18060
18061
18062
18063
18064
18065
18066
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
	-rm -f ./$(DEPDIR)/lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-first.Po
	-rm -f ./$(DEPDIR)/lib1596-lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-testutil.Po

	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po
	-rm -f ./$(DEPDIR)/lib1907-first.Po







>







18066
18067
18068
18069
18070
18071
18072
18073
18074
18075
18076
18077
18078
18079
18080
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
	-rm -f ./$(DEPDIR)/lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-first.Po
	-rm -f ./$(DEPDIR)/lib1596-lib1594.Po
	-rm -f ./$(DEPDIR)/lib1596-testutil.Po
	-rm -f ./$(DEPDIR)/lib1597.Po
	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po
	-rm -f ./$(DEPDIR)/lib1907-first.Po
Changes to jni/curl/tests/libtest/Makefile.inc.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 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         lib1542 lib1543 \
 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 lib1919 \
 lib1933 lib1934 lib1935 lib1936 lib1937 lib1938 lib1939 lib1940 \
 lib1945 lib1946 \
 lib3010 lib3025 lib3026

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \







|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 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         lib1542 lib1543 \
 lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
 lib1558 lib1559 lib1560 lib1564 lib1565 lib1567 lib1568 lib1569 \
 lib1591 lib1592 lib1593 lib1594 lib1596 lib1597 \
         lib1905 lib1906 lib1907 lib1908 lib1910 lib1911 lib1912 lib1913 \
         lib1915 lib1916 lib1917 lib1918 lib1919 \
 lib1933 lib1934 lib1935 lib1936 lib1937 lib1938 lib1939 lib1940 \
 lib1945 lib1946 \
 lib3010 lib3025 lib3026

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
652
653
654
655
656
657
658



659
660
661
662
663
664
665

lib1594_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1594_LDADD = $(TESTUTIL_LIBS)

lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1596_LDADD = $(TESTUTIL_LIBS)
lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596




lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)

lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)







>
>
>







652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668

lib1594_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1594_LDADD = $(TESTUTIL_LIBS)

lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1596_LDADD = $(TESTUTIL_LIBS)
lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596

lib1597_SOURCES = lib1597.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1597_LDADD = $(TESTUTIL_LIBS)

lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)

lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)
Changes to jni/curl/tests/libtest/lib1523.c.
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  if(ret)
    fprintf(stderr, "error %d: %s\n", ret, buffer);

  ret = run(hnd, 12000, 1);
  if(ret != CURLE_OPERATION_TIMEDOUT)
    fprintf(stderr, "error %d: %s\n", ret, buffer);
  else
    ret = 0;

  printf("End: %d\n", time(NULL));
  curl_easy_cleanup(hnd);
  curl_global_cleanup();

  return (int)ret;
}







|







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  if(ret)
    fprintf(stderr, "error %d: %s\n", ret, buffer);

  ret = run(hnd, 12000, 1);
  if(ret != CURLE_OPERATION_TIMEDOUT)
    fprintf(stderr, "error %d: %s\n", ret, buffer);
  else
    ret = CURLE_OK;

  printf("End: %d\n", time(NULL));
  curl_easy_cleanup(hnd);
  curl_global_cleanup();

  return (int)ret;
}
Changes to jni/curl/tests/libtest/lib1532.c.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_RESPONSE_CODE */

int test(char *URL)
{
  CURL *curl;
  long httpcode;
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  easy_setopt(curl, CURLOPT_URL, URL);








|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_RESPONSE_CODE */

int test(char *URL)
{
  CURL *curl;
  long httpcode;
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  easy_setopt(curl, CURLOPT_URL, URL);

74
75
76
77
78
79
80
81
82
    res = CURLE_HTTP_RETURNED_ERROR;
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_global_cleanup();
  return res;
}







|

74
75
76
77
78
79
80
81
82
    res = CURLE_HTTP_RETURNED_ERROR;
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_global_cleanup();
  return (int)res;
}
Changes to jni/curl/tests/libtest/lib1533.c.
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
}


int test(char *URL)
{
  struct cb_data data;
  CURL *curl = NULL;
  CURLcode res = CURLE_FAILED_INIT;

  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
    fprintf(stderr, "curl_global_init() failed\n");
    return TEST_ERR_MAJOR_BAD;
  }

  curl = curl_easy_init();







|







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
}


int test(char *URL)
{
  struct cb_data data;
  CURL *curl = NULL;
  int res = TEST_ERR_FAILURE;

  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
    fprintf(stderr, "curl_global_init() failed\n");
    return TEST_ERR_MAJOR_BAD;
  }

  curl = curl_easy_init();
Changes to jni/curl/tests/libtest/lib1534.c.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_FILETIME */

int test(char *URL)
{
  CURL *curl, *dupe = NULL;
  long filetime;
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  /* Test that a filetime is properly initialized on curl_easy_init.
  */







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_FILETIME */

int test(char *URL)
{
  CURL *curl, *dupe = NULL;
  long filetime;
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  /* Test that a filetime is properly initialized on curl_easy_init.
  */
123
124
125
126
127
128
129
130
131
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_easy_cleanup(dupe);
  curl_global_cleanup();
  return res;
}







|

123
124
125
126
127
128
129
130
131
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_easy_cleanup(dupe);
  curl_global_cleanup();
  return (int)res;
}
Changes to jni/curl/tests/libtest/lib1535.c.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_PROTOCOL */

int test(char *URL)
{
  CURL *curl, *dupe = NULL;
  long protocol;
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  /* Test that protocol is properly initialized on curl_easy_init.
  */







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_PROTOCOL */

int test(char *URL)
{
  CURL *curl, *dupe = NULL;
  long protocol;
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  /* Test that protocol is properly initialized on curl_easy_init.
  */
122
123
124
125
126
127
128
129
130
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_easy_cleanup(dupe);
  curl_global_cleanup();
  return res;
}







|

122
123
124
125
126
127
128
129
130
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_easy_cleanup(dupe);
  curl_global_cleanup();
  return (int)res;
}
Changes to jni/curl/tests/libtest/lib1536.c.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_SCHEME */

int test(char *URL)
{
  CURL *curl, *dupe = NULL;
  char *scheme;
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  /* Test that scheme is properly initialized on curl_easy_init.
  */







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Test CURLINFO_SCHEME */

int test(char *URL)
{
  CURL *curl, *dupe = NULL;
  char *scheme;
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  /* Test that scheme is properly initialized on curl_easy_init.
  */
123
124
125
126
127
128
129
130
131
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_easy_cleanup(dupe);
  curl_global_cleanup();
  return res;
}







|

123
124
125
126
127
128
129
130
131
    goto test_cleanup;
  }

test_cleanup:
  curl_easy_cleanup(curl);
  curl_easy_cleanup(dupe);
  curl_global_cleanup();
  return (int)res;
}
Changes to jni/curl/tests/libtest/lib1555.c.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

static int progressCallback(void *arg,
                            double dltotal,
                            double dlnow,
                            double ultotal,
                            double ulnow)
{
  CURLcode res = 0;
  char buffer[256];
  size_t n = 0;
  (void)arg;
  (void)dltotal;
  (void)dlnow;
  (void)ultotal;
  (void)ulnow;







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

static int progressCallback(void *arg,
                            double dltotal,
                            double dlnow,
                            double ultotal,
                            double ulnow)
{
  CURLcode res = CURLE_OK;
  char buffer[256];
  size_t n = 0;
  (void)arg;
  (void)dltotal;
  (void)dlnow;
  (void)ultotal;
  (void)ulnow;
Changes to jni/curl/tests/libtest/lib1558.c.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

#include "testutil.h"
#include "warnless.h"
#include "memdebug.h"

int test(char *URL)
{
  CURLcode res = 0;
  CURL *curl = NULL;
  long protocol = 0;

  global_init(CURL_GLOBAL_ALL);
  easy_init(curl);

  easy_setopt(curl, CURLOPT_URL, URL);







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

#include "testutil.h"
#include "warnless.h"
#include "memdebug.h"

int test(char *URL)
{
  CURLcode res = CURLE_OK;
  CURL *curl = NULL;
  long protocol = 0;

  global_init(CURL_GLOBAL_ALL);
  easy_init(curl);

  easy_setopt(curl, CURLOPT_URL, URL);
Changes to jni/curl/tests/libtest/lib1559.c.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "testutil.h"
#include "warnless.h"
#include "memdebug.h"

#define EXCESSIVE 10*1000*1000
int test(char *URL)
{
  CURLcode res = 0;
  CURL *curl = NULL;
  char *longurl = malloc(EXCESSIVE);
  CURLU *u;
  (void)URL;

  if(!longurl)
    return 1;







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "testutil.h"
#include "warnless.h"
#include "memdebug.h"

#define EXCESSIVE 10*1000*1000
int test(char *URL)
{
  CURLcode res = CURLE_OK;
  CURL *curl = NULL;
  char *longurl = malloc(EXCESSIVE);
  CURLU *u;
  (void)URL;

  if(!longurl)
    return 1;
Changes to jni/curl/tests/libtest/lib1560.c.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    {CURLUPART_PASSWORD, "password"},
    {CURLUPART_OPTIONS, "options"},
    {CURLUPART_HOST, "host"},
    {CURLUPART_PORT, "port"},
    {CURLUPART_PATH, "path"},
    {CURLUPART_QUERY, "query"},
    {CURLUPART_FRAGMENT, "fragment"},
    {0, NULL}
  };
  memset(buf, 0, sizeof(buf));

  for(i = 0; parts[i].name; i++) {
    char *p = NULL;
    size_t n;
    rc = curl_url_get(u, parts[i].part, &p, getflags);







|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    {CURLUPART_PASSWORD, "password"},
    {CURLUPART_OPTIONS, "options"},
    {CURLUPART_HOST, "host"},
    {CURLUPART_PORT, "port"},
    {CURLUPART_PATH, "path"},
    {CURLUPART_QUERY, "query"},
    {CURLUPART_FRAGMENT, "fragment"},
    {CURLUPART_URL, NULL}
  };
  memset(buf, 0, sizeof(buf));

  for(i = 0; parts[i].name; i++) {
    char *p = NULL;
    size_t n;
    rc = curl_url_get(u, parts[i].part, &p, getflags);
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_NO_HOST},
  {"custom-scheme://?expected=test-new-good",
   "custom-scheme:///?expected=test-new-good",
   CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
  {"custom-scheme://host?expected=test-still-good",
   "custom-scheme://host/?expected=test-still-good",
   CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
  {NULL, NULL, 0, 0, 0}
};

static int checkurl(const char *url, const char *out)
{
  if(strcmp(out, url)) {
    fprintf(stderr, "Wanted: %s\nGot   : %s\n",
            out, url);







|







554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_NO_HOST},
  {"custom-scheme://?expected=test-new-good",
   "custom-scheme:///?expected=test-new-good",
   CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
  {"custom-scheme://host?expected=test-still-good",
   "custom-scheme://host/?expected=test-still-good",
   CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
  {NULL, NULL, 0, 0, CURLUE_OK}
};

static int checkurl(const char *url, const char *out)
{
  if(strcmp(out, url)) {
    fprintf(stderr, "Wanted: %s\nGot   : %s\n",
            out, url);
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
   CURLUE_BAD_HOSTNAME},
  {"custom-scheme://host",
   "host=\"\",",
   "custom-scheme:///",
   CURLU_NON_SUPPORT_SCHEME, CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY,
   CURLUE_OK, CURLUE_OK},

  {NULL, NULL, NULL, 0, 0, 0, 0}
};

static CURLUPart part2id(char *part)
{
  if(!strcmp("url", part))
    return CURLUPART_URL;
  if(!strcmp("scheme", part))







|







718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
   CURLUE_BAD_HOSTNAME},
  {"custom-scheme://host",
   "host=\"\",",
   "custom-scheme:///",
   CURLU_NON_SUPPORT_SCHEME, CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY,
   CURLUE_OK, CURLUE_OK},

  {NULL, NULL, NULL, 0, 0, CURLUE_OK, CURLUE_OK}
};

static CURLUPart part2id(char *part)
{
  if(!strcmp("url", part))
    return CURLUPART_URL;
  if(!strcmp("scheme", part))
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
  return CURLUE_OK;
}

static const struct redircase set_url_list[] = {
  {"http://example.org/static/favicon/wikipedia.ico",
   "//fake.example.com/licenses/by-sa/3.0/",
   "http://fake.example.com/licenses/by-sa/3.0/",
   0, 0, 0},
  {"https://example.org/static/favicon/wikipedia.ico",
   "//fake.example.com/licenses/by-sa/3.0/",
   "https://fake.example.com/licenses/by-sa/3.0/",
   0, 0, 0},
  {"file://localhost/path?query#frag",
   "foo#another",
   "file:///foo#another",
   0, 0, 0},
  {"http://example.com/path?query#frag",
   "https://two.example.com/bradnew",
   "https://two.example.com/bradnew",
   0, 0, 0},
  {"http://example.com/path?query#frag",
   "../../newpage#foo",
   "http://example.com/newpage#foo",
   0, 0, 0},
  {"http://user:foo@example.com/path?query#frag",
   "../../newpage",
   "http://user:foo@example.com/newpage",
   0, 0, 0},
  {"http://user:foo@example.com/path?query#frag",
   "../newpage",
   "http://user:foo@example.com/newpage",
   0, 0, 0},
  {NULL, NULL, NULL, 0, 0, 0}
};

static int set_url(void)
{
  int i;
  int error = 0;








|



|



|



|



|



|



|
|







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
  return CURLUE_OK;
}

static const struct redircase set_url_list[] = {
  {"http://example.org/static/favicon/wikipedia.ico",
   "//fake.example.com/licenses/by-sa/3.0/",
   "http://fake.example.com/licenses/by-sa/3.0/",
   0, 0, CURLUE_OK},
  {"https://example.org/static/favicon/wikipedia.ico",
   "//fake.example.com/licenses/by-sa/3.0/",
   "https://fake.example.com/licenses/by-sa/3.0/",
   0, 0, CURLUE_OK},
  {"file://localhost/path?query#frag",
   "foo#another",
   "file:///foo#another",
   0, 0, CURLUE_OK},
  {"http://example.com/path?query#frag",
   "https://two.example.com/bradnew",
   "https://two.example.com/bradnew",
   0, 0, CURLUE_OK},
  {"http://example.com/path?query#frag",
   "../../newpage#foo",
   "http://example.com/newpage#foo",
   0, 0, CURLUE_OK},
  {"http://user:foo@example.com/path?query#frag",
   "../../newpage",
   "http://user:foo@example.com/newpage",
   0, 0, CURLUE_OK},
  {"http://user:foo@example.com/path?query#frag",
   "../newpage",
   "http://user:foo@example.com/newpage",
   0, 0, CURLUE_OK},
  {NULL, NULL, NULL, 0, 0, CURLUE_OK}
};

static int set_url(void)
{
  int i;
  int error = 0;

1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
  {"HTTP://test/", "name=joe", "http://test/?name=joe", 0, 0, CURLUE_OK},
  {"HTTP://test/?size=2", "name=joe", "http://test/?size=2&name=joe",
   0, 0, CURLUE_OK},
  {"HTTP://test/?size=2&", "name=joe", "http://test/?size=2&name=joe",
   0, 0, CURLUE_OK},
  {"HTTP://test/?size=2#f", "name=joe", "http://test/?size=2&name=joe#f",
   0, 0, CURLUE_OK},
  {NULL, NULL, NULL, 0, 0, 0}
};

static int append(void)
{
  int i;
  int error = 0;
  for(i = 0; append_list[i].in && !error; i++) {







|







1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
  {"HTTP://test/", "name=joe", "http://test/?name=joe", 0, 0, CURLUE_OK},
  {"HTTP://test/?size=2", "name=joe", "http://test/?size=2&name=joe",
   0, 0, CURLUE_OK},
  {"HTTP://test/?size=2&", "name=joe", "http://test/?size=2&name=joe",
   0, 0, CURLUE_OK},
  {"HTTP://test/?size=2#f", "name=joe", "http://test/?size=2&name=joe#f",
   0, 0, CURLUE_OK},
  {NULL, NULL, NULL, 0, 0, CURLUE_OK}
};

static int append(void)
{
  int i;
  int error = 0;
  for(i = 0; append_list[i].in && !error; i++) {
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
  {CURLUPART_OPTIONS, "options", NULL, CURLUE_NO_OPTIONS},
  {CURLUPART_HOST, "host", NULL, CURLUE_NO_HOST},
  {CURLUPART_ZONEID, "eth0", NULL, CURLUE_NO_ZONEID},
  {CURLUPART_PORT, "1234", NULL, CURLUE_NO_PORT},
  {CURLUPART_PATH, "/hello", "/", CURLUE_OK},
  {CURLUPART_QUERY, "a=b", NULL, CURLUE_NO_QUERY},
  {CURLUPART_FRAGMENT, "anchor", NULL, CURLUE_NO_FRAGMENT},
  {0, NULL, NULL, CURLUE_OK},
};

static int clear_url(void)
{
  CURLU *u = curl_url();
  int i, error = 0;
  if(u) {







|







1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
  {CURLUPART_OPTIONS, "options", NULL, CURLUE_NO_OPTIONS},
  {CURLUPART_HOST, "host", NULL, CURLUE_NO_HOST},
  {CURLUPART_ZONEID, "eth0", NULL, CURLUE_NO_ZONEID},
  {CURLUPART_PORT, "1234", NULL, CURLUE_NO_PORT},
  {CURLUPART_PATH, "/hello", "/", CURLUE_OK},
  {CURLUPART_QUERY, "a=b", NULL, CURLUE_NO_QUERY},
  {CURLUPART_FRAGMENT, "anchor", NULL, CURLUE_NO_FRAGMENT},
  {CURLUPART_URL, NULL, NULL, CURLUE_OK},
};

static int clear_url(void)
{
  CURLU *u = curl_url();
  int i, error = 0;
  if(u) {
Added jni/curl/tests/libtest/lib1597.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
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2022, 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.
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/

/* Testing CURLOPT_PROTOCOLS_STR */

#include "test.h"

#include "memdebug.h"

struct pair {
  const char *in;
  CURLcode exp;
};

int test(char *URL)
{
  CURL *curl = NULL;
  int res = 0;
  CURLcode result = CURLE_OK;
  int i;

  struct pair prots[] = {
    {"goobar", CURLE_BAD_FUNCTION_ARGUMENT},
    {"http ", CURLE_BAD_FUNCTION_ARGUMENT},
    {" http", CURLE_BAD_FUNCTION_ARGUMENT},
    {"http", CURLE_OK},
    {"http,", CURLE_OK},
    {"https,", CURLE_OK},
    {"https,http", CURLE_OK},
    {"http,http", CURLE_OK},
    {"HTTP,HTTP", CURLE_OK},
    {",HTTP,HTTP", CURLE_OK},
    {"http,http,ft", CURLE_BAD_FUNCTION_ARGUMENT},
    {"", CURLE_BAD_FUNCTION_ARGUMENT},
    {",,", CURLE_BAD_FUNCTION_ARGUMENT},
    {"DICT,FILE,FTP,FTPS,GOPHER,GOPHERS,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,"
     "POP3,POP3S,RTMP,RTMPE,RTMPS,RTMPT,RTMPTE,RTMPTS,RTSP,SCP,SFTP,SMB,"
     "SMBS,SMTP,SMTPS,TELNET,TFTP", CURLE_OK},
    {"all", CURLE_OK},
    {NULL, CURLE_OK},
  };
  (void)URL;

  global_init(CURL_GLOBAL_ALL);

  easy_init(curl);

  for(i = 0; prots[i].in; i++) {
    result = curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, prots[i].in);
    if(result != prots[i].exp) {
      printf("unexpectedly '%s' returned %u\n",
             prots[i].in, result);
      break;
    }
  }
  printf("Tested %u strings\n", i);
  res = (int)result;

  test_cleanup:
  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return (int)result;
}
Changes to jni/curl/tests/libtest/lib3026.c.
22
23
24
25
26
27
28


29



30



31

32




33




34









































35
36
37
38
39
40
41
 *
 ***************************************************************************/
#include "test.h"

#include "testutil.h"
#include "warnless.h"



#ifdef HAVE_PTHREAD_H



#include <pthread.h>



#include <unistd.h>






#define NUM_THREADS 1000














































static void *run_thread(void *ptr)
{
  CURLcode *result = ptr;

  *result = curl_global_init(CURL_GLOBAL_ALL);
  if(*result == CURLE_OK)
    curl_global_cleanup();







>
>
|
>
>
>
|
>
>
>
|
>
|
>
>
>
>
|
>
>
>
>

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







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
 *
 ***************************************************************************/
#include "test.h"

#include "testutil.h"
#include "warnless.h"

#define NUM_THREADS 100

#ifdef WIN32
static DWORD WINAPI run_thread(LPVOID ptr)
{
  CURLcode *result = ptr;

  *result = curl_global_init(CURL_GLOBAL_ALL);
  if(*result == CURLE_OK)
    curl_global_cleanup();

  return 0;
}

int test(char *URL)
{
  CURLcode results[NUM_THREADS];
  HANDLE ths[NUM_THREADS];
  unsigned tid_count = NUM_THREADS, i;
  int test_failure = 0;
  curl_version_info_data *ver;
  (void) URL;

  ver = curl_version_info(CURLVERSION_NOW);
  if((ver->features & CURL_VERSION_THREADSAFE) == 0) {
    fprintf(stderr, "%s:%d On Windows but the "
            "CURL_VERSION_THREADSAFE feature flag is not set\n",
            __FILE__, __LINE__);
    return -1;
  }

  for(i = 0; i < tid_count; i++) {
    HANDLE th;
    results[i] = CURL_LAST; /* initialize with invalid value */
    th = CreateThread(NULL, 0, run_thread, &results[i], 0, NULL);
    if(!th) {
      fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
              __FILE__, __LINE__, GetLastError());
      tid_count = i;
      test_failure = -1;
      goto cleanup;
    }
    ths[i] = th;
  }

cleanup:
  for(i = 0; i < tid_count; i++) {
    WaitForSingleObject(ths[i], INFINITE);
    CloseHandle(ths[i]);
    if(results[i] != CURLE_OK) {
      fprintf(stderr, "%s:%d thread[%u]: curl_global_init() failed,"
              "with code %d (%s)\n", __FILE__, __LINE__,
              i, (int) results[i], curl_easy_strerror(results[i]));
      test_failure = -1;
    }
  }

  return test_failure;
}

#elif defined(HAVE_PTHREAD_H)
#include <pthread.h>
#include <unistd.h>

static void *run_thread(void *ptr)
{
  CURLcode *result = ptr;

  *result = curl_global_init(CURL_GLOBAL_ALL);
  if(*result == CURLE_OK)
    curl_global_cleanup();
57
58
59
60
61
62
63


64
65
66
67
68
69
70
71
    fprintf(stderr, "%s:%d Have pthread but the "
            "CURL_VERSION_THREADSAFE feature flag is not set\n",
            __FILE__, __LINE__);
    return -1;
  }

  for(i = 0; i < tid_count; i++) {


    int res = pthread_create(&tids[i], NULL, run_thread, &results[i]);
    if(res) {
      fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
              __FILE__, __LINE__, res);
      tid_count = i;
      test_failure = -1;
      goto cleanup;
    }







>
>
|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
    fprintf(stderr, "%s:%d Have pthread but the "
            "CURL_VERSION_THREADSAFE feature flag is not set\n",
            __FILE__, __LINE__);
    return -1;
  }

  for(i = 0; i < tid_count; i++) {
    int res;
    results[i] = CURL_LAST; /* initialize with invalid value */
    res = pthread_create(&tids[i], NULL, run_thread, &results[i]);
    if(res) {
      fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
              __FILE__, __LINE__, res);
      tid_count = i;
      test_failure = -1;
      goto cleanup;
    }
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
      test_failure = -1;
    }
  }

  return test_failure;
}

#else /* without pthread, this test doesn't work */
int test(char *URL)
{
  curl_version_info_data *ver;
  (void)URL;

  ver = curl_version_info(CURLVERSION_NOW);
  if((ver->features & CURL_VERSION_THREADSAFE) != 0) {







|







141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
      test_failure = -1;
    }
  }

  return test_failure;
}

#else /* without pthread or Windows, this test doesn't work */
int test(char *URL)
{
  curl_version_info_data *ver;
  (void)URL;

  ver = curl_version_info(CURLVERSION_NOW);
  if((ver->features & CURL_VERSION_THREADSAFE) != 0) {
Changes to jni/curl/tests/libtest/lib530.c.
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

103
104
105
106
107
108
109
  if(!sockets->sockets) {
    sockets->sockets = malloc(sizeof(curl_socket_t) * 20U);
    if(!sockets->sockets)
      return 1;
    sockets->max_count = 20;
  }
  else if(sockets->count + 1 > sockets->max_count) {
    curl_socket_t *oldptr = sockets->sockets;
    sockets->sockets = realloc(oldptr, sizeof(curl_socket_t) *
                               (sockets->max_count + 20));
    if(!sockets->sockets) {
      /* cleanup in test_cleanup */
      sockets->sockets = oldptr;
      return 1;
    }

    sockets->max_count += 20;
  }
  /*
   * Add file descriptor to array.
   */
  sockets->sockets[sockets->count] = fd;
  ++sockets->count;







<
|
|
|

<

<
>







88
89
90
91
92
93
94

95
96
97
98

99

100
101
102
103
104
105
106
107
  if(!sockets->sockets) {
    sockets->sockets = malloc(sizeof(curl_socket_t) * 20U);
    if(!sockets->sockets)
      return 1;
    sockets->max_count = 20;
  }
  else if(sockets->count + 1 > sockets->max_count) {

    curl_socket_t *ptr = realloc(sockets->sockets, sizeof(curl_socket_t) *
                                 (sockets->max_count + 20));
    if(!ptr)
      /* cleanup in test_cleanup */

      return 1;

    sockets->sockets = ptr;
    sockets->max_count += 20;
  }
  /*
   * Add file descriptor to array.
   */
  sockets->sockets[sockets->count] = fd;
  ++sockets->count;
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
 * Invoke curl when a file descriptor is set.
 */
static int checkFdSet(CURLM *curl,
                      struct Sockets *sockets, fd_set *fdset,
                      int evBitmask, const char *name)
{
  int i;
  CURLMcode result = CURLM_OK;
  for(i = 0; i < sockets->count; ++i) {
    if(FD_ISSET(sockets->sockets[i], fdset)) {
      result = socket_action(curl, sockets->sockets[i], evBitmask, name);
      if(result)
        break;
    }
  }
  return (int)result;
}

static int testone(char *URL, int timercb, int socketcb)
{
  int res = 0;
  CURL *curl = NULL;  CURLM *m = NULL;
  struct ReadWriteSockets sockets = {{NULL, 0, 0}, {NULL, 0, 0}};







|







|







243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
 * Invoke curl when a file descriptor is set.
 */
static int checkFdSet(CURLM *curl,
                      struct Sockets *sockets, fd_set *fdset,
                      int evBitmask, const char *name)
{
  int i;
  int result = 0;
  for(i = 0; i < sockets->count; ++i) {
    if(FD_ISSET(sockets->sockets[i], fdset)) {
      result = socket_action(curl, sockets->sockets[i], evBitmask, name);
      if(result)
        break;
    }
  }
  return result;
}

static int testone(char *URL, int timercb, int socketcb)
{
  int res = 0;
  CURL *curl = NULL;  CURLM *m = NULL;
  struct ReadWriteSockets sockets = {{NULL, 0, 0}, {NULL, 0, 0}};
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
  curl_easy_cleanup(curl);
  curl_multi_cleanup(m);
  curl_global_cleanup();

  /* free local memory */
  free(sockets.read.sockets);
  free(sockets.write.sockets);

  return res;
}

int test(char *URL)
{
  int rc;
  /* rerun the same transfer multiple times and make it fail in different







<







355
356
357
358
359
360
361

362
363
364
365
366
367
368
  curl_easy_cleanup(curl);
  curl_multi_cleanup(m);
  curl_global_cleanup();

  /* free local memory */
  free(sockets.read.sockets);
  free(sockets.write.sockets);

  return res;
}

int test(char *URL)
{
  int rc;
  /* rerun the same transfer multiple times and make it fail in different
Changes to jni/curl/tests/libtest/lib557.c.
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

static int test_unsigned_short_formatting(void)
{
  int i, j;
  int num_ushort_tests = 0;
  int failed = 0;

#if (SIZEOF_SHORT == 1)

  i = 1; us_test[i].num = 0xFFU; us_test[i].expected = "256";
  i++; us_test[i].num = 0xF0U; us_test[i].expected = "240";
  i++; us_test[i].num = 0x0FU; us_test[i].expected = "15";

  i++; us_test[i].num = 0xE0U; us_test[i].expected = "224";
  i++; us_test[i].num = 0x0EU; us_test[i].expected = "14";

  i++; us_test[i].num = 0xC0U; us_test[i].expected = "192";
  i++; us_test[i].num = 0x0CU; us_test[i].expected = "12";

  i++; us_test[i].num = 0x01U; us_test[i].expected = "1";
  i++; us_test[i].num = 0x00U; us_test[i].expected = "0";

  num_ushort_tests = i;

#elif (SIZEOF_SHORT == 2)

  i = 1; us_test[i].num = 0xFFFFU; us_test[i].expected = "65535";
  i++; us_test[i].num = 0xFF00U; us_test[i].expected = "65280";
  i++; us_test[i].num = 0x00FFU; us_test[i].expected = "255";

  i++; us_test[i].num = 0xF000U; us_test[i].expected = "61440";
  i++; us_test[i].num = 0x0F00U; us_test[i].expected = "3840";
  i++; us_test[i].num = 0x00F0U; us_test[i].expected = "240";
  i++; us_test[i].num = 0x000FU; us_test[i].expected = "15";

  i++; us_test[i].num = 0xC000U; us_test[i].expected = "49152";
  i++; us_test[i].num = 0x0C00U; us_test[i].expected = "3072";
  i++; us_test[i].num = 0x00C0U; us_test[i].expected = "192";
  i++; us_test[i].num = 0x000CU; us_test[i].expected = "12";

  i++; us_test[i].num = 0x0001U; us_test[i].expected = "1";
  i++; us_test[i].num = 0x0000U; us_test[i].expected = "0";

  num_ushort_tests = i;

#elif (SIZEOF_SHORT == 4)

  i = 1; us_test[i].num = 0xFFFFFFFFU; us_test[i].expected = "4294967295";
  i++; us_test[i].num = 0xFFFF0000U; us_test[i].expected = "4294901760";
  i++; us_test[i].num = 0x0000FFFFU; us_test[i].expected = "65535";

  i++; us_test[i].num = 0xFF000000U; us_test[i].expected = "4278190080";
  i++; us_test[i].num = 0x00FF0000U; us_test[i].expected = "16711680";
  i++; us_test[i].num = 0x0000FF00U; us_test[i].expected = "65280";
  i++; us_test[i].num = 0x000000FFU; us_test[i].expected = "255";

  i++; us_test[i].num = 0xF0000000U; us_test[i].expected = "4026531840";
  i++; us_test[i].num = 0x0F000000U; us_test[i].expected = "251658240";
  i++; us_test[i].num = 0x00F00000U; us_test[i].expected = "15728640";
  i++; us_test[i].num = 0x000F0000U; us_test[i].expected = "983040";
  i++; us_test[i].num = 0x0000F000U; us_test[i].expected = "61440";
  i++; us_test[i].num = 0x00000F00U; us_test[i].expected = "3840";
  i++; us_test[i].num = 0x000000F0U; us_test[i].expected = "240";
  i++; us_test[i].num = 0x0000000FU; us_test[i].expected = "15";

  i++; us_test[i].num = 0xC0000000U; us_test[i].expected = "3221225472";
  i++; us_test[i].num = 0x0C000000U; us_test[i].expected = "201326592";
  i++; us_test[i].num = 0x00C00000U; us_test[i].expected = "12582912";
  i++; us_test[i].num = 0x000C0000U; us_test[i].expected = "786432";
  i++; us_test[i].num = 0x0000C000U; us_test[i].expected = "49152";
  i++; us_test[i].num = 0x00000C00U; us_test[i].expected = "3072";
  i++; us_test[i].num = 0x000000C0U; us_test[i].expected = "192";
  i++; us_test[i].num = 0x0000000CU; us_test[i].expected = "12";

  i++; us_test[i].num = 0x00000001U; us_test[i].expected = "1";
  i++; us_test[i].num = 0x00000000U; us_test[i].expected = "0";

  num_ushort_tests = i;

#endif

  for(i = 1; i <= num_ushort_tests; i++) {

    for(j = 0; j<BUFSZ; j++)
      us_test[i].result[j] = 'X';
    us_test[i].result[BUFSZ-1] = '\0';

    (void)curl_msprintf(us_test[i].result, "%hu", us_test[i].num);







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



















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







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

static int test_unsigned_short_formatting(void)
{
  int i, j;
  int num_ushort_tests = 0;
  int failed = 0;




















  i = 1; us_test[i].num = 0xFFFFU; us_test[i].expected = "65535";
  i++; us_test[i].num = 0xFF00U; us_test[i].expected = "65280";
  i++; us_test[i].num = 0x00FFU; us_test[i].expected = "255";

  i++; us_test[i].num = 0xF000U; us_test[i].expected = "61440";
  i++; us_test[i].num = 0x0F00U; us_test[i].expected = "3840";
  i++; us_test[i].num = 0x00F0U; us_test[i].expected = "240";
  i++; us_test[i].num = 0x000FU; us_test[i].expected = "15";

  i++; us_test[i].num = 0xC000U; us_test[i].expected = "49152";
  i++; us_test[i].num = 0x0C00U; us_test[i].expected = "3072";
  i++; us_test[i].num = 0x00C0U; us_test[i].expected = "192";
  i++; us_test[i].num = 0x000CU; us_test[i].expected = "12";

  i++; us_test[i].num = 0x0001U; us_test[i].expected = "1";
  i++; us_test[i].num = 0x0000U; us_test[i].expected = "0";

  num_ushort_tests = i;





































  for(i = 1; i <= num_ushort_tests; i++) {

    for(j = 0; j<BUFSZ; j++)
      us_test[i].result[j] = 'X';
    us_test[i].result[BUFSZ-1] = '\0';

    (void)curl_msprintf(us_test[i].result, "%hu", us_test[i].num);
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

static int test_signed_short_formatting(void)
{
  int i, j;
  int num_sshort_tests = 0;
  int failed = 0;

#if (SIZEOF_SHORT == 1)

  i = 1; ss_test[i].num = 0x7F; ss_test[i].expected = "127";

  i++; ss_test[i].num = 0x70; ss_test[i].expected = "112";
  i++; ss_test[i].num = 0x07; ss_test[i].expected = "7";

  i++; ss_test[i].num = 0x50; ss_test[i].expected = "80";
  i++; ss_test[i].num = 0x05; ss_test[i].expected = "5";

  i++; ss_test[i].num = 0x01; ss_test[i].expected = "1";
  i++; ss_test[i].num = 0x00; ss_test[i].expected = "0";

  i++; ss_test[i].num = -0x7F -1; ss_test[i].expected = "-128";

  i++; ss_test[i].num = -0x70 -1; ss_test[i].expected = "-113";
  i++; ss_test[i].num = -0x07 -1; ss_test[i].expected = "-8";

  i++; ss_test[i].num = -0x50 -1; ss_test[i].expected = "-81";
  i++; ss_test[i].num = -0x05 -1; ss_test[i].expected = "-6";

  i++; ss_test[i].num =  0x00 -1; ss_test[i].expected = "-1";

  num_sshort_tests = i;

#elif (SIZEOF_SHORT == 2)

  i = 1; ss_test[i].num = 0x7FFF; ss_test[i].expected = "32767";
  i++; ss_test[i].num = 0x7FFE; ss_test[i].expected = "32766";
  i++; ss_test[i].num = 0x7FFD; ss_test[i].expected = "32765";
  i++; ss_test[i].num = 0x7F00; ss_test[i].expected = "32512";
  i++; ss_test[i].num = 0x07F0; ss_test[i].expected = "2032";
  i++; ss_test[i].num = 0x007F; ss_test[i].expected = "127";








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







175
176
177
178
179
180
181



























182
183
184
185
186
187
188

static int test_signed_short_formatting(void)
{
  int i, j;
  int num_sshort_tests = 0;
  int failed = 0;




























  i = 1; ss_test[i].num = 0x7FFF; ss_test[i].expected = "32767";
  i++; ss_test[i].num = 0x7FFE; ss_test[i].expected = "32766";
  i++; ss_test[i].num = 0x7FFD; ss_test[i].expected = "32765";
  i++; ss_test[i].num = 0x7F00; ss_test[i].expected = "32512";
  i++; ss_test[i].num = 0x07F0; ss_test[i].expected = "2032";
  i++; ss_test[i].num = 0x007F; ss_test[i].expected = "127";

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
  i++; ss_test[i].num = -0x0050 -1; ss_test[i].expected = "-81";
  i++; ss_test[i].num = -0x0005 -1; ss_test[i].expected = "-6";

  i++; ss_test[i].num =  0x0000 -1; ss_test[i].expected = "-1";

  num_sshort_tests = i;

#elif (SIZEOF_SHORT == 4)

  i = 1; ss_test[i].num = 0x7FFFFFFF; ss_test[i].expected = "2147483647";
  i++; ss_test[i].num = 0x7FFFFFFE; ss_test[i].expected = "2147483646";
  i++; ss_test[i].num = 0x7FFFFFFD; ss_test[i].expected = "2147483645";
  i++; ss_test[i].num = 0x7FFF0000; ss_test[i].expected = "2147418112";
  i++; ss_test[i].num = 0x00007FFF; ss_test[i].expected = "32767";

  i++; ss_test[i].num = 0x7F000000; ss_test[i].expected = "2130706432";
  i++; ss_test[i].num = 0x007F0000; ss_test[i].expected = "8323072";
  i++; ss_test[i].num = 0x00007F00; ss_test[i].expected = "32512";
  i++; ss_test[i].num = 0x0000007F; ss_test[i].expected = "127";

  i++; ss_test[i].num = 0x70000000; ss_test[i].expected = "1879048192";
  i++; ss_test[i].num = 0x07000000; ss_test[i].expected = "117440512";
  i++; ss_test[i].num = 0x00700000; ss_test[i].expected = "7340032";
  i++; ss_test[i].num = 0x00070000; ss_test[i].expected = "458752";
  i++; ss_test[i].num = 0x00007000; ss_test[i].expected = "28672";
  i++; ss_test[i].num = 0x00000700; ss_test[i].expected = "1792";
  i++; ss_test[i].num = 0x00000070; ss_test[i].expected = "112";
  i++; ss_test[i].num = 0x00000007; ss_test[i].expected = "7";

  i++; ss_test[i].num = 0x50000000; ss_test[i].expected = "1342177280";
  i++; ss_test[i].num = 0x05000000; ss_test[i].expected = "83886080";
  i++; ss_test[i].num = 0x00500000; ss_test[i].expected = "5242880";
  i++; ss_test[i].num = 0x00050000; ss_test[i].expected = "327680";
  i++; ss_test[i].num = 0x00005000; ss_test[i].expected = "20480";
  i++; ss_test[i].num = 0x00000500; ss_test[i].expected = "1280";
  i++; ss_test[i].num = 0x00000050; ss_test[i].expected = "80";
  i++; ss_test[i].num = 0x00000005; ss_test[i].expected = "5";

  i++; ss_test[i].num = 0x00000001; ss_test[i].expected = "1";
  i++; ss_test[i].num = 0x00000000; ss_test[i].expected = "0";

  i++; ss_test[i].num = -0x7FFFFFFF -1; ss_test[i].expected = "-2147483648";
  i++; ss_test[i].num = -0x7FFFFFFE -1; ss_test[i].expected = "-2147483647";
  i++; ss_test[i].num = -0x7FFFFFFD -1; ss_test[i].expected = "-2147483646";
  i++; ss_test[i].num = -0x7FFF0000 -1; ss_test[i].expected = "-2147418113";
  i++; ss_test[i].num = -0x00007FFF -1; ss_test[i].expected = "-32768";

  i++; ss_test[i].num = -0x7F000000 -1; ss_test[i].expected = "-2130706433";
  i++; ss_test[i].num = -0x007F0000 -1; ss_test[i].expected = "-8323073";
  i++; ss_test[i].num = -0x00007F00 -1; ss_test[i].expected = "-32513";
  i++; ss_test[i].num = -0x0000007F -1; ss_test[i].expected = "-128";

  i++; ss_test[i].num = -0x70000000 -1; ss_test[i].expected = "-1879048193";
  i++; ss_test[i].num = -0x07000000 -1; ss_test[i].expected = "-117440513";
  i++; ss_test[i].num = -0x00700000 -1; ss_test[i].expected = "-7340033";
  i++; ss_test[i].num = -0x00070000 -1; ss_test[i].expected = "-458753";
  i++; ss_test[i].num = -0x00007000 -1; ss_test[i].expected = "-28673";
  i++; ss_test[i].num = -0x00000700 -1; ss_test[i].expected = "-1793";
  i++; ss_test[i].num = -0x00000070 -1; ss_test[i].expected = "-113";
  i++; ss_test[i].num = -0x00000007 -1; ss_test[i].expected = "-8";

  i++; ss_test[i].num = -0x50000000 -1; ss_test[i].expected = "-1342177281";
  i++; ss_test[i].num = -0x05000000 -1; ss_test[i].expected = "-83886081";
  i++; ss_test[i].num = -0x00500000 -1; ss_test[i].expected = "-5242881";
  i++; ss_test[i].num = -0x00050000 -1; ss_test[i].expected = "-327681";
  i++; ss_test[i].num = -0x00005000 -1; ss_test[i].expected = "-20481";
  i++; ss_test[i].num = -0x00000500 -1; ss_test[i].expected = "-1281";
  i++; ss_test[i].num = -0x00000050 -1; ss_test[i].expected = "-81";
  i++; ss_test[i].num = -0x00000005 -1; ss_test[i].expected = "-6";

  i++; ss_test[i].num =  0x00000000 -1; ss_test[i].expected = "-1";

  num_sshort_tests = i;

#endif

  for(i = 1; i <= num_sshort_tests; i++) {

    for(j = 0; j<BUFSZ; j++)
      ss_test[i].result[j] = 'X';
    ss_test[i].result[BUFSZ-1] = '\0';

    (void)curl_msprintf(ss_test[i].result, "%hd", ss_test[i].num);







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







216
217
218
219
220
221
222





































































223
224
225
226
227
228
229
  i++; ss_test[i].num = -0x0050 -1; ss_test[i].expected = "-81";
  i++; ss_test[i].num = -0x0005 -1; ss_test[i].expected = "-6";

  i++; ss_test[i].num =  0x0000 -1; ss_test[i].expected = "-1";

  num_sshort_tests = i;






































































  for(i = 1; i <= num_sshort_tests; i++) {

    for(j = 0; j<BUFSZ; j++)
      ss_test[i].result[j] = 'X';
    ss_test[i].result[BUFSZ-1] = '\0';

    (void)curl_msprintf(ss_test[i].result, "%hd", ss_test[i].num);
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 7 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 8 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 9 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 10 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 11 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8);   /* 9 */

  if(rc != -1) {
    printf("curl_mprintf() returned %d and not -1!\n", rc);
    errors++;
  }

  errors += string_check(buf, "");

  /* Do not skip sanity checks with parameters! */
  buf[0] = 0;







|
|







1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 7 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 8 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 9 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 10 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 11 */
                      0, 1, 2, 3, 4, 5, 6, 7, 8);   /* 9 */

  if(rc) {
    printf("curl_mprintf() returned %d and not 0\n", rc);
    errors++;
  }

  errors += string_check(buf, "");

  /* Do not skip sanity checks with parameters! */
  buf[0] = 0;
Changes to jni/curl/tests/libtest/lib658.c.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * Get a single URL without select().
 */

int test(char *URL)
{
  CURL *handle = NULL;
  CURLcode res = 0;
  CURLU *urlp = NULL;
  CURLUcode uc = 0;

  global_init(CURL_GLOBAL_ALL);
  easy_init(handle);

  urlp = curl_url();

  if(!urlp) {







|

|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * Get a single URL without select().
 */

int test(char *URL)
{
  CURL *handle = NULL;
  CURLcode res = CURLE_OK;
  CURLU *urlp = NULL;
  CURLUcode uc = CURLUE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy_init(handle);

  urlp = curl_url();

  if(!urlp) {
Changes to jni/curl/tests/libtest/lib659.c.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 * Get a single URL without select().
 */

int test(char *URL)
{
  CURL *handle = NULL;
  CURLcode res = 0;
  CURLU *urlp = NULL;

  global_init(CURL_GLOBAL_ALL);
  easy_init(handle);

  urlp = curl_url();








|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 * Get a single URL without select().
 */

int test(char *URL)
{
  CURL *handle = NULL;
  CURLcode res = CURLE_OK;
  CURLU *urlp = NULL;

  global_init(CURL_GLOBAL_ALL);
  easy_init(handle);

  urlp = curl_url();

Changes to jni/curl/tests/libtest/lib674.c.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 * Get a single URL without select().
 */

int test(char *URL)
{
  CURL *handle = NULL;
  CURL *handle2;
  CURLcode res = 0;
  CURLU *urlp = NULL;
  CURLUcode uc = 0;

  global_init(CURL_GLOBAL_ALL);
  easy_init(handle);

  urlp = curl_url();

  if(!urlp) {







|

|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 * Get a single URL without select().
 */

int test(char *URL)
{
  CURL *handle = NULL;
  CURL *handle2;
  CURLcode res = CURLE_OK;
  CURLU *urlp = NULL;
  CURLUcode uc = CURLUE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy_init(handle);

  urlp = curl_url();

  if(!urlp) {
jni/curl/tests/libtest/mk-lib1521.pl became executable.
jni/curl/tests/manpage-scan.pl became executable.
jni/curl/tests/mem-include-scan.pl became executable.
jni/curl/tests/nroff-scan.pl became executable.
Changes to jni/curl/tests/runtests.1.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "May 17, 2022" "Curl 7.84.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







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "May 17, 2022" "Curl 7.85.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
Changes to jni/curl/tests/runtests.pl.
171
172
173
174
175
176
177
178
179
180
181


182
183
184
185
186
187
188
my %custom_skip_reasons;

my $SSHSRVMD5 = "[uninitialized]"; # MD5 of ssh server public key
my $SSHSRVSHA256 = "[uninitialized]"; # SHA256 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
                   # VCURL is handy to set to the system one when the one you
                   # just built hangs or crashes and thus prevent verification


my $DBGCURL=$CURL; #"../src/.libs/curl";  # alternative for debugging
my $LOGDIR="log";
my $TESTDIR="$srcdir/data";
my $LIBDIR="./libtest";
my $UNITDIR="./unit";
# TODO: change this to use server_inputfilename()
my $SERVERIN="$LOGDIR/server.input"; # what curl sent the server







|



>
>







171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
my %custom_skip_reasons;

my $SSHSRVMD5 = "[uninitialized]"; # MD5 of ssh server public key
my $SSHSRVSHA256 = "[uninitialized]"; # SHA256 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 binary to run on the tests
my $VCURL=$CURL;   # what curl binary to use to verify the servers with
                   # VCURL is handy to set to the system one when the one you
                   # just built hangs or crashes and thus prevent verification
my $ACURL=$VCURL;  # what curl binary to use to talk to APIs (relevant for CI)
                   # ACURL is handy to set to the system one for reliability
my $DBGCURL=$CURL; #"../src/.libs/curl";  # alternative for debugging
my $LOGDIR="log";
my $TESTDIR="$srcdir/data";
my $LIBDIR="./libtest";
my $UNITDIR="./unit";
# TODO: change this to use server_inputfilename()
my $SERVERIN="$LOGDIR/server.input"; # what curl sent the server
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
    # get the name of the test early
    my @testname= getpart("client", "name");
    my $testname = $testname[0];
    $testname =~ s/\n//g;

    # create test result in CI services
    if(azure_check_environment() && $AZURE_RUN_ID) {
        $AZURE_RESULT_ID = azure_create_test_result($VCURL, $AZURE_RUN_ID, $testnum, $testname);
    }
    elsif(appveyor_check_environment()) {
        appveyor_create_test_result($VCURL, $testnum, $testname);
    }

    # remove test server commands file before servers are started/verified
    unlink($FTPDCMD) if(-f $FTPDCMD);

    # timestamp required servers verification start
    $timesrvrini{$testnum} = Time::HiRes::time();







|


|







3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
    # get the name of the test early
    my @testname= getpart("client", "name");
    my $testname = $testname[0];
    $testname =~ s/\n//g;

    # create test result in CI services
    if(azure_check_environment() && $AZURE_RUN_ID) {
        $AZURE_RESULT_ID = azure_create_test_result($ACURL, $AZURE_RUN_ID, $testnum, $testname);
    }
    elsif(appveyor_check_environment()) {
        appveyor_create_test_result($ACURL, $testnum, $testname);
    }

    # remove test server commands file before servers are started/verified
    unlink($FTPDCMD) if(-f $FTPDCMD);

    # timestamp required servers verification start
    $timesrvrini{$testnum} = Time::HiRes::time();
5593
5594
5595
5596
5597
5598
5599





5600
5601
5602
5603
5604
5605
5606

        # Particularly useful when you introduce a crashing bug somewhere in
        # the development version as then it won't be able to run any tests
        # since it can't verify the servers!

        $VCURL="\"$ARGV[1]\"";
        shift @ARGV;





    }
    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







>
>
>
>
>







5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613

        # Particularly useful when you introduce a crashing bug somewhere in
        # the development version as then it won't be able to run any tests
        # since it can't verify the servers!

        $VCURL="\"$ARGV[1]\"";
        shift @ARGV;
    }
    elsif ($ARGV[0] eq "-ac") {
        # use this curl only to talk to APIs (currently only CI test APIs)
        $ACURL="\"$ARGV[1]\"";
        shift @ARGV;
    }
    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
5752
5753
5754
5755
5756
5757
5758

5759
5760
5761
5762
5763
5764
5765
        $err_unexpected=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
  -f       forcibly run even if disabled
  -g       run the test case with gdb







>







5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
        $err_unexpected=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
  -ac path use this curl only to talk to APIs (currently only CI test APIs)
  -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
  -f       forcibly run even if disabled
  -g       run the test case with gdb
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
}

#######################################################################
# Setup Azure Pipelines Test Run (if running in Azure DevOps)
#

if(azure_check_environment()) {
    $AZURE_RUN_ID = azure_create_test_run($VCURL);
    logmsg "Azure Run ID: $AZURE_RUN_ID\n" if ($verbose);
}

#######################################################################
# The main test-loop
#








|







6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
}

#######################################################################
# Setup Azure Pipelines Test Run (if running in Azure DevOps)
#

if(azure_check_environment()) {
    $AZURE_RUN_ID = azure_create_test_run($ACURL);
    logmsg "Azure Run ID: $AZURE_RUN_ID\n" if ($verbose);
}

#######################################################################
# The main test-loop
#

6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
    $lasttest = $testnum if($testnum > $lasttest);
    $count++;

    my $error = singletest($run_event_based, $testnum, $count, scalar(@at));

    # update test result in CI services
    if(azure_check_environment() && $AZURE_RUN_ID && $AZURE_RESULT_ID) {
        $AZURE_RESULT_ID = azure_update_test_result($VCURL, $AZURE_RUN_ID, $AZURE_RESULT_ID, $testnum, $error,
                                                    $timeprepini{$testnum}, $timevrfyend{$testnum});
    }
    elsif(appveyor_check_environment()) {
        appveyor_update_test_result($VCURL, $testnum, $error, $timeprepini{$testnum}, $timevrfyend{$testnum});
    }

    if($error < 0) {
        # not a test we can run
        next;
    }








|



|







6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
    $lasttest = $testnum if($testnum > $lasttest);
    $count++;

    my $error = singletest($run_event_based, $testnum, $count, scalar(@at));

    # update test result in CI services
    if(azure_check_environment() && $AZURE_RUN_ID && $AZURE_RESULT_ID) {
        $AZURE_RESULT_ID = azure_update_test_result($ACURL, $AZURE_RUN_ID, $AZURE_RESULT_ID, $testnum, $error,
                                                    $timeprepini{$testnum}, $timevrfyend{$testnum});
    }
    elsif(appveyor_check_environment()) {
        appveyor_update_test_result($ACURL, $testnum, $error, $timeprepini{$testnum}, $timevrfyend{$testnum});
    }

    if($error < 0) {
        # not a test we can run
        next;
    }

6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
my $sofar = time() - $start;

#######################################################################
# Finish Azure Pipelines Test Run (if running in Azure DevOps)
#

if(azure_check_environment() && $AZURE_RUN_ID) {
    $AZURE_RUN_ID = azure_update_test_run($VCURL, $AZURE_RUN_ID);
}

# Tests done, stop the servers
my $unexpected = stopservers($verbose);

my $all = $total + $skipped;








|







6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
my $sofar = time() - $start;

#######################################################################
# Finish Azure Pipelines Test Run (if running in Azure DevOps)
#

if(azure_check_environment() && $AZURE_RUN_ID) {
    $AZURE_RUN_ID = azure_update_test_run($ACURL, $AZURE_RUN_ID);
}

# Tests done, stop the servers
my $unexpected = stopservers($verbose);

my $all = $total + $skipped;

Changes to jni/curl/tests/server/Makefile.in.
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
@DOING_NATIVE_WINDOWS_TRUE@am__append_1 = -DCURL_STATICLIB
noinst_PROGRAMS = getpart$(EXEEXT) resolve$(EXEEXT) rtspd$(EXEEXT) \
	sockfilt$(EXEEXT) sws$(EXEEXT) tftpd$(EXEEXT) \
	fake_ntlm$(EXEEXT) socksd$(EXEEXT) disabled$(EXEEXT) \
	mqttd$(EXEEXT)
subdir = tests/server
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







115
116
117
118
119
120
121
122

123
124
125
126
127
128
129
@DOING_NATIVE_WINDOWS_TRUE@am__append_1 = -DCURL_STATICLIB
noinst_PROGRAMS = getpart$(EXEEXT) resolve$(EXEEXT) rtspd$(EXEEXT) \
	sockfilt$(EXEEXT) sws$(EXEEXT) tftpd$(EXEEXT) \
	fake_ntlm$(EXEEXT) socksd$(EXEEXT) disabled$(EXEEXT) \
	mqttd$(EXEEXT)
subdir = tests/server
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
671
672
673
674
675
676
677

678
679
680
681
682
683
684
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
jni/curl/tests/server/base64.pl became executable.
Changes to jni/curl/tests/server/sockfilt.c.
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
 *
 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms687028.aspx
 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms741572.aspx
 */
struct select_ws_wait_data {
  HANDLE handle; /* actual handle to wait for during select */
  HANDLE signal; /* internal event to signal handle trigger */
  HANDLE abort;  /* internal event to abort waiting thread */
  HANDLE mutex;  /* mutex to prevent event race-condition */
};
static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
{
  struct select_ws_wait_data *data;
  HANDLE mutex, signal, handle, handles[2];
  INPUT_RECORD inputrecord;
  LARGE_INTEGER size, pos;
  DWORD type, length, ret;

  /* retrieve handles from internal structure */
  data = (struct select_ws_wait_data *) lpParameter;
  if(data) {
    handle = data->handle;
    handles[0] = data->abort;
    handles[1] = handle;
    signal = data->signal;
    mutex = data->mutex;
    free(data);
  }
  else
    return (DWORD)-1;

  /* retrieve the type of file to wait on */
  type = GetFileType(handle);
  switch(type) {
    case FILE_TYPE_DISK:
       /* The handle represents a file on disk, this means:
        * - WaitForMultipleObjectsEx will always be signalled for it.
        * - comparison of current position in file and total size of
        *   the file can be used to check if we reached the end yet.
        *
        * Approach: Loop till either the internal event is signalled
        *           or if the end of the file has already been reached.
        */
      while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
            == WAIT_TIMEOUT) {
        ret = WaitForSingleObjectEx(mutex, 0, FALSE);
        if(ret == WAIT_OBJECT_0) {
          /* get total size of file */
          length = 0;
          size.QuadPart = 0;
          size.LowPart = GetFileSize(handle, &length);
          if((size.LowPart != INVALID_FILE_SIZE) ||
             (GetLastError() == NO_ERROR)) {
            size.HighPart = length;
            /* get the current position within the file */
            pos.QuadPart = 0;
            pos.LowPart = SetFilePointer(handle, 0, &pos.HighPart,
                                        FILE_CURRENT);
            if((pos.LowPart != INVALID_SET_FILE_POINTER) ||
               (GetLastError() == NO_ERROR)) {
              /* compare position with size, abort if not equal */
              if(size.QuadPart == pos.QuadPart) {
                /* sleep and continue waiting */
                SleepEx(0, FALSE);
                ReleaseMutex(mutex);
                continue;
              }
            }
          }
          /* there is some data available, stop waiting */
          logmsg("[select_ws_wait_thread] data available, DISK: %p", handle);
          SetEvent(signal);
          ReleaseMutex(mutex);
          break;
        }
        else if(ret == WAIT_ABANDONED) {
          /* we are not allowed to process this event, because select_ws
             is post-processing the signalled events and we must exit. */
          break;
        }
      }
      break;

    case FILE_TYPE_CHAR:
       /* The handle represents a character input, this means:
        * - WaitForMultipleObjectsEx will be signalled on any kind of input,
        *   including mouse and window size events we do not care about.
        *
        * Approach: Loop till either the internal event is signalled
        *           or we get signalled for an actual key-event.
        */
      while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
            == WAIT_OBJECT_0 + 1) {
        ret = WaitForSingleObjectEx(mutex, 0, FALSE);
        if(ret == WAIT_OBJECT_0) {
          /* check if this is an actual console handle */
          if(GetConsoleMode(handle, &ret)) {
            /* retrieve an event from the console buffer */
            length = 0;
            if(PeekConsoleInput(handle, &inputrecord, 1, &length)) {
              /* check if the event is not an actual key-event */
              if(length == 1 && inputrecord.EventType != KEY_EVENT) {
                /* purge the non-key-event and continue waiting */
                ReadConsoleInput(handle, &inputrecord, 1, &length);
                ReleaseMutex(mutex);
                continue;
              }
            }
          }
          /* there is some data available, stop waiting */
          logmsg("[select_ws_wait_thread] data available, CHAR: %p", handle);
          SetEvent(signal);
          ReleaseMutex(mutex);
          break;
        }
        else if(ret == WAIT_ABANDONED) {
          /* we are not allowed to process this event, because select_ws
             is post-processing the signalled events and we must exit. */
          break;
        }
      }
      break;

    case FILE_TYPE_PIPE:
       /* The handle represents an anonymous or named pipe, this means:
        * - WaitForMultipleObjectsEx will always be signalled for it.
        * - peek into the pipe and retrieve the amount of data available.
        *
        * Approach: Loop till either the internal event is signalled
        *           or there is data in the pipe available for reading.
        */
      while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
            == WAIT_TIMEOUT) {
        ret = WaitForSingleObjectEx(mutex, 0, FALSE);
        if(ret == WAIT_OBJECT_0) {
          /* peek into the pipe and retrieve the amount of data available */
          length = 0;
          if(PeekNamedPipe(handle, NULL, 0, NULL, &length, NULL)) {
            /* if there is no data available, sleep and continue waiting */
            if(length == 0) {
              SleepEx(0, FALSE);
              ReleaseMutex(mutex);
              continue;
            }
            else {
              logmsg("[select_ws_wait_thread] PeekNamedPipe len: %d", length);
            }
          }
          else {
            /* if the pipe has NOT been closed, sleep and continue waiting */
            ret = GetLastError();
            if(ret != ERROR_BROKEN_PIPE) {
              logmsg("[select_ws_wait_thread] PeekNamedPipe error: %d", ret);
              SleepEx(0, FALSE);
              ReleaseMutex(mutex);
              continue;
            }
            else {
              logmsg("[select_ws_wait_thread] pipe closed, PIPE: %p", handle);
            }
          }
          /* there is some data available, stop waiting */
          logmsg("[select_ws_wait_thread] data available, PIPE: %p", handle);
          SetEvent(signal);
          ReleaseMutex(mutex);
          break;
        }
        else if(ret == WAIT_ABANDONED) {
          /* we are not allowed to process this event, because select_ws
             is post-processing the signalled events and we must exit. */
          break;
        }
      }
      break;

    default:
      /* The handle has an unknown type, try to wait on it */
      if(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
         == WAIT_OBJECT_0 + 1) {
        if(WaitForSingleObjectEx(mutex, 0, FALSE) == WAIT_OBJECT_0) {
          logmsg("[select_ws_wait_thread] data available, HANDLE: %p", handle);
          SetEvent(signal);
          ReleaseMutex(mutex);
        }
      }
      break;
  }

  return 0;
}
static HANDLE select_ws_wait(HANDLE handle, HANDLE signal,
                             HANDLE abort, HANDLE mutex)
{
  struct select_ws_wait_data *data;
  HANDLE thread = NULL;

  /* allocate internal waiting data structure */
  data = malloc(sizeof(struct select_ws_wait_data));
  if(data) {
    data->handle = handle;
    data->signal = signal;
    data->abort = abort;
    data->mutex = mutex;

    /* launch waiting thread */
    thread = CreateThread(NULL, 0,
                          &select_ws_wait_thread,
                          data, 0, NULL);

    /* free data if thread failed to launch */







|
<




|











<



















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













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













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







<
|
|
<
<






|
<










<







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
 *
 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms687028.aspx
 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms741572.aspx
 */
struct select_ws_wait_data {
  HANDLE handle; /* actual handle to wait for during select */
  HANDLE signal; /* internal event to signal handle trigger */
  HANDLE abort;  /* internal event to abort waiting threads */

};
static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
{
  struct select_ws_wait_data *data;
  HANDLE signal, handle, handles[2];
  INPUT_RECORD inputrecord;
  LARGE_INTEGER size, pos;
  DWORD type, length, ret;

  /* retrieve handles from internal structure */
  data = (struct select_ws_wait_data *) lpParameter;
  if(data) {
    handle = data->handle;
    handles[0] = data->abort;
    handles[1] = handle;
    signal = data->signal;

    free(data);
  }
  else
    return (DWORD)-1;

  /* retrieve the type of file to wait on */
  type = GetFileType(handle);
  switch(type) {
    case FILE_TYPE_DISK:
       /* The handle represents a file on disk, this means:
        * - WaitForMultipleObjectsEx will always be signalled for it.
        * - comparison of current position in file and total size of
        *   the file can be used to check if we reached the end yet.
        *
        * Approach: Loop till either the internal event is signalled
        *           or if the end of the file has already been reached.
        */
      while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
            == WAIT_TIMEOUT) {


        /* get total size of file */
        length = 0;
        size.QuadPart = 0;
        size.LowPart = GetFileSize(handle, &length);
        if((size.LowPart != INVALID_FILE_SIZE) ||
            (GetLastError() == NO_ERROR)) {
          size.HighPart = length;
          /* get the current position within the file */
          pos.QuadPart = 0;
          pos.LowPart = SetFilePointer(handle, 0, &pos.HighPart, FILE_CURRENT);

          if((pos.LowPart != INVALID_SET_FILE_POINTER) ||
              (GetLastError() == NO_ERROR)) {
            /* compare position with size, abort if not equal */
            if(size.QuadPart == pos.QuadPart) {
              /* sleep and continue waiting */
              SleepEx(0, FALSE);

              continue;
            }
          }
        }
        /* there is some data available, stop waiting */
        logmsg("[select_ws_wait_thread] data available, DISK: %p", handle);
        SetEvent(signal);








      }
      break;

    case FILE_TYPE_CHAR:
       /* The handle represents a character input, this means:
        * - WaitForMultipleObjectsEx will be signalled on any kind of input,
        *   including mouse and window size events we do not care about.
        *
        * Approach: Loop till either the internal event is signalled
        *           or we get signalled for an actual key-event.
        */
      while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
            == WAIT_OBJECT_0 + 1) {


        /* check if this is an actual console handle */
        if(GetConsoleMode(handle, &ret)) {
          /* retrieve an event from the console buffer */
          length = 0;
          if(PeekConsoleInput(handle, &inputrecord, 1, &length)) {
            /* check if the event is not an actual key-event */
            if(length == 1 && inputrecord.EventType != KEY_EVENT) {
              /* purge the non-key-event and continue waiting */
              ReadConsoleInput(handle, &inputrecord, 1, &length);

              continue;
            }
          }
        }
        /* there is some data available, stop waiting */
        logmsg("[select_ws_wait_thread] data available, CHAR: %p", handle);
        SetEvent(signal);








      }
      break;

    case FILE_TYPE_PIPE:
       /* The handle represents an anonymous or named pipe, this means:
        * - WaitForMultipleObjectsEx will always be signalled for it.
        * - peek into the pipe and retrieve the amount of data available.
        *
        * Approach: Loop till either the internal event is signalled
        *           or there is data in the pipe available for reading.
        */
      while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
            == WAIT_TIMEOUT) {


        /* peek into the pipe and retrieve the amount of data available */
        length = 0;
        if(PeekNamedPipe(handle, NULL, 0, NULL, &length, NULL)) {
          /* if there is no data available, sleep and continue waiting */
          if(length == 0) {
            SleepEx(0, FALSE);

            continue;
          }
          else {
            logmsg("[select_ws_wait_thread] PeekNamedPipe len: %d", length);
          }
        }
        else {
          /* if the pipe has NOT been closed, sleep and continue waiting */
          ret = GetLastError();
          if(ret != ERROR_BROKEN_PIPE) {
            logmsg("[select_ws_wait_thread] PeekNamedPipe error: %d", ret);
            SleepEx(0, FALSE);

            continue;
          }
          else {
            logmsg("[select_ws_wait_thread] pipe closed, PIPE: %p", handle);
          }
        }
        /* there is some data available, stop waiting */
        logmsg("[select_ws_wait_thread] data available, PIPE: %p", handle);
        SetEvent(signal);








      }
      break;

    default:
      /* The handle has an unknown type, try to wait on it */
      if(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
         == WAIT_OBJECT_0 + 1) {

        logmsg("[select_ws_wait_thread] data available, HANDLE: %p", handle);
        SetEvent(signal);


      }
      break;
  }

  return 0;
}
static HANDLE select_ws_wait(HANDLE handle, HANDLE signal, HANDLE abort)

{
  struct select_ws_wait_data *data;
  HANDLE thread = NULL;

  /* allocate internal waiting data structure */
  data = malloc(sizeof(struct select_ws_wait_data));
  if(data) {
    data->handle = handle;
    data->signal = signal;
    data->abort = abort;


    /* launch waiting thread */
    thread = CreateThread(NULL, 0,
                          &select_ws_wait_thread,
                          data, 0, NULL);

    /* free data if thread failed to launch */
621
622
623
624
625
626
627
628
629

630
631
632
633
634
635
636
  WSAEVENT wsaevent;     /* internal select event     (indexed by nws) */
  HANDLE signal;         /* internal thread signal    (indexed by nth) */
  HANDLE thread;         /* internal thread handle    (indexed by nth) */
};
static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
                     fd_set *exceptfds, struct timeval *tv)
{
  HANDLE abort, mutex, signal, handle, *handles;
  DWORD timeout_ms, wait, nfd, nth, nws, i;

  fd_set readsock, writesock, exceptsock;
  struct select_ws_data *data;
  WSANETWORKEVENTS wsaevents;
  curl_socket_t wsasock;
  int error, ret, fd;
  WSAEVENT wsaevent;








<

>







579
580
581
582
583
584
585

586
587
588
589
590
591
592
593
594
  WSAEVENT wsaevent;     /* internal select event     (indexed by nws) */
  HANDLE signal;         /* internal thread signal    (indexed by nth) */
  HANDLE thread;         /* internal thread handle    (indexed by nth) */
};
static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
                     fd_set *exceptfds, struct timeval *tv)
{

  DWORD timeout_ms, wait, nfd, nth, nws, i;
  HANDLE abort, signal, handle, *handles;
  fd_set readsock, writesock, exceptsock;
  struct select_ws_data *data;
  WSANETWORKEVENTS wsaevents;
  curl_socket_t wsasock;
  int error, ret, fd;
  WSAEVENT wsaevent;

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
  /* create internal event to abort waiting threads */
  abort = CreateEvent(NULL, TRUE, FALSE, NULL);
  if(!abort) {
    errno = ENOMEM;
    return -1;
  }

  /* create internal mutex to lock event handling in threads */
  mutex = CreateMutex(NULL, FALSE, NULL);
  if(!mutex) {
    CloseHandle(abort);
    errno = ENOMEM;
    return -1;
  }

  /* allocate internal array for the internal data */
  data = calloc(nfds, sizeof(struct select_ws_data));
  if(!data) {
    CloseHandle(abort);
    CloseHandle(mutex);
    errno = ENOMEM;
    return -1;
  }

  /* allocate internal array for the internal event handles */
  handles = calloc(nfds + 1, sizeof(HANDLE));
  if(!handles) {
    CloseHandle(abort);
    CloseHandle(mutex);
    free(data);
    errno = ENOMEM;
    return -1;
  }

  /* loop over the handles in the input descriptor sets */
  nfd = 0; /* number of handled file descriptors */







<
<
<
<
<
<
<
<




<








<







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
  /* create internal event to abort waiting threads */
  abort = CreateEvent(NULL, TRUE, FALSE, NULL);
  if(!abort) {
    errno = ENOMEM;
    return -1;
  }









  /* allocate internal array for the internal data */
  data = calloc(nfds, sizeof(struct select_ws_data));
  if(!data) {
    CloseHandle(abort);

    errno = ENOMEM;
    return -1;
  }

  /* allocate internal array for the internal event handles */
  handles = calloc(nfds + 1, sizeof(HANDLE));
  if(!handles) {
    CloseHandle(abort);

    free(data);
    errno = ENOMEM;
    return -1;
  }

  /* loop over the handles in the input descriptor sets */
  nfd = 0; /* number of handled file descriptors */
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
    /* only wait for events for which we actually care */
    if(wsaevents.lNetworkEvents) {
      data[nfd].fd = fd;
      if(fd == fileno(stdin)) {
        signal = CreateEvent(NULL, TRUE, FALSE, NULL);
        if(signal) {
          handle = GetStdHandle(STD_INPUT_HANDLE);
          handle = select_ws_wait(handle, signal, abort, mutex);
          if(handle) {
            handles[nfd] = signal;
            data[nth].signal = signal;
            data[nth].thread = handle;
            nfd++;
            nth++;
          }







|







667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
    /* only wait for events for which we actually care */
    if(wsaevents.lNetworkEvents) {
      data[nfd].fd = fd;
      if(fd == fileno(stdin)) {
        signal = CreateEvent(NULL, TRUE, FALSE, NULL);
        if(signal) {
          handle = GetStdHandle(STD_INPUT_HANDLE);
          handle = select_ws_wait(handle, signal, abort);
          if(handle) {
            handles[nfd] = signal;
            data[nth].signal = signal;
            data[nth].thread = handle;
            nfd++;
            nth++;
          }
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
            nws++;
          }
          else {
            WSACloseEvent(wsaevent);
            signal = CreateEvent(NULL, TRUE, FALSE, NULL);
            if(signal) {
              handle = (HANDLE)wsasock;
              handle = select_ws_wait(handle, signal, abort, mutex);
              if(handle) {
                handles[nfd] = signal;
                data[nth].signal = signal;
                data[nth].thread = handle;
                nfd++;
                nth++;
              }







|







721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
            nws++;
          }
          else {
            WSACloseEvent(wsaevent);
            signal = CreateEvent(NULL, TRUE, FALSE, NULL);
            if(signal) {
              handle = (HANDLE)wsasock;
              handle = select_ws_wait(handle, signal, abort);
              if(handle) {
                handles[nfd] = signal;
                data[nth].signal = signal;
                data[nth].thread = handle;
                nfd++;
                nth++;
              }
804
805
806
807
808
809
810
811


812


813
814
815
816
817
818
819
    handles[nfd] = exit_event;
    wait += 1;
  }

  /* wait for one of the internal handles to trigger */
  wait = WaitForMultipleObjectsEx(wait, handles, FALSE, timeout_ms, FALSE);

  /* wait for internal mutex to lock event handling in threads */


  WaitForSingleObjectEx(mutex, INFINITE, FALSE);



  /* loop over the internal handles returned in the descriptors */
  ret = 0; /* number of ready file descriptors */
  for(i = 0; i < nfd; i++) {
    fd = data[i].fd;
    handle = handles[i];
    wsasock = curlx_sitosk(fd);







|
>
>
|
>
>







752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
    handles[nfd] = exit_event;
    wait += 1;
  }

  /* wait for one of the internal handles to trigger */
  wait = WaitForMultipleObjectsEx(wait, handles, FALSE, timeout_ms, FALSE);

  /* signal the abort event handle and join the other waiting threads */
  SetEvent(abort);
  for(i = 0; i < nth; i++) {
    WaitForSingleObjectEx(data[i].thread, INFINITE, FALSE);
    CloseHandle(data[i].thread);
  }

  /* loop over the internal handles returned in the descriptors */
  ret = 0; /* number of ready file descriptors */
  for(i = 0; i < nfd; i++) {
    fd = data[i].fd;
    handle = handles[i];
    wsasock = curlx_sitosk(fd);
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
      /* remove from all descriptor sets since this handle did not trigger */
      FD_CLR(wsasock, readfds);
      FD_CLR(wsasock, writefds);
      FD_CLR(wsasock, exceptfds);
    }
  }

  /* signal the event handle for the other waiting threads */
  SetEvent(abort);

  for(fd = 0; fd < nfds; fd++) {
    if(FD_ISSET(fd, readfds))
      logmsg("[select_ws] %d is readable", fd);
    if(FD_ISSET(fd, writefds))
      logmsg("[select_ws] %d is writable", fd);
    if(FD_ISSET(fd, exceptfds))
      logmsg("[select_ws] %d is exceptional", fd);
  }

  for(i = 0; i < nws; i++) {
    WSAEventSelect(data[i].wsasock, NULL, 0);
    WSACloseEvent(data[i].wsaevent);
  }

  for(i = 0; i < nth; i++) {
    WaitForSingleObjectEx(data[i].thread, INFINITE, FALSE);
    CloseHandle(data[i].thread);
    CloseHandle(data[i].signal);
  }

  CloseHandle(abort);
  CloseHandle(mutex);

  free(handles);
  free(data);

  return ret;
}
#define select(a,b,c,d,e) select_ws(a,b,c,d,e)







<
<
<















<
<


<

<







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
      /* remove from all descriptor sets since this handle did not trigger */
      FD_CLR(wsasock, readfds);
      FD_CLR(wsasock, writefds);
      FD_CLR(wsasock, exceptfds);
    }
  }




  for(fd = 0; fd < nfds; fd++) {
    if(FD_ISSET(fd, readfds))
      logmsg("[select_ws] %d is readable", fd);
    if(FD_ISSET(fd, writefds))
      logmsg("[select_ws] %d is writable", fd);
    if(FD_ISSET(fd, exceptfds))
      logmsg("[select_ws] %d is exceptional", fd);
  }

  for(i = 0; i < nws; i++) {
    WSAEventSelect(data[i].wsasock, NULL, 0);
    WSACloseEvent(data[i].wsaevent);
  }

  for(i = 0; i < nth; i++) {


    CloseHandle(data[i].signal);
  }

  CloseHandle(abort);


  free(handles);
  free(data);

  return ret;
}
#define select(a,b,c,d,e) select_ws(a,b,c,d,e)
jni/curl/tests/sshserver.pl became a regular file.
jni/curl/tests/symbol-scan.pl became executable.
Changes to jni/curl/tests/testcurl.1.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "May 17, 2022" "Curl 7.84.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







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" * SPDX-License-Identifier: curl
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "May 17, 2022" "Curl 7.85.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.
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@BUILD_UNITTESTS_TRUE@noinst_PROGRAMS = $(am__EXEEXT_1)
subdir = tests/unit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-amissl.m4 \
	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|
<







113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@BUILD_UNITTESTS_TRUE@noinst_PROGRAMS = $(am__EXEEXT_1)
subdir = tests/unit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \

	$(top_srcdir)/m4/curl-bearssl.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-gnutls.m4 \
	$(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
719
720
721
722
723
724
725

726
727
728
729
730
731
732
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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@







>







718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
USE_MBEDTLS = @USE_MBEDTLS@
USE_MSH3 = @USE_MSH3@
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_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
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@
Changes to jni/curl/tests/unit/unit1302.c.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "curl_base64.h"
#include "memdebug.h" /* LAST include file */

static struct Curl_easy *data;

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "curl_base64.h"
#include "memdebug.h" /* LAST include file */

static struct Curl_easy *data;

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }
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
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 8, "size should be 8");
verify_memory(output, "/wH+Ag==", 8);
Curl_safefree(output);

rc = Curl_base64url_encode("\xff\x01\xfe\x02", 4, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 8, "size should be 8");
verify_memory(output, "_wH-Ag==", 8);
Curl_safefree(output);

rc = Curl_base64url_encode("iiii", 4, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 8, "size should be 8");
verify_memory(output, "aWlpaQ==", 8);
Curl_safefree(output);

/* 0 length makes it do strlen() */
rc = Curl_base64_encode("iiii", 0, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 8, "size should be 8");
verify_memory(output, "aWlpaQ==", 8);
Curl_safefree(output);













rc = Curl_base64_decode("aWlpaQ==", &decoded, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 4, "size should be 4");
verify_memory(decoded, "iiii", 4);
Curl_safefree(decoded);








|
|




|
|








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







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
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 8, "size should be 8");
verify_memory(output, "/wH+Ag==", 8);
Curl_safefree(output);

rc = Curl_base64url_encode("\xff\x01\xfe\x02", 4, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 6, "size should be 6");
verify_memory(output, "_wH-Ag", 6);
Curl_safefree(output);

rc = Curl_base64url_encode("iiii", 4, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 6, "size should be 6");
verify_memory(output, "aWlpaQ", 6);
Curl_safefree(output);

/* 0 length makes it do strlen() */
rc = Curl_base64_encode("iiii", 0, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 8, "size should be 8");
verify_memory(output, "aWlpaQ==", 8);
Curl_safefree(output);

rc = Curl_base64_encode("", 0, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 0, "size should be 0");
fail_unless(output && !output[0], "output should be a zero-length string");
Curl_safefree(output);

rc = Curl_base64url_encode("", 0, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 0, "size should be 0");
fail_unless(output && !output[0], "output should be a zero-length string");
Curl_safefree(output);

rc = Curl_base64_decode("aWlpaQ==", &decoded, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 4, "size should be 4");
verify_memory(decoded, "iiii", 4);
Curl_safefree(decoded);

Changes to jni/curl/tests/unit/unit1303.c.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "connect.h"
#include "memdebug.h" /* LAST include file */

static struct Curl_easy *data;

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "connect.h"
#include "memdebug.h" /* LAST include file */

static struct Curl_easy *data;

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
  /* no connect timeout set, not connecting */
  {BASE + 4, 0,      10000, 0, FALSE, 6000, "6 seconds should be left"},
  {BASE + 4, 990000, 10000, 0, FALSE, 5010, "5010 ms should be left"},
  {BASE + 10, 0,     10000, 0, FALSE, -1,   "timeout is -1, expired"},
  {BASE + 12, 0,     10000, 0, FALSE, -2000, "-2000, overdue 2 seconds"},

  /* no connect timeout set, connecting */
  {BASE + 4, 0,      10000, 0, FALSE, 6000, "6 seconds should be left"},
  {BASE + 4, 990000, 10000, 0, FALSE, 5010, "5010 ms should be left"},
  {BASE + 10, 0,     10000, 0, FALSE, -1,   "timeout is -1, expired"},
  {BASE + 12, 0,     10000, 0, FALSE, -2000, "-2000, overdue 2 seconds"},

  /* only connect timeout set, not connecting */
  {BASE + 4, 0,      0, 10000, FALSE, 0, "no timeout active"},
  {BASE + 4, 990000, 0, 10000, FALSE, 0, "no timeout active"},
  {BASE + 10, 0,     0, 10000, FALSE, 0, "no timeout active"},
  {BASE + 12, 0,     0, 10000, FALSE, 0, "no timeout active"},








|
|
|
|







97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
  /* no connect timeout set, not connecting */
  {BASE + 4, 0,      10000, 0, FALSE, 6000, "6 seconds should be left"},
  {BASE + 4, 990000, 10000, 0, FALSE, 5010, "5010 ms should be left"},
  {BASE + 10, 0,     10000, 0, FALSE, -1,   "timeout is -1, expired"},
  {BASE + 12, 0,     10000, 0, FALSE, -2000, "-2000, overdue 2 seconds"},

  /* no connect timeout set, connecting */
  {BASE + 4, 0,      10000, 0, TRUE, 6000, "6 seconds should be left"},
  {BASE + 4, 990000, 10000, 0, TRUE, 5010, "5010 ms should be left"},
  {BASE + 10, 0,     10000, 0, TRUE, -1,   "timeout is -1, expired"},
  {BASE + 12, 0,     10000, 0, TRUE, -2000, "-2000, overdue 2 seconds"},

  /* only connect timeout set, not connecting */
  {BASE + 4, 0,      0, 10000, FALSE, 0, "no timeout active"},
  {BASE + 4, 990000, 0, 10000, FALSE, 0, "no timeout active"},
  {BASE + 10, 0,     0, 10000, FALSE, 0, "no timeout active"},
  {BASE + 12, 0,     0, 10000, FALSE, 0, "no timeout active"},

Changes to jni/curl/tests/unit/unit1305.c.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }

  Curl_init_dnscache(&hp);
  return CURLE_OK;
}

static void unit_stop(void)
{
  if(data_node) {
    Curl_freeaddrinfo(data_node->addr);







|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }

  Curl_init_dnscache(&hp, 7);
  return CURLE_OK;
}

static void unit_stop(void)
{
  if(data_node) {
    Curl_freeaddrinfo(data_node->addr);
Changes to jni/curl/tests/unit/unit1396.c.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 ***************************************************************************/
#include "curlcheck.h"

static CURL *hnd;

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  return res;
}

static void unit_stop(void)
{







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 ***************************************************************************/
#include "curlcheck.h"

static CURL *hnd;

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  return res;
}

static void unit_stop(void)
{
Changes to jni/curl/tests/unit/unit1600.c.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "urldata.h"
#include "curl_ntlm_core.h"

static CURL *easy;

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "urldata.h"
#include "curl_ntlm_core.h"

static CURL *easy;

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }
Changes to jni/curl/tests/unit/unit1605.c.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

#include "llist.h"

static CURL *easy;

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

#include "llist.h"

static CURL *easy;

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }
Changes to jni/curl/tests/unit/unit1606.c.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "speedcheck.h"
#include "urldata.h"

static CURL *easy;

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "speedcheck.h"
#include "urldata.h"

static CURL *easy;

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  easy = curl_easy_init();
  if(!easy) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }
Changes to jni/curl/tests/unit/unit1607.c.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
static void unit_stop(void)
{
  curl_global_cleanup();
}

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  return res;
}

struct testcase {







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
static void unit_stop(void)
{
  curl_global_cleanup();
}

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  return res;
}

struct testcase {
Changes to jni/curl/tests/unit/unit1609.c.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
static void unit_stop(void)
{
  curl_global_cleanup();
}

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  return res;
}

struct testcase {







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
static void unit_stop(void)
{
  curl_global_cleanup();
}

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);

  return res;
}

struct testcase {
Changes to jni/curl/tests/unit/unit1610.c.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 ***************************************************************************/
#include "curlcheck.h"

#include "curl_sha256.h"

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;
  global_init(CURL_GLOBAL_ALL);
  return res;
}

static void unit_stop(void)
{
  curl_global_cleanup();







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 ***************************************************************************/
#include "curlcheck.h"

#include "curl_sha256.h"

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;
  global_init(CURL_GLOBAL_ALL);
  return res;
}

static void unit_stop(void)
{
  curl_global_cleanup();
Changes to jni/curl/tests/unit/unit1620.c.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "urldata.h"
#include "url.h"

#include "memdebug.h" /* LAST include file */

static CURLcode unit_setup(void)
{
  int res = CURLE_OK;
  global_init(CURL_GLOBAL_ALL);
  return res;
}

static void unit_stop(void)
{
  curl_global_cleanup();







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "urldata.h"
#include "url.h"

#include "memdebug.h" /* LAST include file */

static CURLcode unit_setup(void)
{
  CURLcode res = CURLE_OK;
  global_init(CURL_GLOBAL_ALL);
  return res;
}

static void unit_stop(void)
{
  curl_global_cleanup();
Changes to jni/curl/tests/unit/unit1652.c.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  memcpy(result, buf, size);
  return 0;
}

static CURLcode
unit_setup(void)
{
  int res = 0;

  global_init(CURL_GLOBAL_ALL);
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }
  curl_easy_setopt(data, CURLOPT_DEBUGFUNCTION, debugf_cb);
  curl_easy_setopt(data, CURLOPT_VERBOSE, 1L);
  return CURLE_OK;
}

static void
unit_stop(void)
{
  curl_easy_cleanup(data);
  curl_global_cleanup();







|









|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  memcpy(result, buf, size);
  return 0;
}

static CURLcode
unit_setup(void)
{
  CURLcode res = CURLE_OK;

  global_init(CURL_GLOBAL_ALL);
  data = curl_easy_init();
  if(!data) {
    curl_global_cleanup();
    return CURLE_OUT_OF_MEMORY;
  }
  curl_easy_setopt(data, CURLOPT_DEBUGFUNCTION, debugf_cb);
  curl_easy_setopt(data, CURLOPT_VERBOSE, 1L);
  return res;
}

static void
unit_stop(void)
{
  curl_easy_cleanup(data);
  curl_global_cleanup();
Changes to jni/curl/tests/unit/unit1660.c.
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
  { "example.net", "forexample.net",
    "max-age=\"31536000\"; includeSubDomains\r\n", CURLE_OK },
  /* remove example.net again */
  { "example.net", NULL, "max-age=\"0\"; includeSubDomains\r\n", CURLE_OK },

  /* make this live for 7 seconds */
  { "expire.example", NULL, "max-age=\"7\"\r\n", CURLE_OK },
  { NULL, NULL, NULL, 0 }
};

static void showsts(struct stsentry *e, const char *chost)
{
  if(!e)
    printf("'%s' is not HSTS\n", chost);
  else {







|







99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
  { "example.net", "forexample.net",
    "max-age=\"31536000\"; includeSubDomains\r\n", CURLE_OK },
  /* remove example.net again */
  { "example.net", NULL, "max-age=\"0\"; includeSubDomains\r\n", CURLE_OK },

  /* make this live for 7 seconds */
  { "expire.example", NULL, "max-age=\"7\"\r\n", CURLE_OK },
  { NULL, NULL, NULL, CURLE_OK }
};

static void showsts(struct stsentry *e, const char *chost)
{
  if(!e)
    printf("'%s' is not HSTS\n", chost);
  else {