Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | update curl to version 7.65.0 |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
64dd8bc483b134f2c738287e38dc7c38 |
User & Date: | chw 2019-05-24 22:16:39.850 |
Context
2019-05-25
| ||
03:43 | add tk upstream changes check-in: a6dff1b79a user: chw tags: trunk | |
2019-05-24
| ||
22:18 | merge with trunk check-in: 71cc564ed0 user: chw tags: wtf-8-experiment | |
22:16 | update curl to version 7.65.0 check-in: 64dd8bc483 user: chw tags: trunk | |
18:46 | update libressl to version 2.9.2 check-in: 344943e84b user: chw tags: trunk | |
Changes
Changes to jni/curl/CHANGES.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| Changelog Version 7.64.1 (27 Mar 2019) Daniel Stenberg (27 Mar 2019) - RELEASE: 7.64.1 - Revert "ntlm: remove USE_WIN32_CRYPTO check to get USE_NTLM2SESSION set" | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| Changelog Version 7.65.0 (22 May 2019) Daniel Stenberg (22 May 2019) - RELEASE-NOTES: 7.65.0 release - THANKS: from the 7.65.0 release-notes - url: convert the zone id from a IPv6 URL to correct scope id Reported-by: GitYuanQu on github Fixes #3902 Closes #3914 - configure: detect getsockname and getpeername on windows too Made detection macros for these two functions in the same style as other functions possibly in winsock in the hope this will work better to detect these functions when cross-compiling for Windows. Follow-up to e91e4816123 Fixes #3913 Closes #3915 Marcel Raad (21 May 2019) - examples: remove unused variables Fixes Codacy/CppCheck warnings. Closes Daniel Gustafsson (21 May 2019) - udpateconninfo: mark variable unused When compiling without getpeername() or getsockname(), the sockfd paramter to Curl_udpateconninfo() became unused after commit e91e481612 added ifdef guards. Closes #3910 Fixes https://curl.haxx.se/dev/log.cgi?id=20190520172441-32196 Reviewed-by: Marcel Raad, Daniel Stenberg - ftp: move ftp_ccc in under featureflag Commit e91e48161235272ff485ff32bd048c53af731f43 moved ftp_ccc in under the FTP featureflag in the UserDefined struct, but vtls callsites were still using it unprotected. Closes #3912 Fixes: https://curl.haxx.se/dev/log.cgi?id=20190520044705-29865 Reviewed-by: Daniel Stenberg, Marcel Raad Daniel Stenberg (20 May 2019) - curl: report error for "--no-" on non-boolean options Reported-by: Olen Andoni Fixes #3906 Closes #3907 - [Guy Poizat brought this change] mbedtls: enable use of EC keys Closes #3892 - lib1560: add tests for parsing URL with too long scheme Ref: #3905 - [Omar Ramadan brought this change] urlapi: increase supported scheme length to 40 bytes The longest currently registered URI scheme at IANA is 36 bytes long. Closes #3905 Closes #3900 Marcel Raad (20 May 2019) - lib: reduce variable scopes Fixes Codacy/CppCheck warnings. Closes https://github.com/curl/curl/pull/3872 - tool_formparse: remove redundant assignment Just initialize word_begin with the correct value. Closes https://github.com/curl/curl/pull/3873 - ssh: move variable declaration to where it's used This way, we need only one call to free. Closes https://github.com/curl/curl/pull/3873 - ssh-libssh: remove unused variable sock was only used to be assigned to fd_read. Closes https://github.com/curl/curl/pull/3873 Daniel Stenberg (20 May 2019) - test332: verify the blksize fix - tftp: use the current blksize for recvfrom() bug: https://curl.haxx.se/docs/CVE-2019-5436.html Reported-by: l00p3r on hackerone CVE-2019-5436 Daniel Gustafsson (19 May 2019) - version: make ssl_version buffer match for multi_ssl When running a multi TLS backend build the version string needs more buffer space. Make the internal ssl_buffer stack buffer match the one in Curl_multissl_version() to allow for the longer string. For single TLS backend builds there is no use in extended to buffer. This is a fallout from #3863 which fixes up the multi_ssl string generation to avoid a buffer overflow when the buffer is too small. Closes #3875 Reviewed-by: Daniel Stenberg <daniel@haxx.se> Steve Holme (18 May 2019) - http_ntlm_wb: Handle auth for only a single request Currently when the server responds with 401 on NTLM authenticated connection (re-used) we consider it to have failed. However this is legitimate and may happen when for example IIS is set configured to 'authPersistSingleRequest' or when the request goes thru a proxy (with 'via' header). Implemented by imploying an additional state once a connection is re-used to indicate that if we receive 401 we need to restart authentication. Missed in fe6049f0. - http_ntlm_wb: Cleanup handshake after clean NTLM failure Missed in 50b87c4e. - http_ntlm_wb: Return the correct error on receiving an empty auth message Missed in fe20826b as it wasn't implemented in http.c in b4d6db83. Closes #3894 Daniel Stenberg (18 May 2019) - curl: make code work with protocol-disabled libcurl Closes #3844 - libcurl: #ifdef away more code for disabled features/protocols - progress: CURL_DISABLE_PROGRESS_METER - hostip: CURL_DISABLE_SHUFFLE_DNS - netrc: CURL_DISABLE_NETRC Viktor Szakats (16 May 2019) - docs: Markdown and misc improvements [ci skip] Approved-by: Daniel Stenberg Closes #3896 - docs/RELEASE-PROCEDURE: link to live iCalendar [ci skip] Ref: https://github.com/curl/curl/commit/0af41b40b2c7bd379b2251cbe7cd618e21fa0ea1#commitcomment-33563135 Approved-by: Daniel Stenberg Closes #3895 Daniel Stenberg (16 May 2019) - travis: add an osx http-only build Closes #3887 - cleanup: remove FIXME and TODO comments They serve very little purpose and mostly just add noise. Most of them have been around for a very long time. I read them all before removing or rephrasing them. Ref: #3876 Closes #3883 - curl: don't set FTP options for FTP-disabled builds ... since libcurl has started to be totally unaware of options for disabled protocols they now return error. Bug: https://github.com/curl/curl/commit/c9c5304dd4747cbe75d2f24be85920d572fcb5b8#commitcomment-33533937 Reported-by: Marcel Raad Closes #3886 Steve Holme (16 May 2019) - http_ntlm_wb: Move the type-2 message processing into a dedicated function This brings the code inline with the other HTTP authentication mechanisms. Closes #3890 Daniel Stenberg (15 May 2019) - RELEASE-NOTES: synced - docs/RELEASE-PROCEDURE: updated coming releases dates [ci skip] - CURLOPT_READFUNCTION.3: see also CURLOPT_UPLOAD_BUFFERSIZE [ci skip] Reported-by: Roy Bellingan Bug: #3885 - parse_proxy: use the URL parser API As we treat a given proxy as a URL we should use the unified URL parser to extract the parts out of it. Closes #3878 Steve Holme (15 May 2019) - http_negotiate: Move the Negotiate state out of the negotiatedata structure Given that this member variable is not used by the SASL based protocols there is no need to have it here. Closes #3882 - http_ntlm: Move the NTLM state out of the ntlmdata structure Given that this member variable is not used by the SASL based protocols there is no need to have it here. - url: Move the negotiate state type into a dedicated enum - url: Remove duplicate clean up of the winbind variables in conn_shutdown() Given that Curl_disconnect() calls Curl_http_auth_cleanup_ntlm() prior to calling conn_shutdown() and it in turn performs this, there is no need to perform the same action in conn_shutdown(). Closes #3881 Daniel Stenberg (14 May 2019) - urlapi: require a non-zero host name length when parsing URL Updated test 1560 to verify. Closes #3880 - configure: error out if OpenSSL wasn't detected when asked for If --with-ssl is used and configure still couldn't enable SSL this creates an error instead of just silently ignoring the fact. Suggested-by: Isaiah Norton Fixes #3824 Closes #3830 Daniel Gustafsson (14 May 2019) - imap: Fix typo in comment Steve Holme (14 May 2019) - url: Remove unnecessary initialisation from allocate_conn() No need to set variables to zero as calloc() does this for us. Closes #3879 Daniel Stenberg (14 May 2019) - CURLOPT_CAINFO.3: with Schannel, you want Windows 8 or later [ci skip] Clues-provided-by: Jay Satiro Clues-provided-by: Jeroen Ooms Fixes #3711 Closes #3874 Daniel Gustafsson (13 May 2019) - vtls: fix potential ssl_buffer stack overflow In Curl_multissl_version() it was possible to overflow the passed in buffer if the generated version string exceeded the size of the buffer. Fix by inverting the logic, and also make sure to not exceed the local buffer during the string generation. Closes #3863 Reported-by: nevv on HackerOne/curl Reviewed-by: Jay Satiro Reviewed-by: Daniel Stenberg Daniel Stenberg (13 May 2019) - RELEASE-NOTES: synced - appveyor: also build "/ci" branches like travis - pingpong: disable more when no pingpong enabled - proxy: acknowledge DISABLE_PROXY more - parsedate: CURL_DISABLE_PARSEDATE - sasl: only enable if there's a protocol enabled using it - mime: acknowledge CURL_DISABLE_MIME - wildcard: disable from build when FTP isn't present - http: CURL_DISABLE_HTTP_AUTH - base64: build conditionally if there are users - doh: CURL_DISABLE_DOH Steve Holme (12 May 2019) - auth: Rename the various authentication clean up functions For consistency and to a avoid confusion. Closes #3869 Daniel Stenberg (12 May 2019) - [Jay Satiro brought this change] docs/INSTALL: fix broken link [ci skip] Reported-by: Joombalaya on github Fixes #3818 Marcel Raad (12 May 2019) - easy: fix another "clarify calculation precedence" warning I missed this one in commit 6b3dde7fe62ea5a557fd1fd323fac2bcd0c2e9be. - build: fix "clarify calculation precedence" warnings Codacy/CppCheck warns about this. Consistently use parentheses as we already do in some places to silence the warning. Closes https://github.com/curl/curl/pull/3866 - cmake: restore C89 compatibility of CurlTests.c I broke it in d1b5cf830bfe169745721b21245d2217d2c2453e and 97de97daefc2ed084c91eff34af2426f2e55e134. Reported-by: Viktor Szakats Ref: https://github.com/curl/curl/commit/97de97daefc2ed084c91eff34af2426f2e55e134#commitcomment-33499044 Closes https://github.com/curl/curl/pull/3868 Steve Holme (11 May 2019) - http_ntlm: Corrected the name of the include guard Missed in f0bdd72c. Closes #3867 - http_digest: Don't expose functions when HTTP and Crypto Auth are disabled Closes #3861 - http_negotiate: Don't expose functions when HTTP is disabled Daniel Stenberg (11 May 2019) - SECURITY-PROCESS: fix links [ci skip] Marcel Raad (11 May 2019) - CMake: suppress unused variable warnings I missed these in commit d1b5cf830bfe169745721b21245d2217d2c2453e. Daniel Stenberg (11 May 2019) - doh: disable DOH for the cases it doesn't work Due to limitations in Curl_resolver_wait_resolv(), it doesn't work for DOH resolves. This fix disables DOH for those. Limitation added to KNOWN_BUGS. Fixes #3850 Closes #3857 Jay Satiro (11 May 2019) - checksrc.bat: Ignore snprintf warnings in docs/examples .. because we allow snprintf use in docs/examples. Closes https://github.com/curl/curl/pull/3862 Steve Holme (10 May 2019) - vauth: Fix incorrect function description for Curl_auth_user_contains_domain() ...and misalignment of these comments. From a78c61a4. Closes #3860 Jay Satiro (10 May 2019) - Revert "multi: support verbose conncache closure handle" This reverts commit b0972bc. - No longer show verbose output for the conncache closure handle. The offending commit was added so that the conncache closure handle would inherit verbose mode from the user's easy handle. (Note there is no way for the user to set options for the closure handle which is why that was necessary.) Other debug settings such as the debug function were not also inherited since we determined that could lead to crashes if the user's per-handle private data was used on an unexpected handle. The reporter here says he has a debug function to capture the verbose output, and does not expect or want any output to stderr; however because the conncache closure handle does not inherit the debug function the verbose output for that handle does go to stderr. There are other plausible scenarios as well such as the user redirects stderr on their handle, which is also not inherited since it could lead to crashes when used on an unexpected handle. Short of allowing the user to set options for the conncache closure handle I don't think there's much we can safely do except no longer inherit the verbose setting. Bug: https://curl.haxx.se/mail/lib-2019-05/0021.html Reported-by: Kristoffer Gleditsch Ref: https://github.com/curl/curl/pull/3598 Ref: https://github.com/curl/curl/pull/3618 Closes https://github.com/curl/curl/pull/3856 Steve Holme (10 May 2019) - ntlm: Fix misaligned function comments for Curl_auth_ntlm_cleanup() From 6012fa5a. Closes #3858 Daniel Stenberg (9 May 2019) - BUG-BOUNTY: minor formatting fixes [ci skip] - RELEASE-NOTES: synced - BUG-BOUNTY.md: add the Dropbox "bonus" extra payout ability [ci skip] Closes #3839 Kamil Dudka (9 May 2019) - http_negotiate: do not treat failure of gss_init_sec_context() as fatal Fixes #3726 Closes #3849 - spnego_gssapi: fix return code on gss_init_sec_context() failure Fixes #3726 Closes #3849 Steve Holme (9 May 2019) - gen_resp_file.bat: Removed unnecessary @ from all but the first command There is need to use @ on every command once echo has been turned off. Closes #3854 Jay Satiro (8 May 2019) - http: Ignore HTTP/2 prior knowledge setting for HTTP proxies - Do not switch to HTTP/2 for an HTTP proxy that is not tunnelling to the destination host. We already do something similar for HTTPS proxies by not sending h2. [1] Prior to this change setting CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE would incorrectly use HTTP/2 to talk to the proxy, which is not something we support (yet?). Also it's debatable whether or not that setting should apply to HTTP/2 proxies. [1]: https://github.com/curl/curl/commit/17c5d05 Bug: https://github.com/curl/curl/issues/3570 Bug: https://github.com/curl/curl/issues/3832 Closes https://github.com/curl/curl/pull/3853 Marcel Raad (8 May 2019) - travis: update mesalink build to xenial Closes https://github.com/curl/curl/pull/3842 Daniel Stenberg (8 May 2019) - [Ricky Leverence brought this change] OpenSSL: Report -fips in version if OpenSSL is built with FIPS Older versions of OpenSSL report FIPS availabilty via an OPENSSL_FIPS define. It uses this define to determine whether to publish -fips at the end of the version displayed. Applications that utilize the version reported by OpenSSL will see a mismatch if they compare it to what curl reports, as curl is not modifying the version in the same way. This change simply adds a check to see if OPENSSL_FIPS is defined, and will alter the reported version to match what OpenSSL itself provides. This only appears to be applicable in versions of OpenSSL <1.1.1 Closes #3771 Kamil Dudka (7 May 2019) - [Frank Gevaerts brought this change] nss: allow fifos and character devices for certificates. Currently you can do things like --cert <(cat ./cert.crt) with (at least) the openssl backend, but that doesn't work for nss because is_file rejects fifos. I don't actually know if this is sufficient, nss might do things internally (like seeking back) that make this not work, so actual testing is needed. Closes #3807 Daniel Gustafsson (6 May 2019) - test2100: Fix typos in test description Daniel Stenberg (6 May 2019) - ssh: define USE_SSH if SSH is enabled (any backend) Closes #3846 Steve Holme (5 May 2019) - winbuild: Add our standard copyright header to the winbuild batch files - makedebug: Fix ERRORLEVEL detection after running where.exe Closes #3838 Daniel Stenberg (5 May 2019) - urlapi: add CURLUPART_ZONEID to set and get The zoneid can be used with IPv6 numerical addresses. Updated test 1560 to verify. Closes #3834 - [Taiyu Len brought this change] WRITEFUNCTION: add missing set_in_callback around callback Closes #3837 - RELEASE-NOTES: synced - CURLMOPT_TIMERFUNCTION.3: warn about the recursive risk [ci skip] Reported-by: Ricardo Gomes Bug: #3537 Closes #3836 - CURLOPT_CHUNK_BGN_FUNCTION.3: document the struct and time value The time field in the curl_fileinfo struct will always be zero. No code was ever implemented to actually convert the date string to a time_t. Fixes #3829 Closes #3835 - OS400/ccsidcurl.c: code style fixes - OS400/ccsidcurl: replace use of Curl_vsetopt (and make the code style comply) Fixes #3833 - urlapi: strip off scope id from numerical IPv6 addresses ... to make the host name "usable". Store the scope id and put it back when extracting a URL out of it. Also makes curl_url_set() syntax check CURLUPART_HOST. Fixes #3817 Closes #3822 - RELEASE-NOTES: synced - multiif.h: remove unused protos ... for functions related to pipelining. Those functions were removed in 2f44e94efb3df. Closes #3828 - [Yiming Jing brought this change] travis: mesalink: temporarily disable test 3001 ... due to SHA-1 signatures in test certs - [Yiming Jing brought this change] travis: upgrade the MesaLink TLS backend to v1.0.0 Closes #3823 Closes #3776 - ConnectionExists: improve non-multiplexing use case - better log output - make sure multiplex is enabled for it to be used - multi: provide Curl_multiuse_state to update information As soon as a TLS backend gets ALPN conformation about the specific HTTP version it can now set the multiplex situation for the "bundle" and trigger moving potentially queued up transfers to the CONNECT state. - process_pending_handles: mark queued transfers as previously pending With transfers being queued up, we only move one at a a time back to the CONNECT state but now we mark moved transfers so that when a moved transfer is confirmed "successful" (it connected) it will trigger the move of another pending transfer. Previously, it would otherwise wait until the transfer was done before doing this. This makes queued up pending transfers get processed (much) faster. - http: mark bundle as not for multiuse on < HTTP/2 response Fixes #3813 Closes #3815 Daniel Gustafsson (1 May 2019) - cookie: Guard against possible NULL ptr deref In case the name pointer isn't set (due to memory pressure most likely) we need to skip the prefix matching and reject with a badcookie to avoid a possible NULL pointer dereference. Closes #3820 #3821 Reported-by: Jonathan Moerman Reviewed-by: Daniel Stenberg <daniel@haxx.se> Patrick Monnerat (30 Apr 2019) - os400: Add CURLOPT_MAXAGE_CONN to ILE/RPG bindings Kamil Dudka (29 Apr 2019) - nss: provide more specific error messages on failed init Closes #3808 Daniel Stenberg (29 Apr 2019) - [Reed Loden brought this change] docs: minor polish to the bug bounty / security docs Closes #3811 - CURL_MAX_INPUT_LENGTH: largest acceptable string input size This limits all accepted input strings passed to libcurl to be less than CURL_MAX_INPUT_LENGTH (8000000) bytes, for these API calls: curl_easy_setopt() and curl_url_set(). The 8000000 number is arbitrary picked and is meant to detect mistakes or abuse, not to limit actual practical use cases. By limiting the acceptable string lengths we also reduce the risk of integer overflows all over. NOTE: This does not apply to `CURLOPT_POSTFIELDS`. Test 1559 verifies. Closes #3805 - [Tseng Jun brought this change] curlver.h: use parenthesis in CURL_VERSION_BITS macro Closes #3809 Marcel Raad (27 Apr 2019) - [Simon Warta brought this change] cmake: rename CMAKE_USE_DARWINSSL to CMAKE_USE_SECTRANSP Closes https://github.com/curl/curl/pull/3769 Steve Holme (23 Apr 2019) - ntlm: Missed pre-processor || (or) during rebase for cd15acd0 - ntlm: Support the NT response in the type-3 when OpenSSL doesn't include MD4 Just like we do for mbed TLS, use our local implementation of MD4 when OpenSSL doesn't support it. This allows a type-3 message to include the NT response. Daniel Gustafsson (23 Apr 2019) - INTERNALS: fix misindentation of ToC item Kerberos was incorrectly indented as a subsection under FTP, which is incorrect as they are both top level sections. A fix for this was first attempted in commit fef38a0898322f285401c5ff2f5e7c90dbf3be63 but that was a few paddles short of being complete. - [Aron Bergman brought this change] INTERNALS: Add structs to ToC Add the subsections under "Structs in libcurl" to the table of contents. Reviewed-by: Daniel Stenberg <daniel@haxx.se> Reviewed-by: Daniel Gustafsson <daniel@yesql.se> - [Aron Bergman brought this change] INTERNALS: Add code highlighting Make all struct members under the Curl_handler section print in monospace font. Closes #3801 Reviewed-by: Daniel Stenberg <daniel@haxx.se> Reviewed-by: Daniel Gustafsson <daniel@yesql.se> Daniel Stenberg (22 Apr 2019) - docs/BUG-BOUNTY: bug bounty time [skip ci] Introducing the curl bug bounty program on hackerone. We now recommend filing security issues directly in the hackerone ticket system which only is readable to curl security team members. Assisted-by: Daniel Gustafsson Closes #3488 Steve Holme (22 Apr 2019) - sasl: Don't send authcid as authzid for the PLAIN mechanism as per RFC 4616 RFC 4616 specifies the authzid is optional in the client authentication message and that the server will derive the authorisation identity (authzid) from the authentication identity (authcid) when not specified by the client. Jay Satiro (22 Apr 2019) - [Gisle Vanem brought this change] memdebug: fix variable name Follow-up to 76b6348 which renamed logfile as curl_dbg_logfile. Ref: https://github.com/curl/curl/commit/76b6348#r33259088 Steve Holme (21 Apr 2019) - vauth/cleartext: Don't send the authzid if it is empty Follow up to 762a292f. Daniel Stenberg (21 Apr 2019) - test 196,197,198: add 'retry' keyword [skip ci] - RELEASE-NOTES: synced - CURLOPT_MAXAGE_CONN: set the maximum allowed age for conn reuse ... and disconnect too old ones instead of trying to reuse. Default max age is set to 118 seconds. Ref: #3722 Closes #3782 Daniel Gustafsson (20 Apr 2019) - [Po-Chuan Hsieh brought this change] altsvc: Fix building with cookies disables ALTSVC requires Curl_get_line which is defined in lib/cookie.c inside a #if check of HTTP and COOKIES. That makes Curl_get_line undefined if COOKIES is disabled. Fix by splitting out the function into a separate file which can be included where needed. Closes #3717 Reviewed-by: Daniel Gustafsson <daniel@yesql.se> Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com> Daniel Stenberg (20 Apr 2019) - test1002: correct the name [skip ci] - test660: verify CONNECT_ONLY with IMAP which basically just makes sure LOGOUT is *not* issued on disconnect - Curl_disconnect: treat all CONNECT_ONLY connections as "dead" Since the connection has been used by the "outside" we don't know the state of it anymore and curl should not use it anymore. Bug: https://curl.haxx.se/mail/lib-2019-04/0052.html Closes #3795 - multi: fix the statenames (follow-up fix from 2f44e94efb3df8e) The list of names must be in sync with the defined states in the header file! Steve Holme (16 Apr 2019) - openvms: Remove pre-processors for Windows as VMS cannot support them - openvms: Remove pre-processor for SecureTransport as VMS cannot support it Fixes #3768 Closes #3785 Jay Satiro (16 Apr 2019) - TODO: Add issue link to an existing entry Daniel Stenberg (16 Apr 2019) - RELEASE-NOTES: synced Jay Satiro (16 Apr 2019) - tool_help: Warn if curl and libcurl versions do not match .. because functionality may be affected if the versions differ. This commit implements TODO 18.7 "warning if curl version is not in sync with libcurl version". Ref: https://github.com/curl/curl/blob/curl-7_64_1/docs/TODO#L1028-L1033 Closes https://github.com/curl/curl/pull/3774 Steve Holme (16 Apr 2019) - md5: Update the function signature following d84da52d - md5: Forgot to update the code alignment in d84da52d - md5: Return CURLcode from the internally accessible functions Following 28f826b3 to return CURLE_OK instead of numeric 0. Daniel Gustafsson (15 Apr 2019) - tests: Run global cleanup at end of tests Make sure to run curl_global_cleanup() when shutting down the test suite to release any resources allocated in the SSL setup. This is clearly visible when running tests with PolarSSL where the thread lock calloc() memory which isn't released when not running cleanup. Below is an excerpt from the autobuild logs: ==12368== 96 bytes in 1 blocks are possibly lost in loss record 1 of 2 ==12368== at 0x4837B65: calloc (vg_replace_malloc.c:752) ==12368== by 0x11A76E: curl_dbg_calloc (memdebug.c:205) ==12368== by 0x145CDF: Curl_polarsslthreadlock_thread_setup (polarssl_threadlock.c:54) ==12368== by 0x145B37: Curl_polarssl_init (polarssl.c:865) ==12368== by 0x14129D: Curl_ssl_init (vtls.c:171) ==12368== by 0x118B4C: global_init (easy.c:158) ==12368== by 0x118BF5: curl_global_init (easy.c:221) ==12368== by 0x118D0B: curl_easy_init (easy.c:299) ==12368== by 0x114E96: test (lib1906.c:32) ==12368== by 0x115495: main (first.c:174) Closes #3783 Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com> Reviewed-by: Daniel Stenberg <daniel@haxx.se> Marcel Raad (15 Apr 2019) - travis: use mbedtls from Xenial No need to build it from source anymore. Closes https://github.com/curl/curl/pull/3779 - travis: use libpsl from Xenial This makes building libpsl and libidn2 from source unnecessary and removes the need for the autopoint and libunistring-dev packages. Closes https://github.com/curl/curl/pull/3779 Daniel Stenberg (15 Apr 2019) - runtests: start socksd like other servers ... without a $srcdir prefix. Triggered by the failures in several autobuilds. Closes #3781 Daniel Gustafsson (14 Apr 2019) - socksd: Fix typos Reviewed-by: Daniel Stenberg <daniel@haxx.se> - socksd: Properly decorate static variables Mark global variables static to avoid compiler warning in Clang when using -Wmissing-variable-declarations. Closes #3778 Reviewed-by: Daniel Stenberg <daniel@haxx.se> Steve Holme (14 Apr 2019) - md(4|5): Fixed indentation oddities with the importation of replacement code The indentation from 211d5329 and 57d6d253 was a little strange as parts didn't align correctly, uses 4 spaces rather than 2. Checked the indentation of the original source so it aligns, albeit, using curl style. - md5: Code style to return CURLE_OK rather than numeric 0 - md5: Corrected code style for some pointer arguments Marcel Raad (13 Apr 2019) - travis: update some builds to xenial Xenial comes with more up-to-date software versions and more available packages, some of which we currently build from source. Unfortunately, some builds would fail with Xenial because of assertion failures in Valgrind when using OpenSSL, so leave these at Trusty. Closes https://github.com/curl/curl/pull/3777 Daniel Stenberg (13 Apr 2019) - test: make tests and test scripts use socksd for SOCKS Make all SOCKS tests use socksd instead of ssh. - socksd: new SOCKS 4+5 server for tests Closes #3752 - singleipconnect: show port in the verbose "Trying ..." message To aid debugging better. - [tmilburn brought this change] CURLOPT_ADDRESS_SCOPE: fix range check and more Commit 9081014 fixed most of the confusing issues between scope id and scope however 844896d added bad limits checking assuming that the scope is being set and not the scope id. I have fixed the documentation so it all refers to scope ids. In addition Curl_if2ip refered to the scope id as remote_scope_id which is incorrect, so I renamed it to local_scope_id. Adjusted-by: Daniel Stenberg Closes #3655 Closes #3765 Fixes #3713 - urlapi: stricter CURLUPART_PORT parsing Only allow well formed decimal numbers in the input. Document that the number MUST be between 1 and 65535. Add tests to test 1560 to verify the above. Ref: https://github.com/curl/curl/issues/3753 Closes #3762 Jay Satiro (13 Apr 2019) - [Jan Ehrhardt brought this change] winbuild: Support MultiSSL builds - Remove the lines in winbuild/Makefile.vc that generate an error with multiple SSL backends. - Add /DCURL_WITH_MULTI_SSL in winbuild/MakefileBuild.vc if multiple SSL backends are set. Closes https://github.com/curl/curl/pull/3772 Daniel Stenberg (12 Apr 2019) - travis: remove mesalink builds (temporarily?) Since the mesalink build started to fail on travis, even though we build a fixed release version, we disable it to prevent it from blocking progress. Closes #3767 - openssl: mark connection for close on TLS close_notify Without this, detecting and avoid reusing a closed TLS connection (without a previous GOAWAY) when doing HTTP/2 is tricky. Reported-by: Tom van der Woerdt Fixes #3750 Closes #3763 - RELEASE-NOTES: synced Steve Holme (11 Apr 2019) - vauth/cleartext: Update the PLAIN login function signature to match RFC 4616 Functionally this doesn't change anything as we still use the username for both the authorisation identity and the authentication identity. Closes #3757 Daniel Stenberg (11 Apr 2019) - test1906: verify CURLOPT_CURLU + CURLOPT_PORT usage Based-on-code-by: Poul T Lomholt - url: always clone the CUROPT_CURLU handle Since a few code paths actually update that data. Fixes #3753 Closes #3761 Reported-by: Poul T Lomholt - CURLOPT_DNS_USE_GLOBAL_CACHE: remove Remove the code too. The functionality has been disabled in code since 7.62.0. Setting this option will from now on simply be ignored and have no function. Closes #3654 Marcel Raad (11 Apr 2019) - travis: install libgnutls28-dev only for --with-gnutls build Reduces the time needed for the other jobs a little. Closes https://github.com/curl/curl/pull/3721 - travis: install libnss3-dev only for --with-nss build Reduces the time needed for the other jobs a little. Closes https://github.com/curl/curl/pull/3721 - travis: install libssh2-dev only for --with-libssh2 build Reduces the time needed for the other jobs a little. Closes https://github.com/curl/curl/pull/3721 - travis: install libssh-dev only for --with-libssh build Reduces the time needed for the other jobs a little. Closes https://github.com/curl/curl/pull/3721 - travis: install krb5-user only for --with-gssapi build Reduces the time needed for the other jobs a little. Closes https://github.com/curl/curl/pull/3721 - travis: install lcov only for the coverage job Reduces the time needed for the other jobs a little. Closes https://github.com/curl/curl/pull/3721 - travis: install clang only when needed This reduces the GCC job runtimes a little and it's needed to selectively update clang builds to xenial. Closes https://github.com/curl/curl/pull/3721 - AppVeyor: enable testing for WinSSL build Closes https://github.com/curl/curl/pull/3725 - build: fix Codacy/CppCheck warnings - remove unused variables - declare conditionally used variables conditionally - suppress unused variable warnings in the CMake tests - remove dead variable stores - consistently use WIN32 macro to detect Windows Closes https://github.com/curl/curl/pull/3739 - polarssl_threadlock: remove conditionally unused code Make functions no-ops if neither both USE_THREADS_POSIX and HAVE_PTHREAD_H nor both USE_THREADS_WIN32 and HAVE_PROCESS_H are defined. Previously, if only one of them was defined, there was either code compiled that did nothing useful or the wrong header included for the functions used. Also, move POLARSSL_MUTEX_T define to implementation file as it's not used externally. Closes https://github.com/curl/curl/pull/3739 - lib557: initialize variables These variables are only conditionally initialized. Closes https://github.com/curl/curl/pull/3739 - lib509: add missing include for strdup Closes https://github.com/curl/curl/pull/3739 - README.md: fix no-consecutive-blank-lines Codacy warning Consistently use one blank line between blocks. Closes https://github.com/curl/curl/pull/3739 - tests/server/util: fix Windows Unicode build Always use the ANSI version of FormatMessage as we don't have the curl_multibyte gear available here. Closes https://github.com/curl/curl/pull/3758 Daniel Stenberg (11 Apr 2019) - curl_easy_getinfo.3: fix minor formatting mistake Daniel Gustafsson (11 Apr 2019) - xattr: skip unittest on unsupported platforms The stripcredentials unittest fails to compile on platforms without xattr support, for example the Solaris member in the buildfarm which fails with the following: CC unit1621-unit1621.o CC ../libtest/unit1621-first.o CCLD unit1621 Undefined first referenced symbol in file stripcredentials unit1621-unit1621.o goto problem 2 ld: fatal: symbol referencing errors. No output written to .libs/unit1621 collect2: error: ld returned 1 exit status gmake[2]: *** [Makefile:996: unit1621] Error 1 Fix by excluding the test on such platforms by using the reverse logic from where stripcredentials() is defined. Closes #3759 Reviewed-by: Daniel Stenberg <daniel@haxx.se> Steve Holme (11 Apr 2019) - emailL Added reference to RFC8314 for implicit TLS - README: Schannel, stop calling it "winssl" Stick to "Schannel" everywhere - follow up to 180501cb. Jakub Zakrzewski (10 Apr 2019) - cmake: clear CMAKE_REQUIRED_LIBRARIES after each use This fixes GSSAPI builds with the libraries in a non-standard location. The testing for recv() were failing because it failed to link the Kerberos libraries, which are not needed for this or subsequent tests. fixes #3743 closes #3744 - cmake: avoid linking executable for some tests with cmake 3.6+ With CMAKE_TRY_COMPILE_TARGET_TYPE set to STATIC_LIBRARY, the try_compile() (which is used by check_c_source_compiles()) will build static library instead of executable. This avoids linking additional libraries in and thus speeds up those checks a little. This commit also avoids #3743 (GSSAPI build errors) on itself with cmake 3.6 or above. That issue was fixed separately for all versions. Ref: #3744 - cmake: minor cleanup - Remove nneeded include_regular_expression. It was setting what is already a default. - Remove duplicated include. - Don't check for pre-3.0.0 CMake version. We already require at least 3.0.0, so it's just clutter. Ref: #3744 Steve Holme (8 Apr 2019) - build-openssl.bat: Fixed support for OpenSSL v1.1.0+ - build-openssl.bat: Perfer the use of if statements rather than goto (where possible) - build-openssl.bat: Perform the install for each build type directly after the build - build-openssl.bat: Split the install of static and shared build types - build-openssl.bat: Split the building of static and shared build types - build-openssl.bat: Move the installation into a separate function - build-openssl.bat: Move the build step into a separate function - build-openssl.bat: Move the OpenSSL configuration into a separate function - build-openssl.bat: Fixed the BUILD_CONFIG variable not being initialised Should the parent environment set this variable then the build might not be performed as the user intended. Daniel Stenberg (8 Apr 2019) - socks: fix error message - config.d: clarify that initial : and = might need quoting [skip ci] Fixes #3738 Closes #3749 - RELEASE-NOTES: synced bumped to 7.65.0 for next release - socks5: user name and passwords must be shorter than 256 bytes... since the protocol needs to store the length in a single byte field. Reported-by: XmiliaH on github Fixes #3737 Closes #3740 - [Jakub Zakrzewski brought this change] test: urlapi: urlencode characters above 0x7f correctly - [Jakub Zakrzewski brought this change] urlapi: urlencode characters above 0x7f correctly fixes #3741 Closes #3742 - [Even Rouault brought this change] multi_runsingle(): fix use-after-free Fixes #3745 Closes #3746 The following snippet ``` int main() { CURL* hCurlHandle = curl_easy_init(); curl_easy_setopt(hCurlHandle, CURLOPT_URL, "http://example.com"); curl_easy_setopt(hCurlHandle, CURLOPT_PROXY, "1"); curl_easy_perform(hCurlHandle); curl_easy_cleanup(hCurlHandle); return 0; } ``` triggers the following Valgrind warning ``` ==4125== Invalid read of size 8 ==4125== at 0x4E7D1EE: Curl_llist_remove (llist.c:97) ==4125== by 0x4E7EF5C: detach_connnection (multi.c:798) ==4125== by 0x4E80545: multi_runsingle (multi.c:1451) ==4125== by 0x4E8197C: curl_multi_perform (multi.c:2072) ==4125== by 0x4E766A0: easy_transfer (easy.c:625) ==4125== by 0x4E76915: easy_perform (easy.c:719) ==4125== by 0x4E7697C: curl_easy_perform (easy.c:738) ==4125== by 0x4008BE: main (in /home/even/curl/test) ==4125== Address 0x9b3d1d0 is 1,120 bytes inside a block of size 1,600 free'd ==4125== at 0x4C2ECF0: free (vg_replace_malloc.c:530) ==4125== by 0x4E62C36: conn_free (url.c:756) ==4125== by 0x4E62D34: Curl_disconnect (url.c:818) ==4125== by 0x4E48DF9: Curl_once_resolved (hostip.c:1097) ==4125== by 0x4E8052D: multi_runsingle (multi.c:1446) ==4125== by 0x4E8197C: curl_multi_perform (multi.c:2072) ==4125== by 0x4E766A0: easy_transfer (easy.c:625) ==4125== by 0x4E76915: easy_perform (easy.c:719) ==4125== by 0x4E7697C: curl_easy_perform (easy.c:738) ==4125== by 0x4008BE: main (in /home/even/curl/test) ==4125== Block was alloc'd at ==4125== at 0x4C2F988: calloc (vg_replace_malloc.c:711) ==4125== by 0x4E6438E: allocate_conn (url.c:1654) ==4125== by 0x4E685B4: create_conn (url.c:3496) ==4125== by 0x4E6968F: Curl_connect (url.c:4023) ==4125== by 0x4E802E7: multi_runsingle (multi.c:1368) ==4125== by 0x4E8197C: curl_multi_perform (multi.c:2072) ==4125== by 0x4E766A0: easy_transfer (easy.c:625) ==4125== by 0x4E76915: easy_perform (easy.c:719) ==4125== by 0x4E7697C: curl_easy_perform (easy.c:738) ==4125== by 0x4008BE: main (in /home/even/curl/test) ``` This has been bisected to commit 2f44e94 Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14109 Credit to OSS Fuzz - pipelining: removed As previously planned and documented in DEPRECATE.md, all pipelining code is removed. Closes #3651 - [cclauss brought this change] tests: make Impacket (SMB server) Python 3 compatible Closes #3731 Fixes #3289 Marcel Raad (6 Apr 2019) - [Simon Warta brought this change] cmake: set SSL_BACKENDS This groups all SSL backends into the feature "SSL" and sets the SSL_BACKENDS analogue to configure.ac Closes https://github.com/curl/curl/pull/3736 - [Simon Warta brought this change] cmake: don't run SORT on empty list In case of an empty list, SORTing leads to the cmake error "list sub-command SORT requires list to be present." Closes https://github.com/curl/curl/pull/3736 Daniel Gustafsson (5 Apr 2019) - [Eli Schwartz brought this change] configure: fix default location for fish completions Fish defines a vendor completions directory for completions that are not installed as part of the fish project itself, and the vendor completions are preferred if they exist. This prevents trying to overwrite the builtin curl.fish completion (or creating file conflicts in distro packaging). Prefer the pkg-config defined location exported by fish, if it can be found, and fall back to the correct directory defined by most systems. Closes #3723 Reviewed-by: Daniel Gustafsson Marcel Raad (5 Apr 2019) - ftplistparser: fix LGTM alert "Empty block without comment" Removing the block is consistent with line 954/957. Closes https://github.com/curl/curl/pull/3732 - transfer: fix LGTM alert "Comparison is always true" Just remove the redundant condition, which also makes it clear that k->buf is always 0-terminated if this break is not hit. Closes https://github.com/curl/curl/pull/3732 Jay Satiro (4 Apr 2019) - [Rikard Falkeborn brought this change] smtp: fix compiler warning - Fix clang string-plus-int warning. Clang 8 warns about adding a string to an int does not append to the string. Indeed it doesn't, but that was not the intention either. Use array indexing as suggested to silence the warning. There should be no functional changes. (In other words clang warns about "foo"+2 but not &"foo"[2] so use the latter.) smtp.c:1221:29: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int] eob = strdup(SMTP_EOB + 2); ~~~~~~~~~~~~~~~~^~~~ Closes https://github.com/curl/curl/pull/3729 Marcel Raad (4 Apr 2019) - VS projects: use Unicode for VC10+ All Windows APIs have been natively UTF-16 since Windows 2000 and the non-Unicode variants are just wrappers around them. Only Windows 9x doesn't understand Unicode without the UnicoWS DLL. As later Visual Studio versions cannot target Windows 9x anyway, using the ANSI API doesn't really have any benefit there. This avoids issues like KNOWN_BUGS 6.5. Ref: https://github.com/curl/curl/issues/2120 Closes https://github.com/curl/curl/pull/3720 Daniel Gustafsson (3 Apr 2019) - RELEASE-NOTES: synced Bump the version in progress to 7.64.2, if we merge any "change" before the cut-off date we can update the version. - [Tim Rühsen brought this change] documentation: Fix several typos Closes #3724 Reviewed-by: Jakub Zakrzewski Reviewed-by: Daniel Gustafsson Jay Satiro (2 Apr 2019) - [Mert Yazıcıoğlu brought this change] vauth/oauth2: Fix OAUTHBEARER token generation OAUTHBEARER tokens were incorrectly generated in a format similar to XOAUTH2 tokens. These changes make OAUTHBEARER tokens conform to the RFC7628. Fixes: #2487 Reported-by: Paolo Mossino Closes https://github.com/curl/curl/pull/3377 Marcel Raad (2 Apr 2019) - tool_cb_wrt: fix bad-function-cast warning Commit f5bc578f4cdfdc6c708211dfc2962a0e9d79352d reintroduced the warning fixed in commit 2f5f31bb57d68b54e03bffcd9648aece1fe564f8. Extend fhnd's scope and reuse that variable instead of calling _get_osfhandle a second time to fix the warning again. Closes https://github.com/curl/curl/pull/3718 - VC15 project: remove MinimalRebuild Already done in commit d5cfefd0ea8e331b884186bff484210fad36e345 for the library project, but I forgot the tool project template. Now also removed for that. Dan Fandrich (1 Apr 2019) - cirrus: Customize the disabled tests per FreeBSD version Try to run as many test cases as possible on each OS version. 12.0 passes 13 more tests than the older versions, so we might as well run them. Daniel Stenberg (1 Apr 2019) - tool_help: include <strings.h> for strcasecmp Reported-by: Wyatt O'Day Fixes #3715 Closes #3716 Daniel Gustafsson (31 Mar 2019) - scripts: fix typos Dan Fandrich (28 Mar 2019) - travis: allow builds on branches named "ci" This allows a way to test changes other than through PRs. Daniel Stenberg (27 Mar 2019) - [Brad Spencer brought this change] resolve: apply Happy Eyeballs philosophy to parallel c-ares queries Closes #3699 - multi: improved HTTP_1_1_REQUIRED handling Make sure to downgrade to 1.1 even when we get this HTTP/2 stream error on first flight. Reported-by: niner on github Fixes #3696 Closes #3707 - [Leonardo Taccari brought this change] configure: avoid unportable `==' test(1) operator Closes #3709 Version 7.64.1 (27 Mar 2019) Daniel Stenberg (27 Mar 2019) - RELEASE: 7.64.1 - Revert "ntlm: remove USE_WIN32_CRYPTO check to get USE_NTLM2SESSION set" |
︙ | ︙ | |||
6400 6401 6402 6403 6404 6405 6406 | Closes https://github.com/curl/curl/pull/2808 Daniel Stenberg (29 Jul 2018) - test1157: follow-up to 35ecffb9 Ignore the user-agent line. Pointed-out-by: Marcel Raad | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 7898 7899 7900 7901 7902 7903 7904 | Closes https://github.com/curl/curl/pull/2808 Daniel Stenberg (29 Jul 2018) - test1157: follow-up to 35ecffb9 Ignore the user-agent line. Pointed-out-by: Marcel Raad |
Changes to jni/curl/CMake/CurlTests.c.
︙ | ︙ | |||
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 | typedef void (*func_type)(); int main() { #ifndef inet_ntoa_r func_type func; func = (func_type)inet_ntoa_r; #endif return 0; } #endif #ifdef HAVE_INET_NTOA_R_DECL_REENTRANT #define _REENTRANT #include <arpa/inet.h> typedef void (*func_type)(); int main() { #ifndef inet_ntoa_r func_type func; func = (func_type)&inet_ntoa_r; #endif return 0; } #endif #ifdef HAVE_GETADDRINFO #include <netdb.h> #include <sys/types.h> | > > | 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 | typedef void (*func_type)(); int main() { #ifndef inet_ntoa_r func_type func; func = (func_type)inet_ntoa_r; (void)func; #endif return 0; } #endif #ifdef HAVE_INET_NTOA_R_DECL_REENTRANT #define _REENTRANT #include <arpa/inet.h> typedef void (*func_type)(); int main() { #ifndef inet_ntoa_r func_type func; func = (func_type)&inet_ntoa_r; (void)func; #endif return 0; } #endif #ifdef HAVE_GETADDRINFO #include <netdb.h> #include <sys/types.h> |
︙ | ︙ | |||
579 580 581 582 583 584 585 586 587 588 589 590 591 592 | return arg1 + arg2; } int main() { int res3 = c99_vmacro3(1, 2, 3); int res2 = c99_vmacro2(1, 2); return 0; } #endif #ifdef HAVE_VARIADIC_MACROS_GCC #define gcc_vmacro3(first, args...) fun3(first, args) #define gcc_vmacro2(first, args...) fun2(first, args) | > > | 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 | return arg1 + arg2; } int main() { int res3 = c99_vmacro3(1, 2, 3); int res2 = c99_vmacro2(1, 2); (void)res3; (void)res2; return 0; } #endif #ifdef HAVE_VARIADIC_MACROS_GCC #define gcc_vmacro3(first, args...) fun3(first, args) #define gcc_vmacro2(first, args...) fun2(first, args) |
︙ | ︙ | |||
600 601 602 603 604 605 606 607 608 609 | return arg1 + arg2; } int main() { int res3 = gcc_vmacro3(1, 2, 3); int res2 = gcc_vmacro2(1, 2); return 0; } #endif | > > | 604 605 606 607 608 609 610 611 612 613 614 615 | return arg1 + arg2; } int main() { int res3 = gcc_vmacro3(1, 2, 3); int res2 = gcc_vmacro2(1, 2); (void)res3; (void)res2; return 0; } #endif |
Changes to jni/curl/CMake/OtherTests.cmake.
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | set(CMAKE_REQUIRED_LIBRARIES ws2_32) endif() else() add_header_include(HAVE_SYS_TYPES_H "sys/types.h") add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h") endif() check_c_source_compiles("${_source_epilogue} int main(void) { recv(0, 0, 0, 0); return 0; }" curl_cv_recv) if(curl_cv_recv) if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown") | > > | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | set(CMAKE_REQUIRED_LIBRARIES ws2_32) endif() else() add_header_include(HAVE_SYS_TYPES_H "sys/types.h") add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h") endif() set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) check_c_source_compiles("${_source_epilogue} int main(void) { recv(0, 0, 0, 0); return 0; }" curl_cv_recv) if(curl_cv_recv) if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown") |
︙ | ︙ | |||
173 174 175 176 177 178 179 180 181 182 183 184 185 186 | struct timeval ts; ts.tv_sec = 0; ts.tv_usec = 0; (void)ts; return 0; }" HAVE_STRUCT_TIMEVAL) if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) # if not cross-compilation... include(CheckCSourceRuns) set(CMAKE_REQUIRED_FLAGS "") if(HAVE_SYS_POLL_H) set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H") elseif(HAVE_POLL_H) | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | struct timeval ts; ts.tv_sec = 0; ts.tv_usec = 0; (void)ts; return 0; }" HAVE_STRUCT_TIMEVAL) set(HAVE_SIG_ATOMIC_T 1) set(CMAKE_REQUIRED_FLAGS) if(HAVE_SIGNAL_H) set(CMAKE_REQUIRED_FLAGS "-DHAVE_SIGNAL_H") set(CMAKE_EXTRA_INCLUDE_FILES "signal.h") endif() check_type_size("sig_atomic_t" SIZEOF_SIG_ATOMIC_T) if(HAVE_SIZEOF_SIG_ATOMIC_T) check_c_source_compiles(" #ifdef HAVE_SIGNAL_H # include <signal.h> #endif int main(void) { static volatile sig_atomic_t dummy = 0; (void)dummy; return 0; }" HAVE_SIG_ATOMIC_T_NOT_VOLATILE) if(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE) set(HAVE_SIG_ATOMIC_T_VOLATILE 1) endif() endif() if(HAVE_WINDOWS_H) set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h) else() set(CMAKE_EXTRA_INCLUDE_FILES) if(HAVE_SYS_SOCKET_H) set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h) endif() endif() check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE) if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE) set(HAVE_STRUCT_SOCKADDR_STORAGE 1) endif() unset(CMAKE_TRY_COMPILE_TARGET_TYPE) if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) # if not cross-compilation... include(CheckCSourceRuns) set(CMAKE_REQUIRED_FLAGS "") if(HAVE_SYS_POLL_H) set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H") elseif(HAVE_POLL_H) |
︙ | ︙ | |||
218 219 220 221 222 223 224 | return 1; } } return 0; }" HAVE_POLL_FINE) endif() | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 258 259 260 261 262 263 264 | return 1; } } return 0; }" HAVE_POLL_FINE) endif() |
Changes to jni/curl/CMakeLists.txt.
︙ | ︙ | |||
53 54 55 56 57 58 59 | string(REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*" CURL_VERSION ${CURL_VERSION_H_CONTENTS}) string(REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION}) string(REGEX MATCH "#define LIBCURL_VERSION_NUM 0x[0-9a-fA-F]+" CURL_VERSION_NUM ${CURL_VERSION_H_CONTENTS}) string(REGEX REPLACE "[^0]+0x" "" CURL_VERSION_NUM ${CURL_VERSION_NUM}) | < | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | string(REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*" CURL_VERSION ${CURL_VERSION_H_CONTENTS}) string(REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION}) string(REGEX MATCH "#define LIBCURL_VERSION_NUM 0x[0-9a-fA-F]+" CURL_VERSION_NUM ${CURL_VERSION_H_CONTENTS}) string(REGEX REPLACE "[^0]+0x" "" CURL_VERSION_NUM ${CURL_VERSION_NUM}) # Setup package meta-data # SET(PACKAGE "curl") message(STATUS "curl version=[${CURL_VERSION}]") # SET(PACKAGE_TARNAME "curl") # SET(PACKAGE_NAME "curl") # SET(PACKAGE_VERSION "-") |
︙ | ︙ | |||
100 101 102 103 104 105 106 | endif() endforeach() endif() endif() if(ENABLE_DEBUG) # DEBUGBUILD will be defined only for Debug builds | < | < < < | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | endif() endforeach() endif() endif() if(ENABLE_DEBUG) # DEBUGBUILD will be defined only for Debug builds set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DEBUGBUILD>) set(ENABLE_CURLDEBUG ON) endif() if(ENABLE_CURLDEBUG) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG) endif() |
︙ | ︙ | |||
242 243 244 245 246 247 248 | include(CheckFunctionExists) include(CheckIncludeFile) include(CheckIncludeFiles) include(CheckLibraryExists) include(CheckSymbolExists) include(CheckTypeSize) include(CheckCSourceCompiles) | < | 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | include(CheckFunctionExists) include(CheckIncludeFile) include(CheckIncludeFiles) include(CheckLibraryExists) include(CheckSymbolExists) include(CheckTypeSize) include(CheckCSourceCompiles) # On windows preload settings if(WIN32) set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WINSOCKAPI_=") include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake) endif() |
︙ | ︙ | |||
289 290 291 292 293 294 295 | list(APPEND CURL_LIBS "advapi32") endif() # check SSL libraries # TODO support GNUTLS, NSS, POLARSSL, CYASSL if(APPLE) | | | | > > > > | | 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 | list(APPEND CURL_LIBS "advapi32") endif() # check SSL libraries # TODO support GNUTLS, NSS, POLARSSL, CYASSL if(APPLE) option(CMAKE_USE_SECTRANSP "enable Apple OS native SSL/TLS" OFF) endif() if(WIN32) option(CMAKE_USE_WINSSL "enable Windows native SSL/TLS" OFF) cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON CMAKE_USE_WINSSL OFF) endif() option(CMAKE_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF) set(openssl_default ON) if(WIN32 OR CMAKE_USE_SECTRANSP OR CMAKE_USE_WINSSL OR CMAKE_USE_MBEDTLS) set(openssl_default OFF) endif() option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ${openssl_default}) count_true(enabled_ssl_options_count CMAKE_USE_WINSSL CMAKE_USE_SECTRANSP CMAKE_USE_OPENSSL CMAKE_USE_MBEDTLS ) if(enabled_ssl_options_count GREATER "1") set(CURL_WITH_MULTI_SSL ON) endif() if(CMAKE_USE_WINSSL) set(SSL_ENABLED ON) set(USE_SCHANNEL ON) # Windows native SSL/TLS support set(USE_WINDOWS_SSPI ON) # CMAKE_USE_WINSSL implies CURL_WINDOWS_SSPI list(APPEND CURL_LIBS "crypt32") endif() if(CURL_WINDOWS_SSPI) set(USE_WINDOWS_SSPI ON) set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DSECURITY_WIN32") endif() if(CMAKE_USE_DARWINSSL) message(FATAL_ERROR "The cmake option CMAKE_USE_DARWINSSL was renamed to CMAKE_USE_SECTRANSP.") endif() if(CMAKE_USE_SECTRANSP) find_library(COREFOUNDATION_FRAMEWORK "CoreFoundation") if(NOT COREFOUNDATION_FRAMEWORK) message(FATAL_ERROR "CoreFoundation framework not found") endif() find_library(SECURITY_FRAMEWORK "Security") if(NOT SECURITY_FRAMEWORK) message(FATAL_ERROR "Security framework not found") endif() set(SSL_ENABLED ON) set(USE_SECTRANSP ON) list(APPEND CURL_LIBS "${COREFOUNDATION_FRAMEWORK}" "${SECURITY_FRAMEWORK}") endif() if(CMAKE_USE_OPENSSL) find_package(OpenSSL REQUIRED) set(SSL_ENABLED ON) set(USE_OPENSSL ON) |
︙ | ︙ | |||
471 472 473 474 475 476 477 478 479 480 481 482 483 484 | ) set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DLDAP_DEPRECATED=1") list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB}) if(HAVE_LIBLBER) list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB}) endif() check_c_source_compiles("${_SRC_STRING}" NOT_NEED_LBER_H) if(NOT_NEED_LBER_H) set(NEED_LBER_H OFF) else() set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DNEED_LBER_H") endif() endif() | > | 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 | ) set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DLDAP_DEPRECATED=1") list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB}) if(HAVE_LIBLBER) list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB}) endif() check_c_source_compiles("${_SRC_STRING}" NOT_NEED_LBER_H) unset(CMAKE_REQUIRED_LIBRARIES) if(NOT_NEED_LBER_H) set(NEED_LBER_H OFF) else() set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DNEED_LBER_H") endif() endif() |
︙ | ︙ | |||
566 567 568 569 570 571 572 573 574 575 576 577 578 579 | set(CMAKE_EXTRA_INCLUDE_FILES "libssh2.h") check_function_exists(libssh2_version HAVE_LIBSSH2_VERSION) check_function_exists(libssh2_init HAVE_LIBSSH2_INIT) check_function_exists(libssh2_exit HAVE_LIBSSH2_EXIT) check_function_exists(libssh2_scp_send64 HAVE_LIBSSH2_SCP_SEND64) check_function_exists(libssh2_session_handshake HAVE_LIBSSH2_SESSION_HANDSHAKE) set(CMAKE_EXTRA_INCLUDE_FILES "") endif() endif() option(CMAKE_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF) mark_as_advanced(CMAKE_USE_GSSAPI) if(CMAKE_USE_GSSAPI) | > | 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 | set(CMAKE_EXTRA_INCLUDE_FILES "libssh2.h") check_function_exists(libssh2_version HAVE_LIBSSH2_VERSION) check_function_exists(libssh2_init HAVE_LIBSSH2_INIT) check_function_exists(libssh2_exit HAVE_LIBSSH2_EXIT) check_function_exists(libssh2_scp_send64 HAVE_LIBSSH2_SCP_SEND64) check_function_exists(libssh2_session_handshake HAVE_LIBSSH2_SESSION_HANDSHAKE) set(CMAKE_EXTRA_INCLUDE_FILES "") unset(CMAKE_REQUIRED_LIBRARIES) endif() endif() option(CMAKE_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF) mark_as_advanced(CMAKE_USE_GSSAPI) if(CMAKE_USE_GSSAPI) |
︙ | ︙ | |||
613 614 615 616 617 618 619 620 621 622 623 624 625 626 | set(CMAKE_REQUIRED_FLAGS "${_COMPILER_FLAGS_STR} ${_LINKER_FLAGS_STR}") set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES}) check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_INCLUDE_LIST} HAVE_GSS_C_NT_HOSTBASED_SERVICE) if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE) set(HAVE_OLD_GSSMIT ON) endif() endif() include_directories(${GSS_INCLUDE_DIR}) link_directories(${GSS_LINK_DIRECTORIES}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}") | > | 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | set(CMAKE_REQUIRED_FLAGS "${_COMPILER_FLAGS_STR} ${_LINKER_FLAGS_STR}") set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES}) check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_INCLUDE_LIST} HAVE_GSS_C_NT_HOSTBASED_SERVICE) if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE) set(HAVE_OLD_GSSMIT ON) endif() unset(CMAKE_REQUIRED_LIBRARIES) endif() include_directories(${GSS_INCLUDE_DIR}) link_directories(${GSS_LINK_DIRECTORIES}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}") |
︙ | ︙ | |||
880 881 882 883 884 885 886 887 888 889 890 891 892 893 | check_symbol_exists(fork "${CURL_INCLUDES}" HAVE_FORK) check_symbol_exists(getaddrinfo "${CURL_INCLUDES}" HAVE_GETADDRINFO) check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO) check_symbol_exists(freeifaddrs "${CURL_INCLUDES}" HAVE_FREEIFADDRS) 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(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) | > > | 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 | check_symbol_exists(fork "${CURL_INCLUDES}" HAVE_FORK) check_symbol_exists(getaddrinfo "${CURL_INCLUDES}" HAVE_GETADDRINFO) check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO) check_symbol_exists(freeifaddrs "${CURL_INCLUDES}" HAVE_FREEIFADDRS) 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(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) |
︙ | ︙ | |||
1175 1176 1177 1178 1179 1180 1181 | if(${ARGN}) set(_items ${_items} "${label}" PARENT_SCOPE) endif() endfunction() # Clear list and try to detect available features set(_items) | | < < < | | 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 | if(${ARGN}) set(_items ${_items} "${label}" PARENT_SCOPE) endif() endfunction() # Clear list and try to detect available features set(_items) _add_if("SSL" SSL_ENABLED) _add_if("IPv6" ENABLE_IPV6) _add_if("unix-sockets" USE_UNIX_SOCKETS) _add_if("libz" HAVE_LIBZ) _add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32) _add_if("IDN" HAVE_LIBIDN2) _add_if("Largefile" (CURL_SIZEOF_CURL_OFF_T GREATER 4) AND ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES)) # TODO SSP1 (WinSSL) check is missing _add_if("SSPI" USE_WINDOWS_SSPI) _add_if("GSS-API" HAVE_GSSAPI) # TODO SSP1 missing for SPNEGO _add_if("SPNEGO" NOT CURL_DISABLE_CRYPTO_AUTH AND (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) _add_if("Kerberos" NOT CURL_DISABLE_CRYPTO_AUTH AND (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) # NTLM support requires crypto function adaptions from various SSL libs # TODO alternative SSL libs tests for SSP1, GNUTLS, NSS if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR USE_SECTRANSP OR USE_MBEDTLS)) _add_if("NTLM" 1) # TODO missing option (autoconf: --enable-ntlm-wb) _add_if("NTLM_WB" NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED) endif() # TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP _add_if("TLS-SRP" USE_TLS_SRP) # TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header |
︙ | ︙ | |||
1235 1236 1237 1238 1239 1240 1241 | _add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED) _add_if("SMTP" NOT CURL_DISABLE_SMTP) _add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED) _add_if("SCP" USE_LIBSSH2) _add_if("SFTP" USE_LIBSSH2) _add_if("RTSP" NOT CURL_DISABLE_RTSP) _add_if("RTMP" USE_LIBRTMP) | > | > > > > > > > > > > > > > | 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 | _add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED) _add_if("SMTP" NOT CURL_DISABLE_SMTP) _add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED) _add_if("SCP" USE_LIBSSH2) _add_if("SFTP" USE_LIBSSH2) _add_if("RTSP" NOT CURL_DISABLE_RTSP) _add_if("RTMP" USE_LIBRTMP) if(_items) list(SORT _items) endif() string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}") message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}") # Clear list and collect SSL backends set(_items) _add_if("WinSSL" SSL_ENABLED AND USE_WINDOWS_SSPI) _add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL) _add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP) _add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS) if(_items) list(SORT _items) endif() string(REPLACE ";" " " SSL_BACKENDS "${_items}") message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}") # curl-config needs the following options to be set. set(CC "${CMAKE_C_COMPILER}") # TODO probably put a -D... options here? set(CONFIGURE_OPTIONS "") # TODO when to set "-DCURL_STATICLIB" for CPPFLAG_CURL_STATICLIB? set(CPPFLAG_CURL_STATICLIB "") set(CURLVERSION "${CURL_VERSION}") |
︙ | ︙ |
Changes to jni/curl/Makefile.in.
︙ | ︙ | |||
668 669 670 671 672 673 674 | inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \ ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \ curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \ pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \ openldap.c curl_gethostname.c gopher.c idn_win32.c \ http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \ http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \ | | | | | | 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 | inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \ ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \ curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \ pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \ openldap.c curl_gethostname.c gopher.c idn_win32.c \ http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \ http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \ curl_multibyte.c hostcheck.c conncache.c dotdot.c \ x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \ mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c \ doh.c urlapi.c curl_get_line.c altsvc.c LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \ formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \ speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h \ strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h \ wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h \ hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \ http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h \ inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h \ easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h \ socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h \ slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h \ rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h \ curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h \ http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \ curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \ curl_setup_once.h multihandle.h setup-vms.h dotdot.h \ x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \ curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \ curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h \ curl_get_line.h altsvc.h LIB_RCFILES = libcurl.rc CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) # libcurl has sources that provide functions named curlx_* that aren't part of # the official API, but we re-use the code here to avoid duplication. |
︙ | ︙ |
Changes to jni/curl/README.
︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 | To download the very latest source off the GIT server do this: git clone https://github.com/curl/curl.git (you'll get a directory named curl created, filled with the source code) NOTICE Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms. | > > > > > > | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | To download the very latest source off the GIT server do this: git clone https://github.com/curl/curl.git (you'll get a directory named curl created, filled with the source code) SECURITY PROBLEMS Report suspected security problems via our HackerOne page and not in public! https://hackerone.com/curl NOTICE Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms. |
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 | curl and libcurl 7.65.0 Public curl releases: 181 Command line options: 221 curl_easy_setopt() options: 268 Public functions in libcurl: 80 Contributors: 1929 This release includes the following changes: o CURLOPT_DNS_USE_GLOBAL_CACHE: removed [25] o CURLOPT_MAXAGE_CONN: set the maximum allowed age for conn reuse [37] o pipelining: removed [10] This release includes the following bugfixes: o CVE-2019-5435: Integer overflows in curl_url_set [87] o CVE-2019-5436: tftp: use the current blksize for recvfrom() [82] o --config: clarify that initial : and = might need quoting [17] o AppVeyor: enable testing for WinSSL build [23] o CURLMOPT_TIMERFUNCTION.3: warn about the recursive risk [52] o CURLOPT_ADDRESS_SCOPE: fix range check and more [32] o CURLOPT_CAINFO.3: with Schannel, you want Windows 8 or later [75] o CURLOPT_CHUNK_BGN_FUNCTION.3: document the struct and time value [51] o CURLOPT_READFUNCTION.3: see also CURLOPT_UPLOAD_BUFFERSIZE [71] o CURL_MAX_INPUT_LENGTH: largest acceptable string input size [44] o Curl_disconnect: treat all CONNECT_ONLY connections as "dead" [39] o INTERNALS: Add code highlighting [47] o OS400/ccsidcurl: replace use of Curl_vsetopt [50] o OpenSSL: Report -fips in version if OpenSSL is built with FIPS [55] o README.md: fix no-consecutive-blank-lines Codacy warning [22] o VC15 project: remove MinimalRebuild o VS projects: use Unicode for VC10+ [16] o WRITEFUNCTION: add missing set_in_callback around callback [60] o altsvc: Fix building with cookies disabled [38] o auth: Rename the various authentication clean up functions [61] o base64: build conditionally if there are users o build-openssl.bat: Fixed support for OpenSSL v1.1.0+ o build: fix "clarify calculation precedence" warnings [63] o checksrc.bat: ignore snprintf warnings in docs/examples [67] o cirrus: Customize the disabled tests per FreeBSD version o cleanup: remove FIXME and TODO comments [81] o cmake: avoid linking executable for some tests with cmake 3.6+ [18] o cmake: clear CMAKE_REQUIRED_LIBRARIES after each use [19] o cmake: rename CMAKE_USE_DARWINSSL to CMAKE_USE_SECTRANSP [46] o cmake: set SSL_BACKENDS [12] o configure: avoid unportable `==' test(1) operator [1] o configure: error out if OpenSSL wasn't detected when asked for [74] o configure: fix default location for fish completions [13] o cookie: Guard against possible NULL ptr deref [42] o curl: make code work with protocol-disabled libcurl [78] o curl: report error for "--no-" on non-boolean options [86] o curl_easy_getinfo.3: fix minor formatting mistake o curlver.h: use parenthesis in CURL_VERSION_BITS macro [45] o docs/BUG-BOUNTY: bug bounty time [48] o docs/INSTALL: fix broken link [62] o docs/RELEASE-PROCEDURE: link to live iCalendar [79] o documentation: Fix several typos [7] o doh: acknowledge CURL_DISABLE_DOH o doh: disable DOH for the cases it doesn't work [66] o examples: remove unused variables [88] o ftplistparser: fix LGTM alert "Empty block without comment" [14] o hostip: acknowledge CURL_DISABLE_SHUFFLE_DNS [78] o http: Ignore HTTP/2 prior knowledge setting for HTTP proxies [54] o http: acknowledge CURL_DISABLE_HTTP_AUTH o http: mark bundle as not for multiuse on < HTTP/2 response [41] o http_digest: Don't expose functions when HTTP and Crypto Auth are disabled [65] o http_negotiate: do not treat failure of gss_init_sec_context() as fatal [53] o http_ntlm: Corrected the name of the include guard [64] o http_ntlm_wb: Handle auth for only a single request [77] o http_ntlm_wb: Return the correct error on receiving an empty auth message [77] o lib509: add missing include for strdup [22] o lib557: initialize variables [22] o makedebug: Fix ERRORLEVEL detection after running where.exe [58] o mbedtls: enable use of EC keys [85] o mime: acknowledge CURL_DISABLE_MIME o multi: improved HTTP_1_1_REQUIRED handling [2] o netrc: acknowledge CURL_DISABLE_NETRC [78] o nss: allow fifos and character devices for certificates [56] o nss: provide more specific error messages on failed init [43] o ntlm: Fix misaligned function comments for Curl_auth_ntlm_cleanup [70] o ntlm: Support the NT response in the type-3 when OpenSSL doesn't include MD4 o openssl: mark connection for close on TLS close_notify [36] o openvms: Remove pre-processor for SecureTransport [40] o openvms: Remove pre-processors for Windows [40] o parse_proxy: use the URL parser API [72] o parsedate: disabled on CURL_DISABLE_PARSEDATE o pingpong: disable more when no pingpong protocols are enabled o polarssl_threadlock: remove conditionally unused code [22] o progress: acknowledge CURL_DISABLE_PROGRESS_METER [78] o proxy: acknowledge DISABLE_PROXY more o resolve: apply Happy Eyeballs philosophy to parallel c-ares queries [3] o revert "multi: support verbose conncache closure handle" [69] o sasl: Don't send authcid as authzid for the PLAIN mechanism as per RFC 4616 o sasl: only enable if there's a protocol enabled using it o scripts: fix typos o singleipconnect: show port in the verbose "Trying ..." message o smtp: fix compiler warning [15] o socks5: user name and passwords must be shorter than 256 [8] o socks: fix error message o socksd: new SOCKS 4+5 server for tests [31] o spnego_gssapi: fix return code on gss_init_sec_context() failure [53] o ssh-libssh: remove unused variable [83] o ssh: define USE_SSH if SSH is enabled (any backend) [57] o ssh: move variable declaration to where it's used [83] o test1002: correct the name o test2100: Fix typos in test description o tests/server/util: fix Windows Unicode build [21] o tests: Run global cleanup at end of tests [29] o tests: make Impacket (SMB server) Python 3 compatible [11] o tool_cb_wrt: fix bad-function-cast warning [5] o tool_formparse: remove redundant assignment [83] o tool_help: Warn if curl and libcurl versions do not match [28] o tool_help: include <strings.h> for strcasecmp [4] o transfer: fix LGTM alert "Comparison is always true" [14] o travis: add an osx http-only build [80] o travis: allow builds on branches named "ci" o travis: install dependencies only when needed [24] o travis: update some builds do Xenial [30] o travis: updated mesalink builds [35] o url: always clone the CUROPT_CURLU handle [26] o url: convert the zone id from a IPv6 URL to correct scope id [89] o urlapi: add CURLUPART_ZONEID to set and get [59] o urlapi: increase supported scheme length to 40 bytes [84] o urlapi: require a non-zero host name length when parsing URL [73] o urlapi: stricter CURLUPART_PORT parsing [33] o urlapi: strip off zone id from numerical IPv6 addresses [49] o urlapi: urlencode characters above 0x7f correctly [9] o vauth/cleartext: update the PLAIN login to match RFC 4616 [27] o vauth/oauth2: Fix OAUTHBEARER token generation [6] o vauth: Fix incorrect function description for Curl_auth_user_contains_domain [68] o vtls: fix potential ssl_buffer stack overflow [76] o wildcard: disable from build when FTP isn't present o winbuild: Support MultiSSL builds [34] o xattr: skip unittest on unsupported platforms [20] This release includes the following known bugs: o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html) This release would not have looked like this without help, code, reports and advice from friends like these: Aron Bergman, Brad Spencer, cclauss on github, Dan Fandrich, Daniel Gustafsson, Daniel Stenberg, Eli Schwartz, Even Rouault, Frank Gevaerts, Gisle Vanem, GitYuanQu on github, Guy Poizat, Isaiah Norton, Jakub Zakrzewski, Jan Ehrhardt, Jeroen Ooms, Jonathan Cardoso Machado, Jonathan Moerman, Joombalaya on github, Kamil Dudka, Kristoffer Gleditsch, l00p3r on hackerone, Leonardo Taccari, Marcel Raad, Mert Yazıcıoğlu, nevv on HackerOne/curl, niner on github, Olen Andoni, Omar Ramadan, Paolo Mossino, Patrick Monnerat, Po-Chuan Hsieh, Poul T Lomholt, Ray Satiro, Reed Loden, Ricardo Gomes, Ricky Leverence, Rikard Falkeborn, Roy Bellingan, Simon Warta, Steve Holme, Taiyu Len, Tim Rühsen, Tom van der Woerdt, Tseng Jun, Viktor Szakats, Wenchao Li, Wyatt O'Day, XmiliaH on github, Yiming Jing, (50 contributors) Thanks! (and sorry if I forgot to mention someone) References to bug reports and discussions on issues: [1] = https://curl.haxx.se/bug/?i=3709 [2] = https://curl.haxx.se/bug/?i=3707 [3] = https://curl.haxx.se/bug/?i=3699 [4] = https://curl.haxx.se/bug/?i=3715 [5] = https://curl.haxx.se/bug/?i=3718 [6] = https://curl.haxx.se/bug/?i=2487 [7] = https://curl.haxx.se/bug/?i=3724 [8] = https://curl.haxx.se/bug/?i=3737 [9] = https://curl.haxx.se/bug/?i=3741 [10] = https://curl.haxx.se/bug/?i=3651 [11] = https://curl.haxx.se/bug/?i=3731 [12] = https://curl.haxx.se/bug/?i=3736 [13] = https://curl.haxx.se/bug/?i=3723 [14] = https://curl.haxx.se/bug/?i=3732 [15] = https://curl.haxx.se/bug/?i=3729 [16] = https://curl.haxx.se/bug/?i=3720 [17] = https://curl.haxx.se/bug/?i=3738 [18] = https://curl.haxx.se/bug/?i=3744 [19] = https://curl.haxx.se/bug/?i=3743 [20] = https://curl.haxx.se/bug/?i=3759 [21] = https://curl.haxx.se/bug/?i=3758 [22] = https://curl.haxx.se/bug/?i=3739 [23] = https://curl.haxx.se/bug/?i=3725 [24] = https://curl.haxx.se/bug/?i=3721 [25] = https://curl.haxx.se/bug/?i=3654 [26] = https://curl.haxx.se/bug/?i=3753 [27] = https://curl.haxx.se/bug/?i=3757 [28] = https://curl.haxx.se/bug/?i=3774 [29] = https://curl.haxx.se/bug/?i=3783 [30] = https://curl.haxx.se/bug/?i=3777 [31] = https://curl.haxx.se/bug/?i=3752 [32] = https://curl.haxx.se/bug/?i=3713 [33] = https://curl.haxx.se/bug/?i=3762 [34] = https://curl.haxx.se/bug/?i=3772 [35] = https://curl.haxx.se/bug/?i=3823 [36] = https://curl.haxx.se/bug/?i=3750 [37] = https://curl.haxx.se/bug/?i=3782 [38] = https://curl.haxx.se/bug/?i=3717 [39] = https://curl.haxx.se/mail/lib-2019-04/0052.html [40] = https://curl.haxx.se/bug/?i=3768 [41] = https://curl.haxx.se/bug/?i=3813 [42] = https://curl.haxx.se/bug/?i=3820 [43] = https://curl.haxx.se/bug/?i=3808 [44] = https://curl.haxx.se/bug/?i=3805 [45] = https://curl.haxx.se/bug/?i=3809 [46] = https://curl.haxx.se/bug/?i=3769 [47] = https://curl.haxx.se/bug/?i=3801 [48] = https://curl.haxx.se/bug/?i=3488 [49] = https://curl.haxx.se/bug/?i=3817 [50] = https://curl.haxx.se/bug/?i=3833 [51] = https://curl.haxx.se/bug/?i=3829 [52] = https://curl.haxx.se/bug/?i=3537 [53] = https://curl.haxx.se/bug/?i=3726 [54] = https://curl.haxx.se/bug/?i=3570 [55] = https://curl.haxx.se/bug/?i=3771 [56] = https://curl.haxx.se/bug/?i=3807 [57] = https://curl.haxx.se/bug/?i=3846 [58] = https://curl.haxx.se/bug/?i=3838 [59] = https://curl.haxx.se/bug/?i=3834 [60] = https://curl.haxx.se/bug/?i=3837 [61] = https://curl.haxx.se/bug/?i=3869 [62] = https://curl.haxx.se/bug/?i=3818 [63] = https://curl.haxx.se/bug/?i=3866 [64] = https://curl.haxx.se/bug/?i=3867 [65] = https://curl.haxx.se/bug/?i=3861 [66] = https://curl.haxx.se/bug/?i=3850 [67] = https://curl.haxx.se/bug/?i=3862 [68] = https://curl.haxx.se/bug/?i=3860 [69] = https://curl.haxx.se/bug/?i=3856 [70] = https://curl.haxx.se/bug/?i=3858 [71] = https://curl.haxx.se/bug/?i=3885 [72] = https://curl.haxx.se/bug/?i=3878 [73] = https://curl.haxx.se/bug/?i=3880 [74] = https://curl.haxx.se/bug/?i=3824 [75] = https://curl.haxx.se/bug/?i=3711 [76] = https://curl.haxx.se/bug/?i=3863 [77] = https://curl.haxx.se/bug/?i=3894 [78] = https://curl.haxx.se/bug/?i=3844 [79] = https://curl.haxx.se/bug/?i=3895 [80] = https://curl.haxx.se/bug/?i=3887 [81] = https://curl.haxx.se/bug/?i=3876 [82] = https://curl.haxx.se/docs/CVE-2019-5436.html [83] = https://curl.haxx.se/bug/?i=3873 [84] = https://curl.haxx.se/bug/?i=3905 [85] = https://curl.haxx.se/bug/?i=3892 [86] = https://curl.haxx.se/bug/?i=3906 [87] = https://curl.haxx.se/docs/CVE-2019-5435.html [88] = https://curl.haxx.se/bug/?i=3908 [89] = https://curl.haxx.se/bug/?i=3902 |
Changes to jni/curl/configure.
︙ | ︙ | |||
22248 22249 22250 22251 22252 22253 22254 | if test "${with_amissl+set}" = set; then : withval=$with_amissl; OPT_AMISSL=$withval fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL)" >&5 $as_echo_n "checking whether to enable Amiga native SSL/TLS (AmiSSL)... " >&6; } | | | 22248 22249 22250 22251 22252 22253 22254 22255 22256 22257 22258 22259 22260 22261 22262 | if test "${with_amissl+set}" = set; then : withval=$with_amissl; OPT_AMISSL=$withval fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL)" >&5 $as_echo_n "checking whether to enable Amiga native SSL/TLS (AmiSSL)... " >&6; } if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then if test -z "$ssl_backends" -o "x$OPT_AMISSL" != xno; then ssl_msg= if test "x$OPT_AMISSL" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ssl_msg="AmiSSL" test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes |
︙ | ︙ | |||
23617 23618 23619 23620 23621 23622 23623 23624 23625 23626 23627 23628 23629 23630 | fi check_for_ca_bundle=1 fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi if test X"$OPENSSL_ENABLED" = X"1"; then # Check whether --with-egd-socket was given. if test "${with_egd_socket+set}" = set; then : withval=$with_egd_socket; EGD_SOCKET="$withval" | > > > > > > > > > > | 23617 23618 23619 23620 23621 23622 23623 23624 23625 23626 23627 23628 23629 23630 23631 23632 23633 23634 23635 23636 23637 23638 23639 23640 | fi check_for_ca_bundle=1 fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi if test X"$OPT_SSL" != Xoff && test X"$OPT_SSL" != Xno && test "$OPENSSL_ENABLED" != "1"; then { $as_echo "$as_me:${as_lineno-$LINENO}: OPT_SSL: $OPT_SSL" >&5 $as_echo "$as_me: OPT_SSL: $OPT_SSL" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&5 $as_echo "$as_me: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&6;} as_fn_error $? "--with-ssl was given but OpenSSL could not be detected" "$LINENO" 5 fi if test X"$OPENSSL_ENABLED" = X"1"; then # Check whether --with-egd-socket was given. if test "${with_egd_socket+set}" = set; then : withval=$with_egd_socket; EGD_SOCKET="$withval" |
︙ | ︙ | |||
27838 27839 27840 27841 27842 27843 27844 | withval=$with_fish_functions_dir; OPT_FISH_FPATH=$withval fi case "$OPT_FISH_FPATH" in no) ;; default|yes) | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > | 27848 27849 27850 27851 27852 27853 27854 27855 27856 27857 27858 27859 27860 27861 27862 27863 27864 27865 27866 27867 27868 27869 27870 27871 27872 27873 27874 27875 27876 27877 27878 27879 27880 27881 27882 27883 27884 27885 27886 27887 27888 27889 27890 27891 27892 27893 27894 27895 27896 27897 27898 27899 27900 27901 27902 27903 27904 27905 27906 27907 27908 27909 27910 27911 27912 27913 27914 27915 27916 27917 27918 27919 27920 27921 27922 27923 27924 27925 27926 27927 27928 27929 27930 27931 27932 27933 27934 27935 27936 27937 27938 27939 27940 27941 27942 27943 27944 27945 27946 27947 27948 27949 27950 27951 27952 27953 27954 27955 27956 27957 27958 27959 27960 27961 27962 27963 27964 27965 27966 27967 27968 27969 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 27980 27981 27982 27983 27984 27985 27986 27987 27988 27989 27990 27991 27992 | withval=$with_fish_functions_dir; OPT_FISH_FPATH=$withval fi case "$OPT_FISH_FPATH" in no) ;; default|yes) 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKGCONFIG+:} false; then : $as_echo_n "(cached) " >&6 else 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 test -z "$as_dir" && as_dir=. 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" $as_echo "$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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 $as_echo "$PKGCONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then : $as_echo_n "(cached) " >&6 else 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 test -z "$as_dir" && as_dir=. 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" $as_echo "$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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 $as_echo "$ac_pt_PKGCONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="no" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fish options with pkg-config" >&5 $as_echo_n "checking for fish options with pkg-config... " >&6; } itexists=` if test -n ""; then PKG_CONFIG_LIBDIR="" export PKG_CONFIG_LIBDIR fi $PKGCONFIG --exists fish >/dev/null 2>&1 && echo 1` if test -z "$itexists"; then PKGCONFIG="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } fi fi if test "$PKGCONFIG" != "no" ; then FISH_FUNCTIONS_DIR="$($PKGCONFIG --variable completionsdir fish)" else FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d" fi ;; *) FISH_FUNCTIONS_DIR="$withval" ;; esac |
︙ | ︙ | |||
33725 33726 33727 33728 33729 33730 33731 33732 33733 33734 33735 33736 33737 33738 | curl_cv_func_gethostname="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } curl_cv_func_gethostname="no" fi # tst_links_getifaddrs="unknown" tst_proto_getifaddrs="unknown" tst_compi_getifaddrs="unknown" tst_works_getifaddrs="unknown" tst_allow_getifaddrs="unknown" | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | curl_cv_func_gethostname="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } curl_cv_func_gethostname="no" fi # tst_links_getpeername="unknown" tst_proto_getpeername="unknown" tst_compi_getpeername="unknown" tst_allow_getpeername="unknown" # { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getpeername can be linked" >&5 $as_echo_n "checking if getpeername 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 != getpeername(0, (void *)0, (void *)0)) return 1; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_links_getpeername="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_links_getpeername="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_getpeername" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getpeername is prototyped" >&5 $as_echo_n "checking if getpeername 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 "getpeername" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_proto_getpeername="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_proto_getpeername="no" fi rm -f conftest* fi # if test "$tst_proto_getpeername" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getpeername is compilable" >&5 $as_echo_n "checking if getpeername 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 != getpeername(0, (void *)0, (void *)0)) return 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_compi_getpeername="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_compi_getpeername="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # if test "$tst_compi_getpeername" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getpeername usage allowed" >&5 $as_echo_n "checking if getpeername usage allowed... " >&6; } if test "x$curl_disallow_getpeername" != "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_allow_getpeername="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_allow_getpeername="no" fi fi # { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getpeername might be used" >&5 $as_echo_n "checking if getpeername might be used... " >&6; } if test "$tst_links_getpeername" = "yes" && test "$tst_proto_getpeername" = "yes" && test "$tst_compi_getpeername" = "yes" && test "$tst_allow_getpeername" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_GETPEERNAME 1 _ACEOF curl_cv_func_getpeername="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } curl_cv_func_getpeername="no" fi # tst_links_getsockname="unknown" tst_proto_getsockname="unknown" tst_compi_getsockname="unknown" tst_allow_getsockname="unknown" # { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getsockname can be linked" >&5 $as_echo_n "checking if getsockname 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 != getsockname(0, (void *)0, (void *)0)) return 1; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_links_getsockname="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_links_getsockname="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext # if test "$tst_links_getsockname" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getsockname is prototyped" >&5 $as_echo_n "checking if getsockname 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 "getsockname" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_proto_getsockname="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_proto_getsockname="no" fi rm -f conftest* fi # if test "$tst_proto_getsockname" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getsockname is compilable" >&5 $as_echo_n "checking if getsockname 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 != getsockname(0, (void *)0, (void *)0)) return 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_compi_getsockname="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_compi_getsockname="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # if test "$tst_compi_getsockname" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getsockname usage allowed" >&5 $as_echo_n "checking if getsockname usage allowed... " >&6; } if test "x$curl_disallow_getsockname" != "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } tst_allow_getsockname="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } tst_allow_getsockname="no" fi fi # { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getsockname might be used" >&5 $as_echo_n "checking if getsockname might be used... " >&6; } if test "$tst_links_getsockname" = "yes" && test "$tst_proto_getsockname" = "yes" && test "$tst_compi_getsockname" = "yes" && test "$tst_allow_getsockname" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_GETSOCKNAME 1 _ACEOF curl_cv_func_getsockname="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } curl_cv_func_getsockname="no" fi # tst_links_getifaddrs="unknown" tst_proto_getifaddrs="unknown" tst_compi_getifaddrs="unknown" tst_works_getifaddrs="unknown" tst_allow_getifaddrs="unknown" |
︙ | ︙ |
Changes to jni/curl/configure.ac.
︙ | ︙ | |||
1565 1566 1567 1568 1569 1570 1571 | OPT_AMISSL=no AC_ARG_WITH(amissl,dnl AC_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]) AC_HELP_STRING([--without-amissl], [disable Amiga native SSL/TLS (AmiSSL)]), OPT_AMISSL=$withval) AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)]) | | | 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 | OPT_AMISSL=no AC_ARG_WITH(amissl,dnl AC_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]) AC_HELP_STRING([--without-amissl], [disable Amiga native SSL/TLS (AmiSSL)]), OPT_AMISSL=$withval) AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)]) if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then if test -z "$ssl_backends" -o "x$OPT_AMISSL" != xno; then ssl_msg= if test "x$OPT_AMISSL" != "xno"; then AC_MSG_RESULT(yes) ssl_msg="AmiSSL" test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes AMISSL_ENABLED=1 |
︙ | ︙ | |||
1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 | fi CURL_CHECK_OPENSSL_API check_for_ca_bundle=1 fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi dnl ********************************************************************** dnl Check for the random seed preferences dnl ********************************************************************** if test X"$OPENSSL_ENABLED" = X"1"; then AC_ARG_WITH(egd-socket, | > > > > > > > > | 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 | fi CURL_CHECK_OPENSSL_API check_for_ca_bundle=1 fi test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" fi if test X"$OPT_SSL" != Xoff && test X"$OPT_SSL" != Xno && test "$OPENSSL_ENABLED" != "1"; then AC_MSG_NOTICE([OPT_SSL: $OPT_SSL]) AC_MSG_NOTICE([OPENSSL_ENABLED: $OPENSSL_ENABLED]) AC_MSG_ERROR([--with-ssl was given but OpenSSL could not be detected]) fi dnl ********************************************************************** dnl Check for the random seed preferences dnl ********************************************************************** if test X"$OPENSSL_ENABLED" = X"1"; then AC_ARG_WITH(egd-socket, |
︙ | ︙ | |||
3475 3476 3477 3478 3479 3480 3481 | [OPT_FISH_FPATH=$withval]) case "$OPT_FISH_FPATH" in no) dnl --without-fish-functions-dir option used ;; default|yes) dnl --with-fish-functions-dir option used without path | > > > > | > | 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 | [OPT_FISH_FPATH=$withval]) case "$OPT_FISH_FPATH" in no) dnl --without-fish-functions-dir option used ;; default|yes) dnl --with-fish-functions-dir option used without path CURL_CHECK_PKGCONFIG(fish) if test "$PKGCONFIG" != "no" ; then FISH_FUNCTIONS_DIR="$($PKGCONFIG --variable completionsdir fish)" else FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d" fi AC_SUBST(FISH_FUNCTIONS_DIR) ;; *) dnl --with-fish-functions-dir option used with path FISH_FUNCTIONS_DIR="$withval" AC_SUBST(FISH_FUNCTIONS_DIR) ;; |
︙ | ︙ | |||
3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 | CURL_CHECK_FUNC_GETADDRINFO CURL_CHECK_FUNC_GAI_STRERROR CURL_CHECK_FUNC_GETHOSTBYADDR CURL_CHECK_FUNC_GETHOSTBYADDR_R CURL_CHECK_FUNC_GETHOSTBYNAME CURL_CHECK_FUNC_GETHOSTBYNAME_R CURL_CHECK_FUNC_GETHOSTNAME CURL_CHECK_FUNC_GETIFADDRS CURL_CHECK_FUNC_GETSERVBYPORT_R CURL_CHECK_FUNC_GMTIME_R CURL_CHECK_FUNC_INET_NTOA_R CURL_CHECK_FUNC_INET_NTOP CURL_CHECK_FUNC_INET_PTON CURL_CHECK_FUNC_IOCTL | > > | 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 | CURL_CHECK_FUNC_GETADDRINFO CURL_CHECK_FUNC_GAI_STRERROR CURL_CHECK_FUNC_GETHOSTBYADDR CURL_CHECK_FUNC_GETHOSTBYADDR_R CURL_CHECK_FUNC_GETHOSTBYNAME CURL_CHECK_FUNC_GETHOSTBYNAME_R CURL_CHECK_FUNC_GETHOSTNAME CURL_CHECK_FUNC_GETPEERNAME CURL_CHECK_FUNC_GETSOCKNAME CURL_CHECK_FUNC_GETIFADDRS CURL_CHECK_FUNC_GETSERVBYPORT_R CURL_CHECK_FUNC_GMTIME_R CURL_CHECK_FUNC_INET_NTOA_R CURL_CHECK_FUNC_INET_NTOP CURL_CHECK_FUNC_INET_PTON CURL_CHECK_FUNC_IOCTL |
︙ | ︙ |
Added jni/curl/docs/BUG-BOUNTY.md.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | # The curl bug bounty The curl project runs a bug bounty program in association with [HackerOne](https://www.hackerone.com) and the [Internet Bug Bounty](https://internetbugbounty.org). # How does it work? Start out by posting your suspected security vulnerability directly to [curl's HackerOne program](https://hackerone.com/curl). After you have reported a security issue, it has been deemed credible, and a patch and advisory has been made public, you may be eligible for a bounty from this program. See all details at [https://hackerone.com/curl](https://hackerone.com/curl) This bounty is relying on funds from sponsors. If you use curl professionally, consider help funding this! See [https://opencollective.com/curl](https://opencollective.com/curl) for details. # What are the reward amounts? The curl projects offer monetary compensation for reported and published security vulnerabilities. The amount of money that is rewarded depends on how serious the flaw is determined to be. We offer reward money *up to* a certain amount per severity. The curl security team determines the severity of each reported flaw on a case by case basis and the exact amount rewarded to the reporter is then decided. Check out the current award amounts at [https://hackerone.com/curl](https://hackerone.com/curl) # Who is eligible for a reward? Everyone and anyone who reports a security problem in a released curl version that hasn't already been reported can ask for a bounty. Vulnerabilities in features that are off by default and documented as experimental are not eligible for a reward. The vulnerability has to be fixed and publicly announced (by the curl project) before a bug bounty will be considered. Bounties need to be requested within twelve months from the publication of the vulnerability. The vulnerabilities must not have been made public before February 1st, 2019. We do not retroactively pay for old, already known, or published security problems. # Product vulnerabilities only This bug bounty only concerns the curl and libcurl products and thus their respective source codes - when running on existing hardware. It does not include documentation, websites, or other infrastructure. The curl security team will be the sole arbiter if a reported flaw can be subject to a bounty or not. # How are vulnerabilities graded? The grading of each reported vulnerability that makes a reward claim will be performed by the curl security team. The grading will be based on the CVSS (Common Vulnerability Scoring System) 3.0. # How are reward amounts determined? The curl security team first gives the vulnerability a score, as mentioned above, and based on that level we set an amount depending on the specifics of the individual case. Other sponsors of the program might also get involved and can raise the amounts depending on the particular issue. # What happens if the bounty fund is drained? The bounty fund depends on sponsors. If we pay out more bounties than we add, the fund will eventually drain. If that end up happening, we will simply not be able to pay out as high bounties as we would like and hope that we can convince new sponsors to help us top up the fund again. # Regarding taxes, etc. on the bounties In the event that the individual receiving a curl bug bounty needs to pay taxes on the reward money, the responsibility lies with the receiver. The curl project or its security team never actually receive any of this money, hold the money, or pay out the money. ## Bonus levels In cooperation with [Dropbox](https://www.dropbox.com) the curl bug bounty can offer the highest levels of rewards if the issue covers one of the interest areas of theirs - and only if the bug is graded *high* or *critical*. A non-exhaustive list of vulnerabilities Dropbox is interested in are: - RCE - URL parsing vulnerabilities with demonstrable security impact Dropbox would generally hand out rewards for critical vulnerabilities ranging from 12k-32k USD where RCE is on the upper end of the spectrum. URL parsing vulnerabilities with demonstrable security impact might include incorrectly determining the authority of a URL when a special character is inserted into the path of the URL (as a hypothetical). This type of vulnerability would likely yield 6k-12k unless further impact could be demonstrated. |
Changes to jni/curl/docs/BUGS.
︙ | ︙ | |||
57 58 59 60 61 62 63 | If you find a bug or problem in curl or libcurl that you think has a security impact, for example a bug that can put users in danger or make them vulnerable if the bug becomes public knowledge, then please report that bug using our security development process. Security related bugs or bugs that are suspected to have a security impact, | > | > > > | | > | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | If you find a bug or problem in curl or libcurl that you think has a security impact, for example a bug that can put users in danger or make them vulnerable if the bug becomes public knowledge, then please report that bug using our security development process. Security related bugs or bugs that are suspected to have a security impact, should be reported on the curl security tracker at HackerOne: https://hackerone.com/curl This ensures that the report reaches the curl security team so that they first can be deal with the report away from the public to minimize the harm and impact it will have on existing users out there who might be using the vulnerable versions. The curl project's process for handling security related issues is documented here: https://curl.haxx.se/dev/secprocess.html 1.4 What to report |
︙ | ︙ |
Changes to jni/curl/docs/CIPHERS.md.
︙ | ︙ | |||
267 268 269 270 271 272 273 | `ecdhe_rsa_chacha20_poly1305_sha_256` `ecdhe_ecdsa_chacha20_poly1305_sha_256` `dhe_rsa_chacha20_poly1305_sha_256` ## GSKit | > | | 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | `ecdhe_rsa_chacha20_poly1305_sha_256` `ecdhe_ecdsa_chacha20_poly1305_sha_256` `dhe_rsa_chacha20_poly1305_sha_256` ## GSKit Ciphers are internally defined as [numeric codes](https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/gsk_attribute_set_buffer.htm), but libcurl maps them to the following case-insensitive names. ### SSL2 cipher suites (insecure: disabled by default) `rc2-md5` `rc4-md5` `exp-rc2-md5` |
︙ | ︙ | |||
442 443 444 445 446 447 448 | `ECDHE-PSK-NULL-SHA256`, `ECDHE-PSK-AES128-CBC-SHA256`, `PSK-CHACHA20-POLY1305`, `ECDHE-PSK-CHACHA20-POLY1305`, `DHE-PSK-CHACHA20-POLY1305`, `EDH-RSA-DES-CBC3-SHA`, | | | > > > | 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 | `ECDHE-PSK-NULL-SHA256`, `ECDHE-PSK-AES128-CBC-SHA256`, `PSK-CHACHA20-POLY1305`, `ECDHE-PSK-CHACHA20-POLY1305`, `DHE-PSK-CHACHA20-POLY1305`, `EDH-RSA-DES-CBC3-SHA`, ## Schannel Schannel allows the enabling and disabling of encryption algorithms, but not specific ciphersuites. They are [defined](https://docs.microsoft.com/windows/desktop/SecCrypto/alg-id) by Microsoft. `CALG_MD2`, `CALG_MD4`, `CALG_MD5`, `CALG_SHA`, `CALG_SHA1`, `CALG_MAC`, |
︙ | ︙ |
Changes to jni/curl/docs/CODE_STYLE.md.
1 2 3 4 5 6 7 8 9 10 11 | # curl C code style Source code that has a common style is easier to read than code that uses different styles in different places. It helps making the code feel like one single code base. Easy-to-read is a very important property of code and helps making it easier to review when new things are added and it helps debugging code when developers are trying to figure out why things go wrong. A unified style is more important than individual contributors having their own personal tastes satisfied. Our C code has a few style rules. Most of them are verified and upheld by the | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # curl C code style Source code that has a common style is easier to read than code that uses different styles in different places. It helps making the code feel like one single code base. Easy-to-read is a very important property of code and helps making it easier to review when new things are added and it helps debugging code when developers are trying to figure out why things go wrong. A unified style is more important than individual contributors having their own personal tastes satisfied. Our C code has a few style rules. Most of them are verified and upheld by the `lib/checksrc.pl` script. Invoked with `make checksrc` or even by default by the build system when built after `./configure --enable-debug` has been used. It is normally not a problem for anyone to follow the guidelines, as you just need to copy the style already used in the source code and there are no particularly unusual rules in our set of rules. We also work hard on writing code that are warning-free on all the major platforms and in general on as many platforms as possible. Code that obviously |
︙ | ︙ | |||
223 224 225 226 227 228 229 | (int)clipamount)); ## Platform dependent code Use **#ifdef HAVE_FEATURE** to do conditional code. We avoid checking for particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE shall be generated by the configure script for unix-like systems and they are | | | 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 | (int)clipamount)); ## Platform dependent code Use **#ifdef HAVE_FEATURE** to do conditional code. We avoid checking for particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE shall be generated by the configure script for unix-like systems and they are hard-coded in the `config-[system].h` files for the others. We also encourage use of macros/functions that possibly are empty or defined to constants when libcurl is built without that feature, to make the code seamless. Like this example where the **magic()** function works differently depending on a build-time conditional: #ifdef HAVE_MAGIC |
︙ | ︙ |
Changes to jni/curl/docs/DEPRECATE.md.
1 2 3 4 5 6 7 | # 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 as soon as possible and explain to us why this is a problem for you and how your use case can't be satisfied properly using a work around. | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 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 as soon as possible and explain to us why this is a problem for you and how your use case can't be satisfied properly using a work around. ## HTTP/0.9 Supporting this is non-obvious and might even come as a surprise to some users. Potentially even being a security risk in some cases. ### State |
︙ | ︙ |
Changes to jni/curl/docs/INSTALL.md.
︙ | ︙ | |||
60 61 62 63 64 65 66 | If you insist on forcing a build without SSL support, even though you may have OpenSSL installed in your system, you can run configure like this: ./configure --without-ssl If you have OpenSSL installed, but with the libraries in one place and the | | | 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | If you insist on forcing a build without SSL support, even though you may have OpenSSL installed in your system, you can run configure like this: ./configure --without-ssl If you have OpenSSL installed, but with the libraries in one place and the header files somewhere else, you have to set the `LDFLAGS` and `CPPFLAGS` environment variables prior to running configure. Something like this should work: CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure If you have shared SSL libs installed in a directory where your run-time linker doesn't find them (which usually causes configure failures), you can |
︙ | ︙ | |||
117 118 119 120 121 122 123 | discouraged, and intermixing CRTs in the same app is something to avoid at any cost. Reading and comprehending Microsoft Knowledge Base articles KB94248 and KB140584 is a must for any Windows developer. Especially important is full understanding if you are not going to follow the advice given above. | | | | | 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | discouraged, and intermixing CRTs in the same app is something to avoid at any cost. Reading and comprehending Microsoft Knowledge Base articles KB94248 and KB140584 is a must for any Windows developer. Especially important is full understanding if you are not going to follow the advice given above. - [How To Use the C Run-Time](https://support.microsoft.com/help/94248/how-to-use-the-c-run-time) - [Run-Time Library Compiler Options](https://docs.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library) - [Potential Errors Passing CRT Objects Across DLL Boundaries](https://docs.microsoft.com/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries) If your app is misbehaving in some strange way, or it is suffering from memory corruption, before asking for further help, please try first to rebuild every single library your app uses as well as your app using the debug multithreaded dynamic C runtime. If you get linkage errors read section 5.7 of the FAQ document. |
︙ | ︙ | |||
144 145 146 147 148 149 150 | - `mingw32-make mingw32-zlib` to build with Zlib support; - `mingw32-make mingw32-ssl-zlib` to build with SSL and Zlib enabled; - `mingw32-make mingw32-ssh2-ssl-zlib` to build with SSH2, SSL, Zlib; - `mingw32-make mingw32-ssh2-ssl-sspi-zlib` to build with SSH2, SSL, Zlib and SSPI support. If you have any problems linking libraries or finding header files, be sure | | | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | - `mingw32-make mingw32-zlib` to build with Zlib support; - `mingw32-make mingw32-ssl-zlib` to build with SSL and Zlib enabled; - `mingw32-make mingw32-ssh2-ssl-zlib` to build with SSH2, SSL, Zlib; - `mingw32-make mingw32-ssh2-ssl-sspi-zlib` to build with SSH2, SSL, Zlib and SSPI support. If you have any problems linking libraries or finding header files, be sure to verify that the provided `Makefile.m32` files use the proper paths, and adjust as necessary. It is also possible to override these paths with environment variables, for example: set ZLIB_PATH=c:\zlib-1.2.8 set OPENSSL_PATH=c:\openssl-1.0.2c set LIBSSH2_PATH=c:\libssh2-1.6.0 |
︙ | ︙ | |||
168 169 170 171 172 173 174 | set USE_LDAP_NOVELL=1 If you want to enable LDAPS support then set LDAPS=1. ## Cygwin Almost identical to the unix installation. Run the configure script in the | | | | 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | set USE_LDAP_NOVELL=1 If you want to enable LDAPS support then set LDAPS=1. ## Cygwin Almost identical to the unix installation. Run the configure script in the curl source tree root with `sh configure`. Make sure you have the `sh` executable in `/bin/` or you'll see the configure fail toward the end. Run `make` ## Disabling Specific Protocols in Windows builds The configure utility, unfortunately, is not available for the Windows environment, therefore, you cannot use the various disable-protocol options of |
︙ | ︙ | |||
196 197 198 199 200 201 202 | - `CURL_DISABLE_HTTP` disables HTTP - `CURL_DISABLE_IMAP` disables IMAP - `CURL_DISABLE_POP3` disables POP3 - `CURL_DISABLE_SMTP` disables SMTP If you want to set any of these defines you have the following options: | | | | | | | | 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 | - `CURL_DISABLE_HTTP` disables HTTP - `CURL_DISABLE_IMAP` disables IMAP - `CURL_DISABLE_POP3` disables POP3 - `CURL_DISABLE_SMTP` disables SMTP If you want to set any of these defines you have the following options: - Modify `lib/config-win32.h` - Modify `lib/curl_setup.h` - Modify `winbuild/Makefile.vc` - Modify the "Preprocessor Definitions" in the libcurl project Note: The pre-processor settings can be found using the Visual Studio IDE under "Project -> Settings -> C/C++ -> General" in VC6 and "Project -> Properties -> Configuration Properties -> C/C++ -> Preprocessor" in later versions. ## Using BSD-style lwIP instead of Winsock TCP/IP stack in Win32 builds In order to compile libcurl and curl using BSD-style lwIP TCP/IP stack it is necessary to make definition of preprocessor symbol `USE_LWIPSOCK` visible to libcurl and curl compilation processes. To set this definition you have the following alternatives: - Modify `lib/config-win32.h` and `src/config-win32.h` - Modify `winbuild/Makefile.vc` - Modify the "Preprocessor Definitions" in the libcurl project Note: The pre-processor settings can be found using the Visual Studio IDE under "Project -> Settings -> C/C++ -> General" in VC6 and "Project -> Properties -> Configuration Properties -> C/C++ -> Preprocessor" in later versions. |
︙ | ︙ | |||
244 245 246 247 248 249 250 | When building an application that uses the static libcurl library on Windows, you must add `-DCURL_STATICLIB` to your `CFLAGS`. Otherwise the linker will look for dynamic import symbols. ## Legacy Windows and SSL | | | | | | | | | | | | 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 | When building an application that uses the static libcurl library on Windows, you must add `-DCURL_STATICLIB` to your `CFLAGS`. Otherwise the linker will look for dynamic import symbols. ## Legacy Windows and SSL Schannel (from Windows SSPI), is the native SSL library in Windows. However, Schannel in Windows <= XP is unable to connect to servers that no longer support the legacy handshakes and algorithms used by those versions. If you will be using curl in one of those earlier versions of Windows you should choose another SSL backend such as OpenSSL. # Apple iOS and macOS On modern Apple operating systems, curl can be built to use Apple's SSL/TLS implementation, Secure Transport, instead of OpenSSL. To build with Secure Transport for SSL/TLS, use the configure option `--with-darwinssl`. (It is not necessary to use the option `--without-ssl`.) This feature requires iOS 5.0 or later, or OS X 10.5 ("Leopard") or later. When Secure Transport is in use, the curl options `--cacert` and `--capath` and their libcurl equivalents, will be ignored, because Secure Transport uses the certificates stored in the Keychain to evaluate whether or not to trust the server. This, of course, includes the root certificates that ship with the OS. The `--cert` and `--engine` options, and their libcurl equivalents, are currently unimplemented in curl with Secure Transport. For macOS users: In OS X 10.8 ("Mountain Lion"), Apple made a major overhaul to the Secure Transport API that, among other things, added support for the newer TLS 1.1 and 1.2 protocols. To get curl to support TLS 1.1 and 1.2, you must build curl on Mountain Lion or later, or by using the equivalent SDK. If you set the `MACOSX_DEPLOYMENT_TARGET` environmental variable to an earlier version of macOS prior to building curl, then curl will use the new Secure Transport API on Mountain Lion and later, and fall back on the older API when the same curl binary is executed on older cats. For example, running these commands in curl's directory in the shell will build the code such that it will run on cats as old as OS X 10.6 ("Snow Leopard") (using bash): export MACOSX_DEPLOYMENT_TARGET="10.6" ./configure --with-darwinssl make # Cross compile Download and unpack the curl package. `cd` to the new directory. (e.g. `cd curl-7.12.3`) Set environment variables to point to the cross-compile toolchain and call configure with any options you need. Be sure and specify the `--host` and `--build` parameters at configuration time. The following script is an example of cross-compiling for the IBM 405GP PowerPC processor using the toolchain from MonteVista for Hardhat Linux. |
︙ | ︙ | |||
323 324 325 326 327 328 329 | ./configure --host=ARCH-OS # REDUCING SIZE There are a number of configure options that can be used to reduce the size of libcurl for embedded applications where binary size is an important factor. | | | 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | ./configure --host=ARCH-OS # REDUCING SIZE There are a number of configure options that can be used to reduce the size of libcurl for embedded applications where binary size is an important factor. First, be sure to set the `CFLAGS` variable when configuring with any relevant compiler optimization flags to reduce the size of the binary. For gcc, this would mean at minimum the -Os option, and potentially the `-march=X`, `-mdynamic-no-pic` and `-flto` options as well, e.g. ./configure CFLAGS='-Os' LDFLAGS='-Wl,-Bsymbolic'... Note that newer compilers often produce smaller code than older versions |
︙ | ︙ | |||
356 357 358 359 360 361 362 | - `--without-libidn` (disables support for the libidn DNS library) - `--without-librtmp` (disables support for RTMP) - `--without-ssl` (disables support for SSL/TLS) - `--without-zlib` (disables support for on-the-fly decompression) The GNU compiler and linker have a number of options that can reduce the size of the libcurl dynamic libraries on some platforms even further. | | | | 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | - `--without-libidn` (disables support for the libidn DNS library) - `--without-librtmp` (disables support for RTMP) - `--without-ssl` (disables support for SSL/TLS) - `--without-zlib` (disables support for on-the-fly decompression) The GNU compiler and linker have a number of options that can reduce the size of the libcurl dynamic libraries on some platforms even further. Specify them by providing appropriate `CFLAGS` and `LDFLAGS` variables on the configure command-line, e.g. CFLAGS="-Os -ffunction-sections -fdata-sections -fno-unwind-tables -fno-asynchronous-unwind-tables -flto" LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections" Be sure also to strip debugging symbols from your binaries after compiling using 'strip' (or the appropriate variant if cross-compiling). If space is |
︙ | ︙ | |||
379 380 381 382 383 384 385 | You may find that statically linking libcurl to your application will result in a lower total size than dynamically linking. Note that the curl test harness can detect the use of some, but not all, of the `--disable` statements suggested above. Use will cause tests relying on those features to fail. The test harness can be manually forced to skip the | | | 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 | You may find that statically linking libcurl to your application will result in a lower total size than dynamically linking. Note that the curl test harness can detect the use of some, but not all, of the `--disable` statements suggested above. Use will cause tests relying on those features to fail. The test harness can be manually forced to skip the relevant tests by specifying certain key words on the `runtests.pl` command line. Following is a list of appropriate key words: - `--disable-cookies` !cookies - `--disable-manual` !--manual - `--disable-proxy` !HTTP\ proxy !proxytunnel !SOCKS4 !SOCKS5 # PORTS |
︙ | ︙ |
Changes to jni/curl/docs/INTERNALS.md.
︙ | ︙ | |||
9 10 11 12 13 14 15 | - [`Curl_connect`](#Curl_connect) - [`multi_do`](#multi_do) - [`Curl_readwrite`](#Curl_readwrite) - [`multi_done`](#multi_done) - [`Curl_disconnect`](#Curl_disconnect) - [HTTP(S)](#http) - [FTP](#ftp) | | | > > > > > > > | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | - [`Curl_connect`](#Curl_connect) - [`multi_do`](#multi_do) - [`Curl_readwrite`](#Curl_readwrite) - [`multi_done`](#multi_done) - [`Curl_disconnect`](#Curl_disconnect) - [HTTP(S)](#http) - [FTP](#ftp) - [Kerberos](#kerberos) - [TELNET](#telnet) - [FILE](#file) - [SMB](#smb) - [LDAP](#ldap) - [E-mail](#email) - [General](#general) - [Persistent Connections](#persistent) - [multi interface/non-blocking](#multi) - [SSL libraries](#ssl) - [Library Symbols](#symbols) - [Return Codes and Informationals](#returncodes) - [AP/ABI](#abi) - [Client](#client) - [Memory Debugging](#memorydebug) - [Test Suite](#test) - [Asynchronous name resolves](#asyncdns) - [c-ares](#cares) - [`curl_off_t`](#curl_off_t) - [curlx](#curlx) - [Content Encoding](#contentencoding) - [`hostip.c` explained](#hostip) - [Track Down Memory Leaks](#memoryleak) - [`multi_socket`](#multi_socket) - [Structs in libcurl](#structs) - [Curl_easy](#Curl_easy) - [connectdata](#connectdata) - [Curl_multi](#Curl_multi) - [Curl_handler](#Curl_handler) - [conncache](#conncache) - [Curl_share](#Curl_share) - [CookieInfo](#CookieInfo) <a name="intro"></a> Intro ===== This project is split in two. The library and the client. The client part uses the library, but the library is designed to allow other applications to |
︙ | ︙ | |||
62 63 64 65 66 67 68 | Tagging shall be used extensively, and by the time we release new archives we should tag the sources with a name similar to the released version number. <a name="Portability"></a> Portability =========== | | | 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | Tagging shall be used extensively, and by the time we release new archives we should tag the sources with a name similar to the released version number. <a name="Portability"></a> Portability =========== We write curl and libcurl to compile with C89 compilers. On 32-bit and up machines. Most of libcurl assumes more or less POSIX compliance but that's not a requirement. We write libcurl to build and work with lots of third party tools, and we want it to remain functional and buildable with these and later versions (older versions may still work but is not what we work hard to maintain): |
︙ | ︙ | |||
114 115 116 117 118 119 120 | - GNU Libtool 1.4.2 - GNU Autoconf 2.57 - GNU Automake 1.7 - GNU M4 1.4 - perl 5.004 - roffit 0.5 | | | | 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 | - GNU Libtool 1.4.2 - GNU Autoconf 2.57 - GNU Automake 1.7 - GNU M4 1.4 - perl 5.004 - roffit 0.5 - groff ? (any version that supports `groff -Tps -man [in] [out]`) - ps2pdf (gs) ? <a name="winvsunix"></a> Windows vs Unix =============== There are a few differences in how to program curl the Unix way compared to the Windows way. Perhaps the four most notable details are: 1. Different function names for socket operations. In curl, this is solved with defines and macros, so that the source looks the same in all places except for the header file that defines them. The macros in use are `sclose()`, `sread()` and `swrite()`. 2. Windows requires a couple of init calls for the socket stuff. That's taken care of by the `curl_global_init()` call, but if other libs also do it etc there might be reasons for applications to alter that behaviour. |
︙ | ︙ | |||
167 168 169 170 171 172 173 | (See [Structs in libcurl](#structs) for the separate section describing all major internal structs and their purposes.) There are plenty of entry points to the library, namely each publicly defined function that libcurl offers to applications. All of those functions are rather small and easy-to-follow. All the ones prefixed with `curl_easy` are | | | | | | | | | | | | | | | | | 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 | (See [Structs in libcurl](#structs) for the separate section describing all major internal structs and their purposes.) There are plenty of entry points to the library, namely each publicly defined function that libcurl offers to applications. All of those functions are rather small and easy-to-follow. All the ones prefixed with `curl_easy` are put in the `lib/easy.c` file. `curl_global_init()` and `curl_global_cleanup()` should be called by the application to initialize and clean up global stuff in the library. As of today, it can handle the global SSL initing if SSL is enabled and it can init the socket layer on windows machines. libcurl itself has no "global" scope. All printf()-style functions use the supplied clones in `lib/mprintf.c`. This makes sure we stay absolutely platform independent. [ `curl_easy_init()`][2] allocates an internal struct and makes some initializations. The returned handle does not reveal internals. This is the `Curl_easy` struct which works as an "anchor" struct for all `curl_easy` functions. All connections performed will get connect-specific data allocated that should be used for things related to particular connections/requests. [`curl_easy_setopt()`][1] takes three arguments, where the option stuff must be passed in pairs: the parameter-ID and the parameter-value. The list of options is documented in the man page. This function mainly sets things in the `Curl_easy` struct. `curl_easy_perform()` is just a wrapper function that makes use of the multi API. It basically calls `curl_multi_init()`, `curl_multi_add_handle()`, `curl_multi_wait()`, and `curl_multi_perform()` until the transfer is done and then returns. Some of the most important key functions in `url.c` are called from `multi.c` when certain key steps are to be made in the transfer operation. <a name="Curl_connect"></a> Curl_connect() -------------- Analyzes the URL, it separates the different components and connects to the remote host. This may involve using a proxy and/or using SSL. The `Curl_resolv()` function in `lib/hostip.c` is used for looking up host names (it does then use the proper underlying method, which may vary between platforms and builds). When `Curl_connect` is done, we are connected to the remote site. Then it is time to tell the server to get a document/file. `Curl_do()` arranges this. This function makes sure there's an allocated and initiated `connectdata` struct that is used for this particular connection only (although there may be several requests performed on the same connect). A bunch of things are inited/inherited from the `Curl_easy` struct. <a name="multi_do"></a> multi_do() --------- `multi_do()` makes sure the proper protocol-specific function is called. The functions are named after the protocols they handle. The protocol-specific functions of course deal with protocol-specific negotiations and setup. They have access to the `Curl_sendf()` (from `lib/sendf.c`) function to send printf-style formatted data to the remote host and when they're ready to make the actual file transfer they call the `Curl_setup_transfer()` function (in `lib/transfer.c`) to setup the transfer and returns. If this DO function fails and the connection is being re-used, libcurl will then close this connection, setup a new connection and re-issue the DO request on that. This is because there is no way to be perfectly sure that we have discovered a dead connection before the DO function and thus we might wrongly be re-using a connection that was closed by the remote peer. <a name="Curl_readwrite"></a> Curl_readwrite() ---------------- Called during the transfer of the actual protocol payload. During transfer, the progress functions in `lib/progress.c` are called at frequent intervals (or at the user's choice, a specified callback might get called). The speedcheck functions in `lib/speedcheck.c` are also used to verify that the transfer is as fast as required. <a name="multi_done"></a> multi_done() ----------- Called after a transfer is done. This function takes care of everything |
︙ | ︙ | |||
275 276 277 278 279 280 281 | connection. <a name="http"></a> HTTP(S) ======= HTTP offers a lot and is the protocol in curl that uses the most lines of | | | | | > | 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | connection. <a name="http"></a> HTTP(S) ======= HTTP offers a lot and is the protocol in curl that uses the most lines of code. There is a special file `lib/formdata.c` that offers all the multipart post functions. base64-functions for user+password stuff (and more) is in `lib/base64.c` and all functions for parsing and sending cookies are found in `lib/cookie.c`. HTTPS uses in almost every case the same procedure as HTTP, with only two exceptions: the connect procedure is different and the function used to read or write from the socket is different, although the latter fact is hidden in the source by the use of `Curl_read()` for reading and `Curl_write()` for writing data to the remote server. |
︙ | ︙ | |||
301 302 303 304 305 306 307 | servers. <a name="ftp"></a> FTP === The `Curl_if2ip()` function can be used for getting the IP number of a | | | | | | | | | | > | | | > | | | | | | | | | | 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 | servers. <a name="ftp"></a> FTP === The `Curl_if2ip()` function can be used for getting the IP number of a specified network interface, and it resides in `lib/if2ip.c`. `Curl_ftpsendf()` is used for sending FTP commands to the remote server. It was made a separate function to prevent us programmers from forgetting that they must be CRLF terminated. They must also be sent in one single `write()` to make firewalls and similar happy. <a name="kerberos"></a> Kerberos ======== Kerberos support is mainly in `lib/krb5.c` and `lib/security.c` but also `curl_sasl_sspi.c` and `curl_sasl_gssapi.c` for the email protocols and `socks_gssapi.c` and `socks_sspi.c` for SOCKS5 proxy specifics. <a name="telnet"></a> TELNET ====== Telnet is implemented in `lib/telnet.c`. <a name="file"></a> FILE ==== The `file://` protocol is dealt with in `lib/file.c`. <a name="smb"></a> SMB === The `smb://` protocol is dealt with in `lib/smb.c`. <a name="ldap"></a> LDAP ==== Everything LDAP is in `lib/ldap.c` and `lib/openldap.c`. <a name="email"></a> E-mail ====== The e-mail related source code is in `lib/imap.c`, `lib/pop3.c` and `lib/smtp.c`. <a name="general"></a> General ======= URL encoding and decoding, called escaping and unescaping in the source code, is found in `lib/escape.c`. While transferring data in `Transfer()` a few functions might get used. `curl_getdate()` in `lib/parsedate.c` is for HTTP date comparisons (and more). `lib/getenv.c` offers `curl_getenv()` which is for reading environment variables in a neat platform independent way. That's used in the client, but also in `lib/url.c` when checking the proxy environment variables. Note that contrary to the normal unix `getenv()`, this returns an allocated buffer that must be `free()`ed after use. `lib/netrc.c` holds the `.netrc` parser. `lib/timeval.c` features replacement functions for systems that don't have `gettimeofday()` and a few support functions for timeval conversions. A function named `curl_version()` that returns the full curl version string is found in `lib/version.c`. <a name="persistent"></a> Persistent Connections ====================== The persistent connection support in libcurl requires some considerations on how to do things inside of the library. - The `Curl_easy` struct returned in the [`curl_easy_init()`][2] call must never hold connection-oriented data. It is meant to hold the root data as well as all the options etc that the library-user may choose. - The `Curl_easy` struct holds the "connection cache" (an array of pointers to `connectdata` structs). - This enables the 'curl handle' to be reused on subsequent transfers. - When libcurl is told to perform a transfer, it first checks for an already existing connection in the cache that we can use. Otherwise it creates a new one and adds that to the cache. If the cache is full already when a new connection is added, it will first close the oldest unused one. |
︙ | ︙ | |||
430 431 432 433 434 435 436 | Originally libcurl supported SSLeay for SSL/TLS transports, but that was then extended to its successor OpenSSL but has since also been extended to several other SSL/TLS libraries and we expect and hope to further extend the support in future libcurl versions. To deal with this internally in the best way possible, we have a generic SSL | | | | | 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 | Originally libcurl supported SSLeay for SSL/TLS transports, but that was then extended to its successor OpenSSL but has since also been extended to several other SSL/TLS libraries and we expect and hope to further extend the support in future libcurl versions. To deal with this internally in the best way possible, we have a generic SSL function API as provided by the `vtls/vtls.[ch]` system, and they are the only SSL functions we must use from within libcurl. vtls is then crafted to use the appropriate lower-level function calls to whatever SSL library that is in use. For example `vtls/openssl.[ch]` for the OpenSSL library. <a name="symbols"></a> Library Symbols =============== All symbols used internally in libcurl must use a `Curl_` prefix if they're used in more than a single file. Single-file symbols must be made static. Public ("exported") symbols must use a `curl_` prefix. (There are exceptions, but they are to be changed to follow this pattern in future versions.) Public API functions are marked with `CURL_EXTERN` in the public header files so that all others can be hidden on platforms where this is possible. <a name="returncodes"></a> Return Codes and Informationals =============================== I've made things simple. Almost every function in libcurl returns a CURLcode, that must be `CURLE_OK` if everything is OK or otherwise a suitable error code as the `curl/curl.h` include file defines. The very spot that detects an error must use the `Curl_failf()` function to set the human-readable error description. In aiding the user to understand what's happening and to debug curl usage, we must supply a fair number of informational messages by using the `Curl_infof()` function. Those messages are only displayed when the user explicitly asks for them. They are best used when revealing information that |
︙ | ︙ | |||
474 475 476 477 478 479 480 | that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI for our promise to users. <a name="client"></a> Client ====== | | | | | | | | | | | | | | | | | | | | > | | | > | | | | | | | | 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 | that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI for our promise to users. <a name="client"></a> Client ====== `main()` resides in `src/tool_main.c`. `src/tool_hugehelp.c` is automatically generated by the `mkhelp.pl` perl script to display the complete "manual" and the `src/tool_urlglob.c` file holds the functions used for the URL-"globbing" support. Globbing in the sense that the `{}` and `[]` expansion stuff is there. The client mostly sets up its `config` struct properly, then it calls the `curl_easy_*()` functions of the library and when it gets back control after the `curl_easy_perform()` it cleans up the library, checks status and exits. When the operation is done, the `ourWriteOut()` function in `src/writeout.c` may be called to report about the operation. That function is using the `curl_easy_getinfo()` function to extract useful information from the curl session. It may loop and do all this several times if many URLs were specified on the command line or config file. <a name="memorydebug"></a> Memory Debugging ================ The file `lib/memdebug.c` contains debug-versions of a few functions. Functions such as `malloc()`, `free()`, `fopen()`, `fclose()`, etc that somehow deal with resources that might give us problems if we "leak" them. The functions in the memdebug system do nothing fancy, they do their normal function and then log information about what they just did. The logged data can then be analyzed after a complete session, `memanalyze.pl` is the perl script present in `tests/` that analyzes a log file generated by the memory tracking system. It detects if resources are allocated but never freed and other kinds of errors related to resource management. Internally, definition of preprocessor symbol `DEBUGBUILD` restricts code which is only compiled for debug enabled builds. And symbol `CURLDEBUG` is used to differentiate code which is _only_ used for memory tracking/debugging. Use `-DCURLDEBUG` when compiling to enable memory debugging, this is also switched on by running configure with `--enable-curldebug`. Use `-DDEBUGBUILD` when compiling to enable a debug build or run configure with `--enable-debug`. `curl --version` will list 'Debug' feature for debug enabled builds, and will list 'TrackMemory' feature for curl debug memory tracking capable builds. These features are independent and can be controlled when running the configure script. When `--enable-debug` is given both features will be enabled, unless some restriction prevents memory tracking from being used. <a name="test"></a> Test Suite ========== The test suite is placed in its own subdirectory directly off the root in the curl archive tree, and it contains a bunch of scripts and a lot of test case data. The main test script is `runtests.pl` that will invoke test servers like `httpserver.pl` and `ftpserver.pl` before all the test cases are performed. The test suite currently only runs on Unix-like platforms. You'll find a description of the test suite in the `tests/README` file, and the test case data files in the `tests/FILEFORMAT` file. The test suite automatically detects if curl was built with the memory debugging enabled, and if it was, it will detect memory leaks, too. <a name="asyncdns"></a> Asynchronous name resolves ========================== |
︙ | ︙ | |||
565 566 567 568 569 570 571 | ### c-ares on win32 First I compiled c-ares. I changed the default C runtime library to be the single-threaded rather than the multi-threaded (this seems to be required to prevent linking errors later on). Then I simply build the areslib project (the other projects adig/ahost seem to fail under MSVC). | | | | | | | | | 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 | ### c-ares on win32 First I compiled c-ares. I changed the default C runtime library to be the single-threaded rather than the multi-threaded (this seems to be required to prevent linking errors later on). Then I simply build the areslib project (the other projects adig/ahost seem to fail under MSVC). Next was libcurl. I opened `lib/config-win32.h` and I added a: `#define USE_ARES 1` Next thing I did was I added the path for the ares includes to the include path, and the libares.lib to the libraries. Lastly, I also changed libcurl to be single-threaded rather than multi-threaded, again this was to prevent some duplicate symbol errors. I'm not sure why I needed to change everything to single-threaded, but when I didn't I got redefinition errors for several CRT functions (`malloc()`, `stricmp()`, etc.) <a name="curl_off_t"></a> `curl_off_t` ========== `curl_off_t` is a data type provided by the external libcurl include headers. It is the type meant to be used for the [`curl_easy_setopt()`][1] options that end with LARGE. The type is 64-bit large on most modern platforms. <a name="curlx"></a> curlx ===== The libcurl source code offers a few functions by source only. They are not part of the official libcurl API, but the source files might be useful for others so apps can optionally compile/build with these sources to gain additional functions. We provide them through a single header file for easy access for apps: `curlx.h` `curlx_strtoofft()` ------------------- A macro that converts a string containing a number to a `curl_off_t` number. This might use the `curlx_strtoll()` function which is provided as source code in strtoofft.c. Note that the function is only provided if no `strtoll()` (or equivalent) function exist on your platform. If `curl_off_t` is only a 32-bit number on your platform, this macro uses `strtol()`. Future ------ Several functions will be removed from the public `curl_` name space in a future libcurl release. They will then only become available as `curlx_` functions instead. To make the transition easier, we already today provide |
︙ | ︙ | |||
638 639 640 641 642 643 644 | ================ ## About content encodings [HTTP/1.1][4] specifies that a client may request that a server encode its response. This is usually used to compress a response using one (or more) encodings from a set of commonly available compression techniques. These | | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | 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 | ================ ## About content encodings [HTTP/1.1][4] specifies that a client may request that a server encode its response. This is usually used to compress a response using one (or more) encodings from a set of commonly available compression techniques. These schemes include `deflate` (the zlib algorithm), `gzip`, `br` (brotli) and `compress`. A client requests that the server perform an encoding by including an `Accept-Encoding` header in the request document. The value of the header should be one of the recognized tokens `deflate`, ... (there's a way to register new schemes/tokens, see sec 3.5 of the spec). A server MAY honor the client's encoding request. When a response is encoded, the server includes a `Content-Encoding` header in the response. The value of the `Content-Encoding` header indicates which encodings were used to encode the data, in the order in which they were applied. It's also possible for a client to attach priorities to different schemes so that the server knows which it prefers. See sec 14.3 of RFC 2616 for more information on the `Accept-Encoding` header. See sec [3.1.2.2 of RFC 7231][15] for more information on the `Content-Encoding` header. ## Supported content encodings The `deflate`, `gzip` and `br` content encodings are supported by libcurl. Both regular and chunked transfers work fine. The zlib library is required for the `deflate` and `gzip` encodings, while the brotli decoding library is for the `br` encoding. ## The libcurl interface To cause libcurl to request a content encoding use: [`curl_easy_setopt`][1](curl, [`CURLOPT_ACCEPT_ENCODING`][5], string) where string is the intended value of the `Accept-Encoding` header. Currently, libcurl does support multiple encodings but only understands how to process responses that use the `deflate`, `gzip` and/or `br` content encodings, so the only values for [`CURLOPT_ACCEPT_ENCODING`][5] that will work (besides `identity`, which does nothing) are `deflate`, `gzip` and `br`. If a response is encoded using the `compress` or methods, libcurl will return an error indicating that the response could not be decoded. If `<string>` is NULL no `Accept-Encoding` header is generated. If `<string>` is a zero-length string, then an `Accept-Encoding` header containing all supported encodings will be generated. The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for content to be automatically decoded. If it is not set and the server still sends encoded content (despite not having been asked), the data is returned in its raw form and the `Content-Encoding` type is not checked. ## The curl interface Use the [`--compressed`][6] option with curl to cause it to ask servers to compress responses using any format supported by curl. <a name="hostip"></a> `hostip.c` explained ==================== The main compile-time defines to keep in mind when reading the `host*.c` source file are these: ## `CURLRES_IPV6` this host has `getaddrinfo()` and family, and thus we use that. The host may not be able to resolve IPv6, but we don't really have to take that into account. Hosts that aren't IPv6-enabled have `CURLRES_IPV4` defined. ## `CURLRES_ARES` is defined if libcurl is built to use c-ares for asynchronous name resolves. This can be Windows or \*nix. ## `CURLRES_THREADED` is defined if libcurl is built to use threading for asynchronous name resolves. The name resolve will be done in a new thread, and the supported asynch API will be the same as for ares-builds. This is the default under (native) Windows. If any of the two previous are defined, `CURLRES_ASYNCH` is defined too. If libcurl is not built to use an asynchronous resolver, `CURLRES_SYNCH` is defined. ## `host*.c` sources The `host*.c` sources files are split up like this: - `hostip.c` - method-independent resolver functions and utility functions - `hostasyn.c` - functions for asynchronous name resolves - `hostsyn.c` - functions for synchronous name resolves - `asyn-ares.c` - functions for asynchronous name resolves using c-ares - `asyn-thread.c` - functions for asynchronous name resolves using threads - `hostip4.c` - IPv4 specific functions - `hostip6.c` - IPv6 specific functions The `hostip.h` is the single united header file for all this. It defines the `CURLRES_*` defines based on the `config*.h` and `curl_setup.h` defines. <a name="memoryleak"></a> Track Down Memory Leaks ======================= ## Single-threaded Please note that this memory leak system is not adjusted to work in more than one thread. If you want/need to use it in a multi-threaded app. Please adjust accordingly. ## Build Rebuild libcurl with `-DCURLDEBUG` (usually, rerunning configure with `--enable-debug` fixes this). `make clean` first, then `make` so that all files are actually rebuilt properly. It will also make sense to build libcurl with the debug option (usually `-g` to the compiler) so that debugging it will be easier if you actually do find a leak in the library. This will create a library that has memory debugging enabled. ## Modify Your Application Add a line in your application code: |
︙ | ︙ | |||
773 774 775 776 777 778 779 | Run your program as usual. Watch the specified memory trace file grow. Make your program exit and use the proper libcurl cleanup functions etc. So that all non-leaks are returned/freed properly. ## Analyze the Flow | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | | | | | | | | | | > | | | | | > | | 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 | Run your program as usual. Watch the specified memory trace file grow. Make your program exit and use the proper libcurl cleanup functions etc. So that all non-leaks are returned/freed properly. ## Analyze the Flow Use the `tests/memanalyze.pl` perl script to analyze the dump file: tests/memanalyze.pl dump This now outputs a report on what resources that were allocated but never freed etc. This report is very fine for posting to the list! If this doesn't produce any output, no leak was detected in libcurl. Then the leak is mostly likely to be in your code. <a name="multi_socket"></a> `multi_socket` ============== Implementation of the `curl_multi_socket` API The main ideas of this API are simply: 1. The application can use whatever event system it likes as it gets info from libcurl about what file descriptors libcurl waits for what action on. (The previous API returns `fd_sets` which is very `select()`-centric). 2. When the application discovers action on a single socket, it calls libcurl and informs that there was action on this particular socket and libcurl can then act on that socket/transfer only and not care about any other transfers. (The previous API always had to scan through all the existing transfers.) The idea is that [`curl_multi_socket_action()`][7] calls a given callback with information about what socket to wait for what action on, and the callback only gets called if the status of that socket has changed. We also added a timer callback that makes libcurl call the application when the timeout value changes, and you set that with [`curl_multi_setopt()`][9] and the [`CURLMOPT_TIMERFUNCTION`][10] option. To get this to work, Internally, there's an added struct to each easy handle in which we store an "expire time" (if any). The structs are then "splay sorted" so that we can add and remove times from the linked list and yet somewhat swiftly figure out both how long there is until the next nearest timer expires and which timer (handle) we should take care of now. Of course, the upside of all this is that we get a [`curl_multi_timeout()`][8] that should also work with old-style applications that use [`curl_multi_perform()`][11]. We created an internal "socket to easy handles" hash table that given a socket (file descriptor) returns the easy handle that waits for action on that socket. This hash is made using the already existing hash code (previously only used for the DNS cache). To make libcurl able to report plain sockets in the socket callback, we had to re-organize the internals of the [`curl_multi_fdset()`][12] etc so that the conversion from sockets to `fd_sets` for that function is only done in the last step before the data is returned. I also had to extend c-ares to get a function that can return plain sockets, as that library too returned only `fd_sets` and that is no longer good enough. The changes done to c-ares are available in c-ares 1.3.1 and later. <a name="structs"></a> Structs in libcurl ================== This section should cover 7.32.0 pretty accurately, but will make sense even for older and later versions as things don't change drastically that often. <a name="Curl_easy"></a> ## Curl_easy The `Curl_easy` struct is the one returned to the outside in the external API as a `CURL *`. This is usually known as an easy handle in API documentations and examples. Information and state that is related to the actual connection is in the `connectdata` struct. When a transfer is about to be made, libcurl will either create a new connection or re-use an existing one. The particular connectdata that is used by this handle is pointed out by `Curl_easy->easy_conn`. Data and information that regard this particular single transfer is put in the `SingleRequest` sub-struct. When the `Curl_easy` struct is added to a multi handle, as it must be in order to do any transfer, the `->multi` member will point to the `Curl_multi` struct it belongs to. The `->prev` and `->next` members will then be used by the multi code to keep a linked list of `Curl_easy` structs that are added to that same multi handle. libcurl always uses multi so `->multi` *will* point to a `Curl_multi` when a transfer is in progress. `->mstate` is the multi state of this particular `Curl_easy`. When `multi_runsingle()` is called, it will act on this handle according to which state it is in. The mstate is also what tells which sockets to return for a specific `Curl_easy` when [`curl_multi_fdset()`][12] is called etc. The libcurl source code generally use the name `data` for the variable that points to the `Curl_easy`. When doing multiplexed HTTP/2 transfers, each `Curl_easy` is associated with an individual stream, sharing the same connectdata struct. Multiplexing makes it even more important to keep things associated with the right thing! <a name="connectdata"></a> ## connectdata A general idea in libcurl is to keep connections around in a connection "cache" after they have been used in case they will be used again and then re-use an existing one instead of creating a new as it creates a significant performance boost. Each `connectdata` identifies a single physical connection to a server. If the connection can't be kept alive, the connection will be closed after use and then this struct can be removed from the cache and freed. Thus, the same `Curl_easy` can be used multiple times and each time select another `connectdata` struct to use for the connection. Keep this in mind, as it is then important to consider if options or choices are based on the connection or the `Curl_easy`. Functions in libcurl will assume that `connectdata->data` points to the `Curl_easy` that uses this connection (for the moment). As a special complexity, some protocols supported by libcurl require a special disconnect procedure that is more than just shutting down the socket. It can involve sending one or more commands to the server before doing so. Since connections are kept in the connection cache after use, the original `Curl_easy` may no longer be around when the time comes to shut down a particular connection. For this purpose, libcurl holds a special dummy `closure_handle` `Curl_easy` in the `Curl_multi` struct to use when needed. FTP uses two TCP connections for a typical transfer but it keeps both in this single struct and thus can be considered a single connection for most internal concerns. The libcurl source code generally use the name `conn` for the variable that points to the connectdata. <a name="Curl_multi"></a> ## Curl_multi Internally, the easy interface is implemented as a wrapper around multi interface functions. This makes everything multi interface. `Curl_multi` is the multi handle struct exposed as `CURLM *` in external APIs. This struct holds a list of `Curl_easy` structs that have been added to this handle with [`curl_multi_add_handle()`][13]. The start of the list is `->easyp` and `->num_easy` is a counter of added `Curl_easy`s. `->msglist` is a linked list of messages to send back when |
︙ | ︙ | |||
936 937 938 939 940 941 942 | `->sockhash` is a hash table to allow fast lookups of socket descriptor for which `Curl_easy` uses that descriptor. This is necessary for the `multi_socket` API. `->conn_cache` points to the connection cache. It keeps track of all connections that are kept after use. The cache has a maximum size. | | | > | | | | | 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 | `->sockhash` is a hash table to allow fast lookups of socket descriptor for which `Curl_easy` uses that descriptor. This is necessary for the `multi_socket` API. `->conn_cache` points to the connection cache. It keeps track of all connections that are kept after use. The cache has a maximum size. `->closure_handle` is described in the `connectdata` section. The libcurl source code generally use the name `multi` for the variable that points to the `Curl_multi` struct. <a name="Curl_handler"></a> ## Curl_handler Each unique protocol that is supported by libcurl needs to provide at least one `Curl_handler` struct. It defines what the protocol is called and what functions the main code should call to deal with protocol specific issues. In general, there's a source file named `[protocol].c` in which there's a `struct Curl_handler Curl_handler_[protocol]` declared. In `url.c` there's then the main array with all individual `Curl_handler` structs pointed to from a single array which is scanned through when a URL is given to libcurl to work with. `->scheme` is the URL scheme name, usually spelled out in uppercase. That's "HTTP" or "FTP" etc. SSL versions of the protocol need their own `Curl_handler` setup so HTTPS separate from HTTP. `->setup_connection` is called to allow the protocol code to allocate protocol specific data that then gets associated with that `Curl_easy` for the rest of this transfer. It gets freed again at the end of the transfer. It will be called before the `connectdata` for the transfer has been selected/created. Most protocols will allocate its private `struct [PROTOCOL]` here and assign `Curl_easy->req.protop` to point to it. `->connect_it` allows a protocol to do some specific actions after the TCP connect is done, that can still be considered part of the connection phase. Some protocols will alter the `connectdata->recv[]` and `connectdata->send[]` function pointers in this function. |
︙ | ︙ | |||
988 989 990 991 992 993 994 | `->done` gets called when the transfer is complete and DONE. That's after the main data has been transferred. `->do_more` gets called during the `DO_MORE` state. The FTP protocol uses this state when setting up the second connection. | | | | | | | | | | | > > | > | | 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 | `->done` gets called when the transfer is complete and DONE. That's after the main data has been transferred. `->do_more` gets called during the `DO_MORE` state. The FTP protocol uses this state when setting up the second connection. `->proto_getsock` `->doing_getsock` `->domore_getsock` `->perform_getsock` Functions that return socket information. Which socket(s) to wait for which action(s) during the particular multi state. `->disconnect` is called immediately before the TCP connection is shutdown. `->readwrite` gets called during transfer to allow the protocol to do extra reads/writes `->defport` is the default report TCP or UDP port this protocol uses `->protocol` is one or more bits in the `CURLPROTO_*` set. The SSL versions have their "base" protocol set and then the SSL variation. Like "HTTP|HTTPS". `->flags` is a bitmask with additional information about the protocol that will make it get treated differently by the generic engine: - `PROTOPT_SSL` - will make it connect and negotiate SSL - `PROTOPT_DUAL` - this protocol uses two connections - `PROTOPT_CLOSEACTION` - this protocol has actions to do before closing the connection. This flag is no longer used by code, yet still set for a bunch of protocol handlers. - `PROTOPT_DIRLOCK` - "direction lock". The SSH protocols set this bit to limit which "direction" of socket actions that the main engine will concern itself with. - `PROTOPT_NONETWORK` - a protocol that doesn't use network (read `file:`) - `PROTOPT_NEEDSPWD` - this protocol needs a password and will use a default one unless one is provided - `PROTOPT_NOURLQUERY` - this protocol can't handle a query part on the URL (?foo=bar) <a name="conncache"></a> ## conncache Is a hash table with connections for later re-use. Each `Curl_easy` has a pointer to its connection cache. Each multi handle sets up a connection cache that all added `Curl_easy`s share by default. <a name="Curl_share"></a> ## Curl_share The libcurl share API allocates a `Curl_share` struct, exposed to the external API as `CURLSH *`. The idea is that the struct can have a set of its own versions of caches and pools and then by providing this struct in the `CURLOPT_SHARE` option, those specific `Curl_easy`s will use the caches/pools that this share handle holds. Then individual `Curl_easy` structs can be made to share specific things that they otherwise wouldn't, such as cookies. The `Curl_share` struct can currently hold cookies, DNS cache and the SSL session cache. <a name="CookieInfo"></a> ## CookieInfo This is the main cookie struct. It holds all known cookies and related information. Each `Curl_easy` has its own private `CookieInfo` even when they are added to a multi handle. They can be made to share cookies by using the share API. [1]: https://curl.haxx.se/libcurl/c/curl_easy_setopt.html [2]: https://curl.haxx.se/libcurl/c/curl_easy_init.html [3]: https://c-ares.haxx.se/ |
︙ | ︙ |
Changes to jni/curl/docs/KNOWN_BUGS.
︙ | ︙ | |||
15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 1.1 CURLFORM_CONTENTLEN in an array 1.2 Disabling HTTP Pipelining 1.3 STARTTRANSFER time is wrong for HTTP POSTs 1.4 multipart formposts file name encoding 1.5 Expect-100 meets 417 1.6 Unnecessary close when 401 received waiting for 100 1.7 Deflate error after all content was received 1.9 HTTP/2 frames while in the connection pool kill reuse 1.10 Strips trailing dot from host name 1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM 2. TLS 2.1 CURLINFO_SSL_VERIFYRESULT has limited support 2.2 DER in keychain | > | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1.1 CURLFORM_CONTENTLEN in an array 1.2 Disabling HTTP Pipelining 1.3 STARTTRANSFER time is wrong for HTTP POSTs 1.4 multipart formposts file name encoding 1.5 Expect-100 meets 417 1.6 Unnecessary close when 401 received waiting for 100 1.7 Deflate error after all content was received 1.8 DoH isn't used for all name resolves when enabled 1.9 HTTP/2 frames while in the connection pool kill reuse 1.10 Strips trailing dot from host name 1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM 2. TLS 2.1 CURLINFO_SSL_VERIFYRESULT has limited support 2.2 DER in keychain |
︙ | ︙ | |||
42 43 44 45 46 47 48 | 4.1 -J and -O with %-encoded file names 4.2 -J with -C - fails 4.3 --retry and transfer timeouts 4.4 --upload-file . hang if delay in STDIN 4.5 Improve --data-urlencode space encoding 5. Build and portability issues | < | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 4.1 -J and -O with %-encoded file names 4.2 -J with -C - fails 4.3 --retry and transfer timeouts 4.4 --upload-file . hang if delay in STDIN 4.5 Improve --data-urlencode space encoding 5. Build and portability issues 5.2 curl-config --libs contains private details 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10 5.4 Cannot compile against a static build of OpenLDAP 5.5 can't handle Unicode arguments in Windows 5.6 cmake support gaps 5.7 Visual Studio project gaps 5.8 configure finding libs in wrong directory |
︙ | ︙ | |||
158 159 160 161 162 163 164 | waiting for the the 100-continue response. https://curl.haxx.se/mail/lib-2008-08/0462.html 1.7 Deflate error after all content was received There's a situation where we can get an error in a HTTP response that is compressed, when that error is detected after all the actual body contents | | > > > > > > > > > > | 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 | waiting for the the 100-continue response. https://curl.haxx.se/mail/lib-2008-08/0462.html 1.7 Deflate error after all content was received There's a situation where we can get an error in a HTTP response that is compressed, when that error is detected after all the actual body contents have been received and delivered to the application. This is tricky, but is ultimately a broken server. See https://github.com/curl/curl/issues/2719 1.8 DoH isn't used for all name resolves when enabled Even if DoH is specified to be used, there are some name resolves that are done without it. This should be fixed. When the internal function `Curl_resolver_wait_resolv()` is called, it doesn't use DoH to complete the resolve as it otherwise should. See https://github.com/curl/curl/pull/3857 and https://github.com/curl/curl/pull/3850 1.9 HTTP/2 frames while in the connection pool kill reuse If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to curl while the connection is held in curl's connection pool, the socket will be found readable when considered for reuse and that makes curl think it is dead and then it will be closed and a new connection gets created instead. |
︙ | ︙ | |||
368 369 370 371 372 373 374 | ASCII space characters in --data-urlencode are currently encoded as %20 rather than +, which RFC 1866 says should be used. See https://github.com/curl/curl/issues/3229 5. Build and portability issues | < < < < < < | 378 379 380 381 382 383 384 385 386 387 388 389 390 391 | ASCII space characters in --data-urlencode are currently encoded as %20 rather than +, which RFC 1866 says should be used. See https://github.com/curl/curl/issues/3229 5. Build and portability issues 5.2 curl-config --libs contains private details "curl-config --libs" will include details set in LDFLAGS when configure is run that might be needed only for building libcurl. Further, curl-config --cflags suffers from the same effects with CFLAGS/CPPFLAGS. 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10 |
︙ | ︙ |
Changes to jni/curl/docs/Makefile.am.
︙ | ︙ | |||
40 41 42 43 44 45 46 47 48 49 50 51 52 53 | CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1 EXTRA_DIST = \ $(noinst_man_MANS) \ ALTSVC.md \ BINDINGS.md \ BUGS \ CHECKSRC.md \ CIPHERS.md \ CMakeLists.txt \ CODE_OF_CONDUCT.md \ CODE_STYLE.md \ CONTRIBUTE.md \ | > | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1 EXTRA_DIST = \ $(noinst_man_MANS) \ ALTSVC.md \ BINDINGS.md \ BUG-BOUNTY.md \ BUGS \ CHECKSRC.md \ CIPHERS.md \ CMakeLists.txt \ CODE_OF_CONDUCT.md \ CODE_STYLE.md \ CONTRIBUTE.md \ |
︙ | ︙ |
Changes to jni/curl/docs/Makefile.in.
︙ | ︙ | |||
467 468 469 470 471 472 473 474 475 476 477 478 479 480 | SUBDIRS = . cmdline-opts DIST_SUBDIRS = $(SUBDIRS) examples libcurl CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1 EXTRA_DIST = \ $(noinst_man_MANS) \ ALTSVC.md \ BINDINGS.md \ BUGS \ CHECKSRC.md \ CIPHERS.md \ CMakeLists.txt \ CODE_OF_CONDUCT.md \ CODE_STYLE.md \ CONTRIBUTE.md \ | > | 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 | SUBDIRS = . cmdline-opts DIST_SUBDIRS = $(SUBDIRS) examples libcurl CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1 EXTRA_DIST = \ $(noinst_man_MANS) \ ALTSVC.md \ BINDINGS.md \ BUG-BOUNTY.md \ BUGS \ CHECKSRC.md \ CIPHERS.md \ CMakeLists.txt \ CODE_OF_CONDUCT.md \ CODE_STYLE.md \ CONTRIBUTE.md \ |
︙ | ︙ |
Changes to jni/curl/docs/RELEASE-PROCEDURE.md.
︙ | ︙ | |||
12 13 14 15 16 17 18 | - tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the tag and we use underscores instead of dots in the version number. Make sure the tag is GPG signed (using -s). - run "./maketgz 7.34.0" to build the release tarballs. It is important that you run this on a machine with the correct set of autotools etc installed | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | - tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the tag and we use underscores instead of dots in the version number. Make sure the tag is GPG signed (using -s). - run "./maketgz 7.34.0" to build the release tarballs. It is important that you run this on a machine with the correct set of autotools etc installed as this is what then will be shipped and used by most users on \*nix like systems. - push the git commits and the new tag - gpg sign the 4 tarballs as maketgz suggests - upload the 8 resulting files to the primary download directory |
︙ | ︙ | |||
80 81 82 83 84 85 86 | Coming dates ------------ Based on the description above, here are some planned release dates (at the time of this writing): | < > > > > > > > > | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | Coming dates ------------ Based on the description above, here are some planned release dates (at the time of this writing): - May 22, 2019 - July 17, 2019 - September 11, 2019 - November 6, 2019 - January 8, 2020 (moved) - February 27, 2020 - April 22, 2020 - June 17, 2020 The above (and more) curl-related dates are published in [iCalendar format](https://calendar.google.com/calendar/ical/c9u5d64odop9js55oltfarjk6g%40group.calendar.google.com/public/basic.ics) as well. |
Changes to jni/curl/docs/SECURITY-PROCESS.md.
1 2 3 4 5 6 7 8 9 10 11 12 | curl security process ===================== This document describes how security vulnerabilities should be handled in the curl project. Publishing Information ---------------------- All known and public curl or libcurl related vulnerabilities are listed on [the curl web site security page](https://curl.haxx.se/docs/security.html). | | | < | | | | | | | | | | > > > | | | | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | curl security process ===================== This document describes how security vulnerabilities should be handled in the curl project. Publishing Information ---------------------- All known and public curl or libcurl related vulnerabilities are listed on [the curl web site security page](https://curl.haxx.se/docs/security.html). Security vulnerabilities **should not** be entered in the project's public bug tracker. Vulnerability Handling ---------------------- The typical process for handling a new security vulnerability is as follows. No information should be made public about a vulnerability until it is formally announced at the end of this process. That means, for example that a bug tracker entry must NOT be created to track the issue since that will make the issue public and it should not be discussed on any of the project's public mailing lists. Also messages associated with any commits should not make any reference to the security nature of the commit if done prior to the public announcement. - The person discovering the issue, the reporter, reports the vulnerability on [https://hackerone.com/curl](https://hackerone.com/curl). Issues filed there reach a handful of selected and trusted people. - Messages that do not relate to the reporting or managing of an undisclosed security vulnerability in curl or libcurl are ignored and no further action is required. - A person in the security team responds to the original report to acknowledge that a human has seen the report. - The security team investigates the report and either rejects it or accepts it. - 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 often synchronized with an upcoming release that contains the fix. If the reporter, or anyone else involved, thinks the next planned release is too far away, then a separate earlier release should be considered. - Write a security advisory draft about the problem that explains what the problem is, its impact, which versions it affects, solutions or workarounds, when the release is out and make sure to credit all contributors properly. Figure out the CWE (Common Weakness Enumeration) number for the flaw. - Request a CVE number from [HackerOne](https://docs.hackerone.com/programs/cve-requests.html) - Consider informing [distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros) to prepare them about the upcoming public security vulnerability announcement - attach the advisory draft for information. Note that 'distros' won't accept an embargo longer than 14 days and they do not care for Windows-specific flaws. - Update the "security advisory" with the CVE number. - The security team commits the fix in a private branch. The commit message should ideally contain the CVE number. This fix is usually also distributed to the 'distros' mailing list to allow them to use the fix prior to the public announcement. |
︙ | ︙ | |||
88 89 90 91 92 93 94 95 96 97 98 99 100 101 | curl-announce, curl-library and curl-users mailing lists. - The security web page on the web site should get the new vulnerability mentioned. curl-security (at haxx dot se) ------------------------------ Who is on this list? There are a couple of criteria you must meet, and then we might ask you to join the list or you can ask to join it. It really isn't very formal. We basically only require that you have a long-term presence in the curl project and you have shown an understanding for the project and its way of working. You must've been around for a good while and you should have no plans in vanishing in the near future. | > > > | 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | curl-announce, curl-library and curl-users mailing lists. - The security web page on the web site should get the new vulnerability mentioned. curl-security (at haxx dot se) ------------------------------ This is a private mailing list for discussions on and about curl security issues. Who is on this list? There are a couple of criteria you must meet, and then we might ask you to join the list or you can ask to join it. It really isn't very formal. We basically only require that you have a long-term presence in the curl project and you have shown an understanding for the project and its way of working. You must've been around for a good while and you should have no plans in vanishing in the near future. |
︙ | ︙ | |||
117 118 119 120 121 122 123 | to the git repo. 5. Run `make` in your local web checkout and verify that things look fine. 6. On security advisory release day, push the changes on the curl-www repository's remote master branch. | | | < < < | < < | < < | 121 122 123 124 125 126 127 128 129 130 131 132 | to the git repo. 5. Run `make` in your local web checkout and verify that things look fine. 6. On security advisory release day, push the changes on the curl-www repository's remote master branch. Bug Bounty ---------- See [BUG-BOUNTY](https://curl.haxx.se/docs/bugbounty.html) for details on the bug bounty program. |
Changes to jni/curl/docs/SSL-PROBLEMS.md.
︙ | ︙ | |||
49 50 51 52 53 54 55 | You may have to explicitly provide an alternative list of ciphers for curl to use to allow the server to use a WEAK cipher for you. Note that these weak ciphers are identified as flawed. For example, this includes symmetric ciphers with less than 128 bit keys and RC4. | | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | You may have to explicitly provide an alternative list of ciphers for curl to use to allow the server to use a WEAK cipher for you. Note that these weak ciphers are identified as flawed. For example, this includes symmetric ciphers with less than 128 bit keys and RC4. Schannel in Windows XP is not able to connect to servers that no longer support the legacy handshakes and algorithms used by those versions, so we advice against building curl to use Schannel on really old Windows versions. References: https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01 ## Allow BEAST |
︙ | ︙ | |||
73 74 75 76 77 78 79 | servers. ## Disabling certificate revocation checks Some SSL backends may do certificate revocation checks (CRL, OCSP, etc) depending on the OS or build configuration. The --ssl-no-revoke option was introduced in 7.44.0 to disable revocation checking but currently is only | | | | | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | servers. ## Disabling certificate revocation checks Some SSL backends may do certificate revocation checks (CRL, OCSP, etc) depending on the OS or build configuration. The --ssl-no-revoke option was introduced in 7.44.0 to disable revocation checking but currently is only supported for Schannel (the native Windows SSL library), with an exception in the case of Windows' Untrusted Publishers blacklist which it seems can't be bypassed. This option may have broader support to accommodate other SSL backends in the future. References: https://curl.haxx.se/docs/ssl-compared.html |
Changes to jni/curl/docs/THANKS.
︙ | ︙ | |||
494 495 496 497 498 499 500 501 502 503 504 505 506 507 | Edward Rudd Edward Sheldrake Edward Thomson Eelco Dolstra Eetu Ojanen Egon Eckert Eldar Zaitov Elia Tufarolo Elliot Saba Ellis Pritchard Elmira A Semenova Emanuele Bovisio Emil Lerner Emil Romanus | > | 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 | Edward Rudd Edward Sheldrake Edward Thomson Eelco Dolstra Eetu Ojanen Egon Eckert Eldar Zaitov Eli Schwartz Elia Tufarolo Elliot Saba Ellis Pritchard Elmira A Semenova Emanuele Bovisio Emil Lerner Emil Romanus |
︙ | ︙ | |||
642 643 644 645 646 647 648 649 650 651 652 653 654 655 | Grigory Entin Guenole Bescon Guido Berhoerster Guillaume Arluison Gunter Knauf Gustaf Hui Gustavo Grieco GwanYeong Kim Gwenole Beauchesne Gökhan Şengün Götz Babin-Ebell Hagai Auro Haibo Huang Hamish Mackenzie | > | 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 | Grigory Entin Guenole Bescon Guido Berhoerster Guillaume Arluison Gunter Knauf Gustaf Hui Gustavo Grieco Guy Poizat GwanYeong Kim Gwenole Beauchesne Gökhan Şengün Götz Babin-Ebell Hagai Auro Haibo Huang Hamish Mackenzie |
︙ | ︙ | |||
711 712 713 714 715 716 717 718 719 720 721 722 723 724 | Inca R Ingmar Runge Ingo Ralf Blum Ingo Wilken Irfan Adilovic Irving Wolfe Isaac Boukris Ishan SinghLevett Ithubg on github Ivan Avdeev Ivo Bellin Salarin Jack Zhang Jackarain on github Jacky Lam | > | 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 | Inca R Ingmar Runge Ingo Ralf Blum Ingo Wilken Irfan Adilovic Irving Wolfe Isaac Boukris Isaiah Norton Ishan SinghLevett Ithubg on github Ivan Avdeev Ivo Bellin Salarin Jack Zhang Jackarain on github Jacky Lam |
︙ | ︙ | |||
877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 | Jonas Forsman Jonas Minnberg Jonas Schnelli Jonatan Lander Jonatan Vela Jonathan Cardoso Machado Jonathan Hseu Jonathan Nieder Jongki Suwandi Joonas Kuorilehto Jose Alf Jose Kahan Josef Wolf Josh Bialkowski Josh Kapell Joshua Kwan | > > | 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 | Jonas Forsman Jonas Minnberg Jonas Schnelli Jonatan Lander Jonatan Vela Jonathan Cardoso Machado Jonathan Hseu Jonathan Moerman Jonathan Nieder Jongki Suwandi Joombalaya on github Joonas Kuorilehto Jose Alf Jose Kahan Josef Wolf Josh Bialkowski Josh Kapell Joshua Kwan |
︙ | ︙ | |||
968 969 970 971 972 973 974 975 976 977 978 979 980 981 | Konstantin Kushnir Kris Kennaway Krishnendu Majumdar Krister Johansen Kristian Gunstone Kristian Köhntopp Kristiyan Tsaklev Kurt Fankhauser Kyle J. McKay Kyle L. Huff Kyle Sallee Kyselgov E.N Lachlan O'Dea Ladar Levison | > | 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 | Konstantin Kushnir Kris Kennaway Krishnendu Majumdar Krister Johansen Kristian Gunstone Kristian Köhntopp Kristiyan Tsaklev Kristoffer Gleditsch Kurt Fankhauser Kyle J. McKay Kyle L. Huff Kyle Sallee Kyselgov E.N Lachlan O'Dea Ladar Levison |
︙ | ︙ | |||
1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 | Maxim Perenesenko Maxim Prohorov Maxime Larocque Maxime Legros Mehmet Bozkurt Mekonikum Melissa Mears Mettgut Jamalla Michael Anti Michael Benedict Michael Calmer Michael Cronenworth Michael Curtis Michael Day | > | 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 | Maxim Perenesenko Maxim Prohorov Maxime Larocque Maxime Legros Mehmet Bozkurt Mekonikum Melissa Mears Mert Yazıcıoğlu Mettgut Jamalla Michael Anti Michael Benedict Michael Calmer Michael Cronenworth Michael Curtis Michael Day |
︙ | ︙ | |||
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 | Octavio Schroeder Ofer Okhin Vasilij Ola Mork Olaf Flebbe Olaf Stüben Oleg Pudeyev Oli Kingshott Oliver Gondža Oliver Graute Oliver Kuckertz Oliver Schindler Olivier Berger Olivier Brunel Orange Tsai Oren Souroujon Oren Tirosh Orgad Shaneh Ori Avtalion Oscar Koeroo Oscar Norlander Oskar Liljeblad Oumph on github P R Schaffner Palo Markovic Paolo Piacentini Paras Sethia Pascal Gaudette Pascal Terjan Pasha Kuznetsov Pasi Karkkainen Pat Ray | > > > | 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 | Octavio Schroeder Ofer Okhin Vasilij Ola Mork Olaf Flebbe Olaf Stüben Oleg Pudeyev Olen Andoni Oli Kingshott Oliver Gondža Oliver Graute Oliver Kuckertz Oliver Schindler Olivier Berger Olivier Brunel Omar Ramadan Orange Tsai Oren Souroujon Oren Tirosh Orgad Shaneh Ori Avtalion Oscar Koeroo Oscar Norlander Oskar Liljeblad Oumph on github P R Schaffner Palo Markovic Paolo Mossino Paolo Piacentini Paras Sethia Pascal Gaudette Pascal Terjan Pasha Kuznetsov Pasi Karkkainen Pat Ray |
︙ | ︙ | |||
1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 | Philippe Vaucher Pierre Pierre Brico Pierre Chapuis Pierre Joye Pierre Ynard Piotr Dobrogost Pooyan McSporran Pramod Sharma Prash Dush Praveen Pvs Priyanka Shah Przemysław Tomaszewski Puneet Pawaia Quagmire | > > | 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 | Philippe Vaucher Pierre Pierre Brico Pierre Chapuis Pierre Joye Pierre Ynard Piotr Dobrogost Po-Chuan Hsieh Pooyan McSporran Poul T Lomholt Pramod Sharma Prash Dush Praveen Pvs Priyanka Shah Przemysław Tomaszewski Puneet Pawaia Quagmire |
︙ | ︙ | |||
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 | Randy McMurchy Raphael Gozzo Ravi Pratap Ray Dassen Ray Pekowski Ray Satiro Razvan Cojocaru Reinhard Max Reinout van Schouwen Remco van Hooff Remi Gacogne Remo E Renato Botelho Renaud Allard Renaud Chaillat Renaud Duhaut Renaud Guillard Renaud Lehoux Rene Bernhardt Rene Rebe Reuven Wachtfogel Reza Arbab Ricardo Cadime Rich Burridge Rich Gray Rich Rauenzahn Rich Turner Richard Adams Richard Alcock Richard Archer | > > | 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 | Randy McMurchy Raphael Gozzo Ravi Pratap Ray Dassen Ray Pekowski Ray Satiro Razvan Cojocaru Reed Loden Reinhard Max Reinout van Schouwen Remco van Hooff Remi Gacogne Remo E Renato Botelho Renaud Allard Renaud Chaillat Renaud Duhaut Renaud Guillard Renaud Lehoux Rene Bernhardt Rene Rebe Reuven Wachtfogel Reza Arbab Ricardo Cadime Ricardo Gomes Rich Burridge Rich Gray Rich Rauenzahn Rich Turner Richard Adams Richard Alcock Richard Archer |
︙ | ︙ | |||
1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 | Richard van den Berg Richy Kim Rick Deist Rick Jones Rick Richardson Rick Welykochy Ricki Hirner Ricky-Tigg on github Rider Linden Rikard Falkeborn Rob Cotrone Rob Crittenden Rob Davies Rob Jones | > | 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 | Richard van den Berg Richy Kim Rick Deist Rick Jones Rick Richardson Rick Welykochy Ricki Hirner Ricky Leverence Ricky-Tigg on github Rider Linden Rikard Falkeborn Rob Cotrone Rob Crittenden Rob Davies Rob Jones |
︙ | ︙ | |||
1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 | Roman Mamedov Romulo A. Ceccon Ron Eldor Ron Parker Ron Zapp Ronnie Mose Rosimildo da Silva Roy Shan Rune Kleveland Ruslan Baratov Ruslan Gazizov Rutger Hofman Ruurd Beerstra Ryan Braud | > | 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 | Roman Mamedov Romulo A. Ceccon Ron Eldor Ron Parker Ron Zapp Ronnie Mose Rosimildo da Silva Roy Bellingan Roy Shan Rune Kleveland Ruslan Baratov Ruslan Gazizov Rutger Hofman Ruurd Beerstra Ryan Braud |
︙ | ︙ | |||
1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 | Symeon Paraschoudis Sébastien Willemijns T. Bharath T. Yamada TJ Saunders Tae Hyoung Ahn Tae Wong Taneli Vähäkangas Tanguy Fautre Tatsuhiro Tsujikawa Teemu Yli-Elsila Temprimus Terri Oda Terry Wu | > | 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 | Symeon Paraschoudis Sébastien Willemijns T. Bharath T. Yamada TJ Saunders Tae Hyoung Ahn Tae Wong Taiyu Len Taneli Vähäkangas Tanguy Fautre Tatsuhiro Tsujikawa Teemu Yli-Elsila Temprimus Terri Oda Terry Wu |
︙ | ︙ | |||
1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 | Toshio Kuratomi Toshiyuki Maezawa Traian Nicolescu Travis Burtrum Travis Obenhaus Troels Walsted Hansen Troy Engel Tuomo Rinne Tupone Alfredo Tyler Hall Török Edwin Ulf Härnhammar Ulf Samuelsson Ulrich Doehner | > | 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 | Toshio Kuratomi Toshiyuki Maezawa Traian Nicolescu Travis Burtrum Travis Obenhaus Troels Walsted Hansen Troy Engel Tseng Jun Tuomo Rinne Tupone Alfredo Tyler Hall Török Edwin Ulf Härnhammar Ulf Samuelsson Ulrich Doehner |
︙ | ︙ | |||
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 | Vsevolod Novikov W. Mark Kubacki Waldek Kozba Walter J. Mack Ward Willats Warren Menzer Wayne Haigh Wenxiang Qian Werner Koch Wesley Laxton Wesley Miaw Wez Furlong Wham Bang Wilfredo Sanchez Will Dietz Willem Sparreboom William A. Rowe Jr William Ahern Wojciech Zwiefka Wouter Van Rooy Wu Yongzheng Wyatt O'Day Xavier Bouchoux XhstormR on github Xiangbin Li Yaakov Selkowitz Yang Tse Yarram Sunil Yasuharu Yamada Yasuhiro Matsumoto Yehezkel Horowitz Yehoshua Hershberg | > > | 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 | Vsevolod Novikov W. Mark Kubacki Waldek Kozba Walter J. Mack Ward Willats Warren Menzer Wayne Haigh Wenchao Li Wenxiang Qian Werner Koch Wesley Laxton Wesley Miaw Wez Furlong Wham Bang Wilfredo Sanchez Will Dietz Willem Sparreboom William A. Rowe Jr William Ahern Wojciech Zwiefka Wouter Van Rooy Wu Yongzheng Wyatt O'Day Xavier Bouchoux XhstormR on github Xiangbin Li XmiliaH on github Yaakov Selkowitz Yang Tse Yarram Sunil Yasuharu Yamada Yasuhiro Matsumoto Yehezkel Horowitz Yehoshua Hershberg |
︙ | ︙ | |||
1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 | arainchik on github asavah on github baumanj on github bobmitchell1956 on github bsammon on github buzo-ffm on github cbartl on github clbr on github cmfrolick on github d912e3 on github daboul on github dasimx on github destman on github dkjjr89 on github | > | 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 | arainchik on github asavah on github baumanj on github bobmitchell1956 on github bsammon on github buzo-ffm on github cbartl on github cclauss on github clbr on github cmfrolick on github d912e3 on github daboul on github dasimx on github destman on github dkjjr89 on github |
︙ | ︙ | |||
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 | jnbr on github jonrumsey on github joshhe on github jungle-boogie on github jveazey on github ka7 on github kreshano on github lijian996 on github lukaszgn on github madblobfish on github marc-groundctl on github masbug on github mccormickt12 on github mkzero on github moohoorama on github nedres on github neex on github neheb on github nianxuejie on github nk nopjmp on github olesteban on github omau on github ovidiu-benea on github patelvivekv1993 on github pszemus on github | > > > | 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 | jnbr on github jonrumsey on github joshhe on github jungle-boogie on github jveazey on github ka7 on github kreshano on github l00p3r on Hackerone lijian996 on github lukaszgn on github madblobfish on github marc-groundctl on github masbug on github mccormickt12 on github mkzero on github moohoorama on github nedres on github neex on github neheb on github nevv on HackerOne/curl nianxuejie on github niner on github nk nopjmp on github olesteban on github omau on github ovidiu-benea on github patelvivekv1993 on github pszemus on github |
︙ | ︙ |
Changes to jni/curl/docs/TODO.
︙ | ︙ | |||
31 32 33 34 35 36 37 | 1.12 updated DNS server while running 1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION 1.14 Typesafe curl_easy_setopt() 1.15 Monitor connections in the connection pool 1.16 Try to URL encode given URL 1.17 Add support for IRIs 1.18 try next proxy if one doesn't work | < | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 1.12 updated DNS server while running 1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION 1.14 Typesafe curl_easy_setopt() 1.15 Monitor connections in the connection pool 1.16 Try to URL encode given URL 1.17 Add support for IRIs 1.18 try next proxy if one doesn't work 1.20 SRV and URI DNS records 1.21 Have the URL API offer IDN decoding 1.22 CURLINFO_PAUSE_STATE 1.23 Offer API to flush the connection pool 1.24 TCP Fast Open for windows 1.25 Expose tried IP addresses that failed 1.26 CURL_REFUSE_CLEARTEXT |
︙ | ︙ | |||
146 147 148 149 150 151 152 | 18. Command line tool 18.1 sync 18.2 glob posts 18.3 prevent file overwriting 18.4 simultaneous parallel transfers 18.5 UTF-8 filenames in Content-Disposition 18.6 warning when setting an option | < | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | 18. Command line tool 18.1 sync 18.2 glob posts 18.3 prevent file overwriting 18.4 simultaneous parallel transfers 18.5 UTF-8 filenames in Content-Disposition 18.6 warning when setting an option 18.8 offer color-coded HTTP header output 18.9 Choose the name of file in braces for complex URLs 18.10 improve how curl works in a windows console window 18.11 Windows: set attribute 'archive' for completed downloads 18.12 keep running, read instructions from pipe/socket 18.13 support metalink in http headers 18.14 --fail without --location should treat 3xx as a failure |
︙ | ︙ | |||
256 257 258 259 260 261 262 263 264 265 266 267 268 269 | Dynamically allocate buffer size depending on protocol in use in combination with freeing it after each individual transfer? Other suggestions? 1.7 Support HTTP/2 for HTTP(S) proxies Support for doing HTTP/2 to HTTP and HTTPS proxies is still missing. 1.8 CURLOPT_RESOLVE for any port number This option allows applications to set a replacement IP address for a given host + port pair. Consider making support for providing a replacement address for the host name on all port numbers. | > > | 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 | Dynamically allocate buffer size depending on protocol in use in combination with freeing it after each individual transfer? Other suggestions? 1.7 Support HTTP/2 for HTTP(S) proxies Support for doing HTTP/2 to HTTP and HTTPS proxies is still missing. See https://github.com/curl/curl/issues/3570 1.8 CURLOPT_RESOLVE for any port number This option allows applications to set a replacement IP address for a given host + port pair. Consider making support for providing a replacement address for the host name on all port numbers. |
︙ | ︙ | |||
368 369 370 371 372 373 374 | Allow an application to specify a list of proxies to try, and failing to connect to the first go on and try the next instead until the list is exhausted. Browsers support this feature at least when they specify proxies using PACs. https://github.com/curl/curl/issues/896 | < < < < < < < < < < | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 | Allow an application to specify a list of proxies to try, and failing to connect to the first go on and try the next instead until the list is exhausted. Browsers support this feature at least when they specify proxies using PACs. https://github.com/curl/curl/issues/896 1.20 SRV and URI DNS records Offer support for resolving SRV and URI DNS records for libcurl to know which server to connect to for various protocols (including HTTP!). 1.21 Have the URL API offer IDN decoding |
︙ | ︙ | |||
603 604 605 606 607 608 609 | which you give headers a value, and then when the HTTP request is built it sorts the headers based on that number. We could then have internally created headers use a default value so only headers that need to be moved have to be specified. 5.4 Allow SAN names in HTTP/2 server push | | | 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 | which you give headers a value, and then when the HTTP request is built it sorts the headers based on that number. We could then have internally created headers use a default value so only headers that need to be moved have to be specified. 5.4 Allow SAN names in HTTP/2 server push curl only allows HTTP/2 push promise if the provided :authority header value exactly matches the host name given in the URL. It could be extended to allow any name that would match the Subject Alternative Names in the server's TLS certificate. See https://github.com/curl/curl/pull/3581 5.5 auth= in URLs |
︙ | ︙ | |||
1021 1022 1023 1024 1025 1026 1027 | 18.6 warning when setting an option Display a warning when libcurl returns an error when setting an option. This can be useful to tell when support for a particular feature hasn't been compiled into the library. | < < < < < < < | 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 | 18.6 warning when setting an option Display a warning when libcurl returns an error when setting an option. This can be useful to tell when support for a particular feature hasn't been compiled into the library. 18.8 offer color-coded HTTP header output By offering different color output on the header name and the header contents, they could be made more readable and thus help users working on HTTP services. 18.9 Choose the name of file in braces for complex URLs |
︙ | ︙ |
Changes to jni/curl/docs/cmdline-opts/alt-svc.d.
1 2 3 4 5 6 7 8 9 10 11 12 | Long: alt-svc Arg: <file name> Protocols: HTTPS Help: Enable alt-svc with this cache file Added: 7.64.1 --- WARNING: this option is experiemental. Do not use in production. This option enables the alt-svc parser in curl. If the file name points to an existing alt-svc cache file, that will be used. After a completed transfer, the cache will be saved to the file name again if it has been modified. | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Long: alt-svc Arg: <file name> Protocols: HTTPS Help: Enable alt-svc with this cache file Added: 7.64.1 --- WARNING: this option is experiemental. Do not use in production. This option enables the alt-svc parser in curl. If the file name points to an existing alt-svc cache file, that will be used. After a completed transfer, the cache will be saved to the file name again if it has been modified. Specify a "" file name (zero length) to avoid loading/saving and make curl just handle the cache in memory. If this option is used several times, curl will load contents from all the files but the the last one will be used for saving. |
Changes to jni/curl/docs/cmdline-opts/config.d.
︙ | ︙ | |||
11 12 13 14 15 16 17 | Options and their parameters must be specified on the same line in the file, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter. | | | | | | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Options and their parameters must be specified on the same line in the file, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter. If the parameter contains whitespace (or starts with : or =), the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash preceding any other letter is ignored. If the first column of a config line is a '#' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file. Specify the filename to --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: |
︙ | ︙ |
Changes to jni/curl/docs/curl-config.1.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl-config 1 "November 30, 2017" "Curl 7.65.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.
︙ | ︙ | |||
18 19 20 21 22 23 24 | .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .\" DO NOT EDIT. Generated by the curl project gen.pl man page generator. .\" | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .\" DO NOT EDIT. Generated by the curl project gen.pl man page generator. .\" .TH curl 1 "November 16, 2016" "Curl 7.65.0" "Curl Manual" .SH NAME curl \- transfer a URL .SH SYNOPSIS .B curl [options / URLs] .SH DESCRIPTION .B curl |
︙ | ︙ | |||
149 150 151 152 153 154 155 | .IP "--alt-svc <file name>" (HTTPS) WARNING: this option is experiemental. Do not use in production. This option enables the alt-svc parser in curl. If the file name points to an existing alt-svc cache file, that will be used. After a completed transfer, the cache will be saved to the file name again if it has been modified. | | | 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | .IP "--alt-svc <file name>" (HTTPS) WARNING: this option is experiemental. Do not use in production. This option enables the alt-svc parser in curl. If the file name points to an existing alt-svc cache file, that will be used. After a completed transfer, the cache will be saved to the file name again if it has been modified. Specify a "" file name (zero length) to avoid loading/saving and make curl just handle the cache in memory. If this option is used several times, curl will load contents from all the files but the the last one will be used for saving. Added in 7.64.1. .IP "--anyauth" |
︙ | ︙ | |||
317 318 319 320 321 322 323 | Options and their parameters must be specified on the same line in the file, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter. | | | | | | | | 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | Options and their parameters must be specified on the same line in the file, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter. If the parameter contains whitespace (or starts with : or =), the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash preceding any other letter is ignored. If the first column of a config line is a '#' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file. Specify the filename to \fI-K, --config\fP as '-' to make curl read the file from stdin. Note that to be able to specify a URL in the config file, you need to specify it using the \fI--url\fP option, and not by simply writing the URL on its own line. So, it could look similar to this: |
︙ | ︙ |
Changes to jni/curl/docs/examples/cacertinmem.c.
︙ | ︙ | |||
82 83 84 85 86 87 88 | "r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK\n" "Z05phkOTOPu220+DkdRgfks+KzgHVZhepA==\n" "-----END CERTIFICATE-----\n"; BIO *cbio = BIO_new_mem_buf(mypem, sizeof(mypem)); X509_STORE *cts = SSL_CTX_get_cert_store((SSL_CTX *)sslctx); X509_INFO *itmp; | | < < | 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 | "r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK\n" "Z05phkOTOPu220+DkdRgfks+KzgHVZhepA==\n" "-----END CERTIFICATE-----\n"; BIO *cbio = BIO_new_mem_buf(mypem, sizeof(mypem)); X509_STORE *cts = SSL_CTX_get_cert_store((SSL_CTX *)sslctx); X509_INFO *itmp; int i; STACK_OF(X509_INFO) *inf; (void)curl; (void)parm; if(!cts || !cbio) { return rv; } inf = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL); if(!inf) { BIO_free(cbio); return rv; } for(i = 0; i < sk_X509_INFO_num(inf); i++) { itmp = sk_X509_INFO_value(inf, i); if(itmp->x509) { X509_STORE_add_cert(cts, itmp->x509); } if(itmp->crl) { X509_STORE_add_crl(cts, itmp->crl); } } sk_X509_INFO_pop_free(inf, X509_INFO_free); BIO_free(cbio); rv = CURLE_OK; |
︙ | ︙ |
Changes to jni/curl/docs/examples/curlgtk.c.
︙ | ︙ | |||
41 42 43 44 45 46 47 | gdk_threads_leave(); return 0; } void *my_thread(void *ptr) { CURL *curl; | < | | 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | gdk_threads_leave(); return 0; } void *my_thread(void *ptr) { CURL *curl; FILE *outfile; gchar *url = ptr; curl = curl_easy_init(); if(curl) { const char *filename = "test.curl"; outfile = fopen(filename, "wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func); curl_easy_setopt(curl, CURLOPT_READFUNCTION, my_read_func); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L); curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func); curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar); curl_easy_perform(curl); fclose(outfile); /* always cleanup */ curl_easy_cleanup(curl); } return NULL; |
︙ | ︙ |
Changes to jni/curl/docs/examples/curlx.c.
︙ | ︙ | |||
540 541 542 543 544 545 546 | /* 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)); { | | | 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 | /* 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", |
︙ | ︙ |
Changes to jni/curl/docs/examples/ephiperfifo.c.
︙ | ︙ | |||
144 145 146 147 148 149 150 | /* Update the timer after curl_multi library does it's thing. Curl will * inform us through this callback what it wants the new timeout to be, * after it does some work. */ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g) { struct itimerspec its; | < | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | /* Update the timer after curl_multi library does it's thing. Curl will * inform us through this callback what it wants the new timeout to be, * after it does some work. */ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g) { struct itimerspec its; fprintf(MSG_OUT, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms); if(timeout_ms > 0) { its.it_interval.tv_sec = 1; its.it_interval.tv_nsec = 0; its.it_value.tv_sec = timeout_ms / 1000; |
︙ | ︙ | |||
337 338 339 340 341 342 343 | /* CURLOPT_WRITEFUNCTION */ static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb, void *data) { size_t realsize = size * nmemb; | | > | 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | /* CURLOPT_WRITEFUNCTION */ static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb, void *data) { size_t realsize = size * nmemb; (void)_Unused; (void)data; return realsize; } /* CURLOPT_PROGRESSFUNCTION */ static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused, |
︙ | ︙ | |||
514 515 516 517 518 519 520 | /* we don't call any curl_multi_socket*() function yet as we have no handles added! */ fprintf(MSG_OUT, "Entering wait loop\n"); fflush(MSG_OUT); while(!g_should_exit_) { | < < < | 514 515 516 517 518 519 520 521 522 523 524 525 526 527 | /* we don't call any curl_multi_socket*() function yet as we have no handles added! */ fprintf(MSG_OUT, "Entering wait loop\n"); fflush(MSG_OUT); while(!g_should_exit_) { err = epoll_wait(g.epfd, events, sizeof(events)/sizeof(struct epoll_event), 10000); if(err == -1) { if(errno == EINTR) { fprintf(MSG_OUT, "note: wait interrupted\n"); continue; } |
︙ | ︙ |
Changes to jni/curl/docs/examples/evhiperfifo.c.
︙ | ︙ | |||
417 418 419 420 421 422 423 | ev_io_start(g->loop, &g->fifo_event); return (0); } int main(int argc, char **argv) { GlobalInfo g; | < | 417 418 419 420 421 422 423 424 425 426 427 428 429 430 | ev_io_start(g->loop, &g->fifo_event); return (0); } int main(int argc, char **argv) { GlobalInfo g; (void)argc; (void)argv; memset(&g, 0, sizeof(GlobalInfo)); g.loop = ev_default_loop(0); init_fifo(&g); |
︙ | ︙ |
Changes to jni/curl/docs/examples/ftpgetinfo.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is |
︙ | ︙ | |||
52 53 54 55 56 57 58 | curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, ftpurl); /* No download if the file */ curl_easy_setopt(curl, CURLOPT_NOBODY, 1L); /* Ask for filetime */ curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); | < | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, ftpurl); /* No download if the file */ curl_easy_setopt(curl, CURLOPT_NOBODY, 1L); /* Ask for filetime */ curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, throw_away); curl_easy_setopt(curl, CURLOPT_HEADER, 0L); /* Switch on full protocol/debug output */ /* curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); */ res = curl_easy_perform(curl); |
︙ | ︙ |
Changes to jni/curl/docs/examples/ghiper.c.
︙ | ︙ | |||
407 408 409 410 411 412 413 | return socket; } int main(int argc, char **argv) { GlobalInfo *g; | < | 407 408 409 410 411 412 413 414 415 416 417 418 419 420 | return socket; } int main(int argc, char **argv) { GlobalInfo *g; GMainLoop*gmain; int fd; GIOChannel* ch; g = g_malloc0(sizeof(GlobalInfo)); fd = init_fifo(); ch = g_io_channel_unix_new(fd); |
︙ | ︙ |
Changes to jni/curl/docs/examples/hiperfifo.c.
︙ | ︙ | |||
303 304 305 306 307 308 309 | /* CURLOPT_WRITEFUNCTION */ static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb, void *data) { size_t realsize = size * nmemb; | | > | 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 | /* CURLOPT_WRITEFUNCTION */ static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb, void *data) { size_t realsize = size * nmemb; (void)_Unused; (void)data; return realsize; } /* CURLOPT_PROGRESSFUNCTION */ static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused, |
︙ | ︙ |
Changes to jni/curl/docs/examples/multithread.c.
︙ | ︙ | |||
65 66 67 68 69 70 71 | void * (*start_func)(void *), void *arg); */ int main(int argc, char **argv) { pthread_t tid[NUMT]; int i; | < | | | | | | 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 | void * (*start_func)(void *), void *arg); */ int main(int argc, char **argv) { pthread_t tid[NUMT]; int i; /* Must initialize libcurl before any threads are started */ curl_global_init(CURL_GLOBAL_ALL); for(i = 0; i< NUMT; i++) { int error = pthread_create(&tid[i], NULL, /* default attributes please */ pull_one_url, (void *)urls[i]); if(0 != error) fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error); else fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]); } /* now wait for all threads to terminate */ for(i = 0; i< NUMT; i++) { pthread_join(tid[i], NULL); fprintf(stderr, "Thread %d terminated\n", i); } return 0; } |
Changes to jni/curl/docs/examples/sampleconv.c.
︙ | ︙ | |||
86 87 88 89 90 91 92 | return CURLE_CONV_FAILED; } } int main(void) { CURL *curl; | < | | 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 | return CURLE_CONV_FAILED; } } int main(void) { CURL *curl; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); /* use platform-specific functions for codeset conversions */ curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION, my_conv_from_ascii_to_ebcdic); curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION, my_conv_from_ebcdic_to_ascii); curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION, my_conv_from_utf8_to_ebcdic); curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } return 0; } |
Changes to jni/curl/docs/examples/smooth-gtk-thread.c.
︙ | ︙ | |||
64 65 66 67 68 69 70 | return fwrite(ptr, size, nmemb, stream); } /* https://weather.com/weather/today/l/46214?cc=*&dayf=5&unit=i */ void *pull_one_url(void *NaN) { CURL *curl; | < | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | return fwrite(ptr, size, nmemb, stream); } /* https://weather.com/weather/today/l/46214?cc=*&dayf=5&unit=i */ void *pull_one_url(void *NaN) { CURL *curl; gchar *http; FILE *outfile; /* Stop threads from entering unless j is incremented */ pthread_mutex_lock(&lock); while(j < num_urls) { printf("j = %d\n", j); |
︙ | ︙ | |||
94 95 96 97 98 99 100 | /* Write to the file */ curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_file); j++; /* critical line */ pthread_mutex_unlock(&lock); | | | 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | /* Write to the file */ curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_file); j++; /* critical line */ pthread_mutex_unlock(&lock); curl_easy_perform(curl); fclose(outfile); printf("fclose\n"); curl_easy_cleanup(curl); } g_free(http); |
︙ | ︙ | |||
127 128 129 130 131 132 133 | return TRUE; } void *create_thread(void *progress_bar) { pthread_t tid[NUMT]; int i; | < | | | | | | 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 | return TRUE; } void *create_thread(void *progress_bar) { pthread_t tid[NUMT]; int i; /* Make sure I don't create more threads than urls. */ for(i = 0; i < NUMT && i < num_urls ; i++) { int error = pthread_create(&tid[i], NULL, /* default attributes please */ pull_one_url, NULL); if(0 != error) fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error); else fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]); } /* Wait for all threads to terminate. */ for(i = 0; i < NUMT && i < num_urls; i++) { pthread_join(tid[i], NULL); fprintf(stderr, "Thread %d terminated\n", i); } /* This stops the pulsing if you have it turned on in the progress bar section */ g_source_remove(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(progress_bar), "pulse_id"))); |
︙ | ︙ |
Changes to jni/curl/docs/examples/threaded-shared-conn.c.
︙ | ︙ | |||
113 114 115 116 117 118 119 | return NULL; } int main(void) { pthread_t tid[NUM_THREADS]; int i; | < > | | 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 | return NULL; } int main(void) { pthread_t tid[NUM_THREADS]; int i; CURLSH *share; struct initurl url[NUM_THREADS]; /* Must initialize libcurl before any threads are started */ curl_global_init(CURL_GLOBAL_ALL); share = curl_share_init(); curl_share_setopt(share, CURLSHOPT_LOCKFUNC, lock_cb); curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, unlock_cb); curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); init_locks(); for(i = 0; i< NUM_THREADS; i++) { int error; url[i].url = URL; url[i].share = share; url[i].threadno = i; error = pthread_create(&tid[i], NULL, run_thread, &url[i]); if(0 != error) fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error); else fprintf(stderr, "Thread %d, gets %s\n", i, URL); } /* now wait for all threads to terminate */ for(i = 0; i< NUM_THREADS; i++) { pthread_join(tid[i], NULL); fprintf(stderr, "Thread %d terminated\n", i); } kill_locks(); curl_share_cleanup(share); curl_global_cleanup(); return 0; } |
Changes to jni/curl/docs/examples/threaded-ssl.c.
︙ | ︙ | |||
131 132 133 134 135 136 137 | return NULL; } int main(int argc, char **argv) { pthread_t tid[NUMT]; int i; | < | | | | | | 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 | return NULL; } int main(int argc, char **argv) { pthread_t tid[NUMT]; int i; (void)argc; /* we don't use any arguments in this example */ (void)argv; /* Must initialize libcurl before any threads are started */ curl_global_init(CURL_GLOBAL_ALL); init_locks(); for(i = 0; i< NUMT; i++) { int error = pthread_create(&tid[i], NULL, /* default attributes please */ pull_one_url, (void *)urls[i]); if(0 != error) fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error); else fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]); } /* now wait for all threads to terminate */ for(i = 0; i< NUMT; i++) { pthread_join(tid[i], NULL); fprintf(stderr, "Thread %d terminated\n", i); } kill_locks(); return 0; } |
Changes to jni/curl/docs/libcurl/curl_easy_cleanup.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_cleanup - End a libcurl easy handle .SH SYNOPSIS .B #include <curl/curl.h> .BI "void curl_easy_cleanup(CURL *" handle ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_duphandle.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_duphandle - Clone a libcurl session handle .SH SYNOPSIS .B #include <curl/curl.h> .BI "CURL *curl_easy_duphandle(CURL *"handle ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_escape.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_escape - URL encodes the given string .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "char *curl_easy_escape( CURL *" curl ", const char *" string |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_getinfo.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_easy_getinfo 3 "April 11, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_getinfo - extract information from a curl handle .SH SYNOPSIS .B #include <curl/curl.h> .B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );" |
︙ | ︙ | |||
239 240 241 242 243 244 245 | |--|--|--APPCONNECT |--|--|--|--PRETRANSFER |--|--|--|--|--STARTTRANSFER |--|--|--|--|--|--TOTAL |--|--|--|--|--|--REDIRECT .fi .IP NAMELOOKUP | | | 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | |--|--|--APPCONNECT |--|--|--|--PRETRANSFER |--|--|--|--|--STARTTRANSFER |--|--|--|--|--|--TOTAL |--|--|--|--|--|--REDIRECT .fi .IP NAMELOOKUP \fICURLINFO_NAMELOOKUP_TIME\fP and \fICURLINFO_NAMELOOKUP_TIME_T\fP. The time it took from the start until the name resolving was completed. .IP CONNECT \fICURLINFO_CONNECT_TIME\fP and \fICURLINFO_CONNECT_TIME_T\fP. The time it took from the start until the connect to the remote host (or proxy) was completed. .IP APPCONNECT \fICURLINFO_APPCONNECT_TIME\fP and \fICURLINFO_APPCONNECT_TIME_T\fP. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_init.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_easy_init 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_init - Start a libcurl easy session .SH SYNOPSIS .B #include <curl/curl.h> .BI "CURL *curl_easy_init( );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_pause.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_pause - pause and unpause a connection .SH SYNOPSIS .B #include <curl/curl.h> .BI "CURLcode curl_easy_pause(CURL *"handle ", int "bitmask " );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_perform.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_perform - perform a blocking file transfer .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_easy_perform(CURL *" easy_handle ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_recv.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_recv - receives raw data on an "easy" connection .SH SYNOPSIS .B #include <curl/easy.h> .sp .BI "CURLcode curl_easy_recv( CURL *" curl ", void *" buffer "," |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_reset.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_reset - reset all options of a libcurl session handle .SH SYNOPSIS .B #include <curl/curl.h> .BI "void curl_easy_reset(CURL *"handle ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_send.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_easy_send 3 "December 18, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_send - sends raw data over an "easy" connection .SH SYNOPSIS .B #include <curl/easy.h> .sp .BI "CURLcode curl_easy_send( CURL *" curl ", const void *" buffer "," |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_setopt.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_easy_setopt 3 "April 14, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_setopt \- set options for a curl easy handle .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter); |
︙ | ︙ | |||
465 466 467 468 469 470 471 472 473 474 475 476 477 478 | Cap the download speed to this. See \fICURLOPT_MAX_RECV_SPEED_LARGE(3)\fP .IP CURLOPT_MAXCONNECTS Maximum number of connections in the connection pool. See \fICURLOPT_MAXCONNECTS(3)\fP .IP CURLOPT_FRESH_CONNECT Use a new connection. \fICURLOPT_FRESH_CONNECT(3)\fP .IP CURLOPT_FORBID_REUSE Prevent subsequent connections from re-using this. See \fICURLOPT_FORBID_REUSE(3)\fP .IP CURLOPT_CONNECTTIMEOUT Timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT(3)\fP .IP CURLOPT_CONNECTTIMEOUT_MS Millisecond timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT_MS(3)\fP .IP CURLOPT_IPRESOLVE IP version to resolve to. See \fICURLOPT_IPRESOLVE(3)\fP .IP CURLOPT_CONNECT_ONLY | > > | 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 | Cap the download speed to this. See \fICURLOPT_MAX_RECV_SPEED_LARGE(3)\fP .IP CURLOPT_MAXCONNECTS Maximum number of connections in the connection pool. See \fICURLOPT_MAXCONNECTS(3)\fP .IP CURLOPT_FRESH_CONNECT Use a new connection. \fICURLOPT_FRESH_CONNECT(3)\fP .IP CURLOPT_FORBID_REUSE Prevent subsequent connections from re-using this. See \fICURLOPT_FORBID_REUSE(3)\fP .IP CURLOPT_MAXAGE_CONN Limit the age of connections for reuse. See \fICURLOPT_MAXAGE_CONN(3)\fP .IP CURLOPT_CONNECTTIMEOUT Timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT(3)\fP .IP CURLOPT_CONNECTTIMEOUT_MS Millisecond timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT_MS(3)\fP .IP CURLOPT_IPRESOLVE IP version to resolve to. See \fICURLOPT_IPRESOLVE(3)\fP .IP CURLOPT_CONNECT_ONLY |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_strerror.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_strerror - return string describing error code .SH SYNOPSIS #include <curl/curl.h> const char *curl_easy_strerror(CURLcode errornum); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_easy_unescape.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_easy_unescape - URL decodes the given string .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "char *curl_easy_unescape( CURL *" curl ", const char *" url |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_escape.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_escape 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_escape - URL encodes the given string .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "char *curl_escape( const char *" url ", int "length " );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_formadd.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_formadd 3 "December 11, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_formadd - add a section to a multipart/formdata HTTP POST .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_formfree.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_formfree 3 "August 09, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_formfree - free a previously build multipart/formdata HTTP POST chain .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "void curl_formfree(struct curl_httppost *" form); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_formget.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_formget 3 "September 02, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_formget - serialize a previously built multipart/formdata HTTP POST chain .SH SYNOPSIS .nf .B #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_free.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_free 3 "August 09, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_free - reclaim memory that has been obtained through a libcurl call .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "void curl_free( char *" ptr " );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_getdate.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_getdate 3 "January 18, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_getdate - Convert a date string to number of seconds .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "time_t curl_getdate(char *" datestring ", time_t *"now " );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_getenv.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_getenv 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_getenv - return value for environment name .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "char *curl_getenv(const char *" name ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_global_cleanup.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_global_cleanup - global libcurl cleanup .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "void curl_global_cleanup(void);" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_global_init.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_global_init 3 "April 17, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_global_init - Global libcurl initialisation .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_global_init(long " flags ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_global_init_mem.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_global_init_mem 3 "September 23, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_global_init_mem - Global libcurl initialisation with memory callbacks .SH SYNOPSIS .B #include <curl/curl.h> .nf .B "CURLcode curl_global_init_mem(long " flags, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_global_sslset.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_global_sslset - Select SSL backend to use with libcurl .SH SYNOPSIS .B #include <curl/curl.h> .nf |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_addpart.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_addpart - append a new empty part to a mime structure .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "curl_mimepart * curl_mime_addpart(curl_mime * " mime ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_data.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_data 3 "September 22, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_data - set a mime part's body data from memory .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_data(curl_mimepart * " part ", const char * " data |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_data_cb.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_data_cb - set a callback-based data source for a mime part's body .SH SYNOPSIS .B #include <curl/curl.h> .sp size_t readfunc(char *buffer, size_t size, size_t nitems, void *arg); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_encoder.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_encoder - set a mime part's encoder and content transfer encoding .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_encoder(curl_mimepart * " part , |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_filedata.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_filedata - set a mime part's body data from a file contents .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_filedata(curl_mimepart * " part , |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_filename.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_filename - set a mime part's remote file name .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_filename(curl_mimepart * " part , |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_free.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_free 3 "August 09, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_free - free a previously built mime structure .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "void curl_mime_free(curl_mime *" mime); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_headers.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_headers - set a mime part's custom headers .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_headers(curl_mimepart * " part , |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_init.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_init 3 "September 22, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_init - create a mime handle .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "curl_mime * curl_mime_init(CURL * " easy_handle ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_name.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_name 3 "September 22, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_name - set a mime part's name .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_name(curl_mimepart * " part ", const char * " name ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_subparts.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_subparts - set subparts of a multipart mime part .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_subparts(curl_mimepart * " part , |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mime_type.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_mime_type 3 "April 17, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_mime_type - set a mime part's content type .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLcode curl_mime_type(curl_mimepart * " part , |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_mprintf.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_printf 3 "April 01, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf, curl_mvsprintf - formatted output conversion .SH SYNOPSIS .B #include <curl/mprintf.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_add_handle.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_add_handle - add an easy handle to a multi session .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_assign.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_assign \- set data to associate with an internal socket .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_cleanup.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_cleanup - close down a multi session .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_fdset.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_fdset - extracts file descriptor information from a multi handle .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_info_read.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_info_read - read multi stack informationals .SH SYNOPSIS #include <curl/curl.h> CURLMsg *curl_multi_info_read( CURLM *multi_handle, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_init.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_init 3 "September 23, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_init - create a multi handle .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLM *curl_multi_init( );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_perform.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_perform - reads/writes available data from each easy handle .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_remove_handle.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_remove_handle - remove an easy handle from a multi session .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_setopt.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_setopt \- set options for a curl multi handle .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_socket.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_socket \- reads/writes available data .SH SYNOPSIS .nf #include <curl/curl.h> CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_socket_action.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_socket_action 3 "June 30, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_socket_action \- reads/writes available data given an action .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_strerror.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_strerror - return string describing error code .SH SYNOPSIS .nf .B #include <curl/curl.h> .BI "const char *curl_multi_strerror(CURLMcode " errornum ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_timeout.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_multi_timeout \- how long to wait for action before proceeding .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_multi_wait.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_multi_wait 3 "March 09, 2016" "libcurl 7.65.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_share_cleanup.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_share_cleanup - Clean up a shared object .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLSHcode curl_share_cleanup(CURLSH *" share_handle ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_share_init.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_share_init 3 "September 23, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_share_init - Create a shared object .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "CURLSH *curl_share_init( );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_share_setopt.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_share_setopt 3 "May 28, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_share_setopt - Set options for a shared object .SH SYNOPSIS .B #include <curl/curl.h> .sp CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_share_strerror.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_share_strerror - return string describing error code .SH SYNOPSIS .nf .B #include <curl/curl.h> .BI "const char *curl_share_strerror(CURLSHcode " errornum ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_slist_append.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_slist_append 3 "January 02, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_slist_append - add a string to an slist .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "struct curl_slist *curl_slist_append(struct curl_slist *" list, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_slist_free_all.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_slist_free_all - free an entire curl_slist list .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "void curl_slist_free_all(struct curl_slist *" list); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_strequal.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_strequal 3 "June 29, 2017" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_strequal, curl_strnequal - case insensitive string comparisons .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "int curl_strequal(char *" str1 ", char *" str2 ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_unescape.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_unescape 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_unescape - URL decodes the given string .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "char *curl_unescape( const char *" url ", int "length " );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_url.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_url 3 "March 22, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_url - returns a new CURLU handle .SH SYNOPSIS .B #include <curl/curl.h> CURLU *curl_url(); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_url_cleanup.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_url_cleanup - free a CURLU handle .SH SYNOPSIS .B #include <curl/curl.h> void curl_url_cleanup(CURLU *handle); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_url_dup.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_url_dup 3 "September 08, 2018" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_url_dup - duplicate a CURLU handle .SH SYNOPSIS .B #include <curl/curl.h> CURLU *curl_url_dup(CURLU *inhandle); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_url_get.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_url_get 3 "May 03, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_url_get - extract a part from a URL .SH SYNOPSIS .B #include <curl/curl.h> .nf |
︙ | ︙ | |||
73 74 75 76 77 78 79 80 81 82 83 84 85 86 | normalized and possibly cleaned up version of what was previously parsed. .IP CURLUPART_SCHEME Scheme cannot be URL decoded on get. .IP CURLUPART_USER .IP CURLUPART_PASSWORD .IP CURLUPART_OPTIONS .IP CURLUPART_HOST .IP CURLUPART_PORT Port cannot be URL decoded on get. .IP CURLUPART_PATH .IP CURLUPART_QUERY The query part will also get pluses converted to space when asked to URL decode on get with the CURLU_URLDECODE bit. .IP CURLUPART_FRAGMENT | > > > > | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | normalized and possibly cleaned up version of what was previously parsed. .IP CURLUPART_SCHEME Scheme cannot be URL decoded on get. .IP CURLUPART_USER .IP CURLUPART_PASSWORD .IP CURLUPART_OPTIONS .IP CURLUPART_HOST If the host part is an IPv6 numeric address, the zoneid will not be part of the extracted host but is provided separately in \fICURLUPART_ZONEID\fP. .IP CURLUPART_ZONEID If the host name is a numeric IPv6 address, this field might also be set. .IP CURLUPART_PORT Port cannot be URL decoded on get. .IP CURLUPART_PATH .IP CURLUPART_QUERY The query part will also get pluses converted to space when asked to URL decode on get with the CURLU_URLDECODE bit. .IP CURLUPART_FRAGMENT |
︙ | ︙ | |||
101 102 103 104 105 106 107 | printf("the scheme is %s\\n", scheme); curl_free(scheme); } curl_url_cleanup(url); } .fi .SH AVAILABILITY | | | 105 106 107 108 109 110 111 112 113 114 115 | printf("the scheme is %s\\n", scheme); curl_free(scheme); } curl_url_cleanup(url); } .fi .SH AVAILABILITY Added in curl 7.62.0. CURLUPART_ZONEID was added in 7.65.0. .SH "SEE ALSO" .BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_set "(3), " .BR curl_url_dup "(3), " |
Changes to jni/curl/docs/libcurl/curl_url_set.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_url_set 3 "May 03, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_url_set - set a URL part .SH SYNOPSIS .B #include <curl/curl.h> CURLUcode curl_url_set(CURLU *url, |
︙ | ︙ | |||
59 60 61 62 63 64 65 66 | Scheme cannot be URL decoded on set. .IP CURLUPART_USER .IP CURLUPART_PASSWORD .IP CURLUPART_OPTIONS .IP CURLUPART_HOST The host name can use IDNA. The string must then be encoded as your locale says or UTF-8 (when winidn is used). .IP CURLUPART_PORT | > > | > > | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | Scheme cannot be URL decoded on set. .IP CURLUPART_USER .IP CURLUPART_PASSWORD .IP CURLUPART_OPTIONS .IP CURLUPART_HOST The host name can use IDNA. The string must then be encoded as your locale says or UTF-8 (when winidn is used). .IP CURLUPART_ZONEID If the host name is a numeric IPv6 address, this field can also be set. .IP CURLUPART_PORT Port cannot be URL encoded on set. The given port number is provided as a string and the decimal number must be between 1 and 65535. Anything else will return an error. .IP CURLUPART_PATH If a path is set in the URL without a leading slash, a slash will be inserted automatically when this URL is read from the handle. .IP CURLUPART_QUERY The query part will also get spaces converted to pluses when asked to URL encode on set with the CURLU_URLENCODE bit. |
︙ | ︙ | |||
122 123 124 125 126 127 128 | char *scheme; /* change it to an FTP URL */ rc = curl_url_set(url, CURLUPART_SCHEME, "ftp", 0); } curl_url_cleanup(url); .fi .SH AVAILABILITY | | | 126 127 128 129 130 131 132 133 134 135 136 | char *scheme; /* change it to an FTP URL */ rc = curl_url_set(url, CURLUPART_SCHEME, "ftp", 0); } curl_url_cleanup(url); .fi .SH AVAILABILITY Added in curl 7.62.0. CURLUPART_ZONEID was added in 7.65.0. .SH "SEE ALSO" .BR curl_url_cleanup "(3), " curl_url "(3), " curl_url_get "(3), " .BR curl_url_dup "(3), " |
Changes to jni/curl/docs/libcurl/curl_version.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH curl_version 3 "February 03, 2016" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_version - returns the libcurl version string .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "char *curl_version( );" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/curl_version_info.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH curl_version_info 3 "January 29, 2019" "libcurl 7.65.0" "libcurl Manual" .SH NAME curl_version_info - returns run-time libcurl version info .SH SYNOPSIS .B #include <curl/curl.h> .sp .BI "curl_version_info_data *curl_version_info( CURLversion "age ");" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-easy.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH libcurl 3 "February 03, 2016" "libcurl 7.65.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.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH libcurl-env 3 "April 17, 2018" "libcurl 7.65.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.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH libcurl-errors 3 "November 19, 2018" "libcurl 7.65.0" "libcurl errors" .SH NAME libcurl-errors \- error codes in libcurl .SH DESCRIPTION This man page includes most, if not all, available error codes in libcurl. Why they occur and possibly what you can do to fix the problem are also included. .SH "CURLcode" |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-multi.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH libcurl-multi 3 "June 30, 2018" "libcurl 7.65.0" "libcurl multi interface" .SH NAME libcurl-multi \- how to use the multi interface .SH DESCRIPTION This is an overview on how to use the libcurl multi interface in your C programs. There are specific man pages for each function mentioned in here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-security.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH libcurl-security 3 "September 23, 2018" "libcurl 7.65.0" "libcurl security" .SH NAME libcurl-security \- security considerations when using libcurl .SH "Security" The libcurl project takes security seriously. The library is written with caution and precautions are taken to mitigate many kinds of risks encountered while operating with potentially malicious servers on the Internet. It is a |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-share.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH libcurl-share 3 "November 27, 2017" "libcurl 7.65.0" "libcurl share interface" .SH NAME libcurl-share \- how to use the share interface .SH DESCRIPTION This is an overview on how to use the libcurl share interface in your C programs. There are specific man pages for each function mentioned in here. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-symbols.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH libcurl-symbols 3 "maj 22, 2019" "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: |
︙ | ︙ | |||
1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 | Introduced in 7.1 .IP CURLOPT_MAIL_AUTH Introduced in 7.25.0 .IP CURLOPT_MAIL_FROM Introduced in 7.20.0 .IP CURLOPT_MAIL_RCPT Introduced in 7.20.0 .IP CURLOPT_MAXCONNECTS Introduced in 7.7 .IP CURLOPT_MAXFILESIZE Introduced in 7.10.8 .IP CURLOPT_MAXFILESIZE_LARGE Introduced in 7.11.0 .IP CURLOPT_MAXREDIRS | > > | 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 | Introduced in 7.1 .IP CURLOPT_MAIL_AUTH Introduced in 7.25.0 .IP CURLOPT_MAIL_FROM Introduced in 7.20.0 .IP CURLOPT_MAIL_RCPT Introduced in 7.20.0 .IP CURLOPT_MAXAGE_CONN Introduced in 7.65.0 .IP CURLOPT_MAXCONNECTS Introduced in 7.7 .IP CURLOPT_MAXFILESIZE Introduced in 7.10.8 .IP CURLOPT_MAXFILESIZE_LARGE Introduced in 7.11.0 .IP CURLOPT_MAXREDIRS |
︙ | ︙ | |||
1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 | Introduced in 7.62.0 .IP CURLUPART_SCHEME Introduced in 7.62.0 .IP CURLUPART_URL Introduced in 7.62.0 .IP CURLUPART_USER Introduced in 7.62.0 .IP CURLUSESSL_ALL Introduced in 7.17.0 .IP CURLUSESSL_CONTROL Introduced in 7.17.0 .IP CURLUSESSL_NONE Introduced in 7.17.0 .IP CURLUSESSL_TRY | > > | 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 | Introduced in 7.62.0 .IP CURLUPART_SCHEME Introduced in 7.62.0 .IP CURLUPART_URL Introduced in 7.62.0 .IP CURLUPART_USER Introduced in 7.62.0 .IP CURLUPART_ZONEID Introduced in 7.65.0 .IP CURLUSESSL_ALL Introduced in 7.17.0 .IP CURLUSESSL_CONTROL Introduced in 7.17.0 .IP CURLUSESSL_NONE Introduced in 7.17.0 .IP CURLUSESSL_TRY |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-thread.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH libcurl-thread 3 "October 30, 2018" "libcurl 7.65.0" "libcurl thread safety" .SH NAME libcurl-thread \- libcurl thread safety .SH "Multi-threading with libcurl" libcurl is thread safe but has no internal thread synchronization. You may have to provide your own locking should you meet any of the thread safety exceptions below. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-tutorial.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH libcurl-tutorial 3 "September 23, 2018" "libcurl 7.65.0" "libcurl programming" .SH NAME libcurl-tutorial \- libcurl programming tutorial .SH "Objective" This document attempts to describe the general principles and some basic approaches to consider when programming with libcurl. The text will focus mainly on the C interface but might apply fairly well on other interfaces as |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl-url.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH libcurl 3 "September 10, 2018" "libcurl 7.65.0" "libcurl url interface" .SH NAME libcurl-url \- URL interface overview .SH DESCRIPTION The URL interface provides a set of functions for parsing and generating URLs. .SH INCLUDE You still only include <curl/curl.h> in your code. Note that the URL API was |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/libcurl.3.
︙ | ︙ | |||
15 16 17 18 19 20 21 | .\" * 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. .\" * .\" ************************************************************************** | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .TH libcurl 3 "July 15, 2017" "libcurl 7.65.0" "libcurl overview" .SH NAME libcurl \- client-side URL transfers .SH DESCRIPTION This is a short overview on how to use libcurl in your C programs. There are specific man pages for each function mentioned in here. There are also the \fIlibcurl-easy(3)\fP man page, the \fIlibcurl-multi(3)\fP man page, the |
︙ | ︙ |
jni/curl/docs/libcurl/mksymbolsmanpage.pl became executable.
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_ACTIVESOCKET \- get the active socket .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CERTINFO.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CERTINFO \- get the TLS certificate chain .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONDITION_UNMET \- get info on unmet time conditional .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONNECT_TIME 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONNECT_TIME \- get the time until connect .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONNECT_TIME_T \- get the time until connect .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_CONTENT_TYPE \- get Content-Type .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_COOKIELIST \- get all known cookies .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_EFFECTIVE_URL \- get the last used URL .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_FILETIME \- get the remote time of the retrieved document .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_FILETIME_T \- get the remote time of the retrieved document .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_HEADER_SIZE \- get size of retrieved headers .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_HTTP_VERSION 3 "May 11, 2016" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_HTTP_VERSION \- get the http version used in the connection .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_LASTSOCKET \- get the last socket used .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_LOCAL_IP \- get local IP address of last connection .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_LOCAL_PORT \- get the latest local port number .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_NAMELOOKUP_TIME \- get the name lookup time .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_NUM_CONNECTS \- get number of created connections .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_OS_ERRNO \- get errno number from last connect failure .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PRIMARY_IP \- get IP address of last connection .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PRIMARY_PORT \- get the latest destination port number .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PRIVATE \- get the private pointer .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PROTOCOL \- get the protocol used in the connection .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT, long *result); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_REDIRECT_COUNT \- get the number of redirects .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_REDIRECT_TIME \- get the time for all redirection steps .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_REDIRECT_URL \- get the URL a redirect would go to .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_REQUEST_SIZE \- get size of sent request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_RESPONSE_CODE \- get the last response code .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_RTSP_SESSION_ID \- get RTSP session ID .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SCHEME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T, curl_off_t *dlp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T, curl_off_t *uploadp); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SPEED_DOWNLOAD \- get download speed .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SPEED_DOWNLOAD_T \- get download speed .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T, curl_off_t *speed); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SPEED_UPLOAD \- get upload speed .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SPEED_UPLOAD_T \- get upload speed .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T, curl_off_t *speed); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_TLS_SESSION \- get TLS session info .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_TLS_SSL_PTR 3 "January 29, 2019" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_TOTAL_TIME 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_TOTAL_TIME \- get total time of previous transfer .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2018" "libcurl 7.65.0" "curl_easy_getinfo options" .SH NAME CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t *timep); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size); .SH DESCRIPTION No function since pipelining was removed in 7.62.0. Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently processing a chunked (Transfer-encoding: chunked) request with a current chunk length larger than \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP, that pipeline will not be considered for additional requests, even if it is shorter than \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP. .SH DEFAULT The default value is 0, which means that the penalization is inactive. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size); .SH DESCRIPTION No function since pipelining was removed in 7.62.0. Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently processing a request with a Content-Length larger than this \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP, that pipeline will then not be considered for additional requests, even if it is shorter than \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP. .SH DEFAULT The default value is 0, which means that the size penalization is inactive. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAXCONNECTS \- set size of connection cache .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 05, 2019" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max); .SH DESCRIPTION No function since pipelining was removed in 7.62.0. Pass a long. The set \fBmax\fP number will be used as the maximum amount of outstanding requests in an HTTP/1.1 pipelined connection. This option is only used for HTTP/1.1 pipelining, not for HTTP/2 multiplexing. When this limit is reached, libcurl will use another connection to the same host (see \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP), or queue the request until one of the pipelines to the host is ready to accept a request. Thus, the |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_PIPELINING 3 "April 05, 2019" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask); |
︙ | ︙ | |||
68 69 70 71 72 73 74 | Before that, default was \fBCURLPIPE_NOTHING\fP. .SH PROTOCOLS HTTP(S) .SH EXAMPLE .nf CURLM *m = curl_multi_init(); | | | < | > | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | Before that, default was \fBCURLPIPE_NOTHING\fP. .SH PROTOCOLS HTTP(S) .SH EXAMPLE .nf CURLM *m = curl_multi_init(); /* try HTTP/2 multiplexing */ curl_multi_setopt(m, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX); .fi .SH AVAILABILITY Added in 7.16.0. Multiplex support bit added in 7.43.0. HTTP/1 Pipelining support was disabled in 7.62.0. .SH RETURN VALUE Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. .SH "SEE ALSO" .BR CURLMOPT_MAX_PIPELINE_LENGTH "(3), " .BR CURLMOPT_PIPELINING_SITE_BL "(3), " .BR CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE "(3), " .BR CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE "(3), " .BR CURLMOPT_MAX_HOST_CONNECTIONS "(3), " .BR CURLMOPT_MAXCONNECTS "(3), " .BR CURLMOPT_MAX_HOST_CONNECTIONS "(3), " |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 05, 2019" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers); .SH DESCRIPTION No function since pipelining was removed in 7.62.0. Pass a \fBservers\fP array of char *, ending with a NULL entry. This is a list of server types prefixes (in the Server: HTTP header) that are blacklisted from pipelining, i.e server types that are known to not support HTTP pipelining. The array is copied by libcurl. Note that the comparison matches if the Server: header begins with the string in the blacklist, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_PIPELINING_SITE_BL 3 "April 05, 2019" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist .SH SYNOPSIS #include <curl/curl.h> CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts); .SH DESCRIPTION No function since pipelining was removed in 7.62.0. Pass a \fBhosts\fP array of char *, ending with a NULL entry. This is a list of sites that are blacklisted from pipelining, i.e sites that are known to not support HTTP pipelining. The array is copied by libcurl. Pass a NULL pointer to clear the blacklist. .SH DEFAULT The default value is NULL, which means that there is no blacklist. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PUSHDATA \- pointer to pass to push callback .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_SOCKETFUNCTION 3 "September 23, 2018" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLMOPT_TIMERFUNCTION 3 "May 03, 2019" "libcurl 7.65.0" "curl_multi_setopt options" .SH NAME CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ | |||
51 52 53 54 55 56 57 58 59 60 61 62 63 64 | The \fBtimer_callback\fP will only be called when the timeout expire time is changed. The \fBuserp\fP pointer is set with \fICURLMOPT_TIMERDATA(3)\fP. The timer callback should return 0 on success, and -1 on error. This callback can be used instead of, or in addition to, \fIcurl_multi_timeout(3)\fP. .SH DEFAULT NULL .SH PROTOCOLS All .SH EXAMPLE .nf static gboolean timeout_cb(gpointer user_data) | > > > > > | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | The \fBtimer_callback\fP will only be called when the timeout expire time is changed. The \fBuserp\fP pointer is set with \fICURLMOPT_TIMERDATA(3)\fP. The timer callback should return 0 on success, and -1 on error. This callback can be used instead of, or in addition to, \fIcurl_multi_timeout(3)\fP. \fBWARNING:\fP even if it feels tempting, avoid calling libcurl directly from within the callback itself when the \fBtimeout_ms\fP value is zero, since it risks triggering an unpleasant recursive behavior that immediately calls another call to the callback with a zero timeout... .SH DEFAULT NULL .SH PROTOCOLS All .SH EXAMPLE .nf static gboolean timeout_cb(gpointer user_data) |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET, char *path); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | | | < > < | < < | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ADDRESS_SCOPE 3 "March 07, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope); .SH DESCRIPTION Pass a long specifying the scope id value to use when connecting to IPv6 addresses. .SH DEFAULT 0 .SH PROTOCOLS All, when using IPv6 .SH EXAMPLE .nf CURL *curl = curl_easy_init(); if(curl) { CURLcode ret; long my_scope_id; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); my_scope_id = if_nametoindex("eth0"); curl_easy_setopt(curl, CURLOPT_ADDRESS_SCOPE, my_scope_id); ret = curl_easy_perform(curl); curl_easy_cleanup(curl); } .fi .SH AVAILABILITY Added in 7.19.0 .SH RETURN VALUE Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. Returns CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value. .SH "SEE ALSO" .BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), " |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ALTSVC 3 "April 03, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ALTSVC \- set alt-svc cache file name .SH SYNOPSIS .nf #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ALTSVC, char *filename); .fi .SH EXPERIMENTAL Warning: this feature is early code and is marked as experimental. It can only be enabled by explicitly telling configure with \fB--enable-alt-svc\fP. You are advised to not ship this in production before the experimental label is removed. .SH DESCRIPTION Pass in a pointer to a \fIfilename\fP to instruct libcurl to use that file as the Alt-Svc cache to read existing cache contents from and possibly also write it back to a after a transfer, unless \fBCURLALTSVC_READONLYFILE\fP is set in \fICURLOPT_ALTSVC_CTRL(3)\fP. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ALTSVC_CTRL 3 "April 03, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ALTSVC_CTRL \- control alt-svc behavior .SH SYNOPSIS .nf #include <curl/curl.h> #define CURLALTSVC_IMMEDIATELY (1<<0) #define CURLALTSVC_ALTUSED (1<<1) #define CURLALTSVC_READONLYFILE (1<<2) #define CURLALTSVC_H1 (1<<3) #define CURLALTSVC_H2 (1<<4) #define CURLALTSVC_H3 (1<<5) CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ALTSVC_CTRL, long bitmask); .fi .SH EXPERIMENTAL Warning: this feature is early code and is marked as experimental. It can only be enabled by explicitly telling configure with \fB--enable-alt-svc\fP. You are advised to not ship this in production before the experimental label is removed. .SH DESCRIPTION Populate the long \fIbitmask\fP with the correct set of features to instruct libcurl how to handle Alt-Svc for the transfers using this handle. libcurl will only accept Alt-Svc headers over a secure transport, meaning |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_APPEND.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_APPEND \- enable appending to the remote file .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_AUTOREFERER \- automatically update the referer header .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_BUFFERSIZE \- set preferred receive buffer size .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAINFO.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CAINFO 3 "May 12, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path); |
︙ | ︙ | |||
43 44 45 46 47 48 49 | (libnsspem.so) needs to be available for this option to work properly. Starting with curl-7.55.0, if both \fICURLOPT_CAINFO(3)\fP and \fICURLOPT_CAPATH(3)\fP are unset, NSS-linked libcurl tries to load libnssckbi.so, which contains a more comprehensive set of trust information than supported by nss-pem, because libnssckbi.so also includes information about distrusted certificates. | | | > | | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | (libnsspem.so) needs to be available for this option to work properly. Starting with curl-7.55.0, if both \fICURLOPT_CAINFO(3)\fP and \fICURLOPT_CAPATH(3)\fP are unset, NSS-linked libcurl tries to load libnssckbi.so, which contains a more comprehensive set of trust information than supported by nss-pem, because libnssckbi.so also includes information about distrusted certificates. (iOS and macOS) 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) This option is supported for Schannel in Windows 7 or later but we recommend not using it until Windows 8 since it works better starting then. Added in libcurl 7.60. 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). The application does not have to keep the string around after setting this option. .SH DEFAULT Built-in system specific .SH PROTOCOLS All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAPATH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CAPATH \- specify directory holding CA certificates .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CERTINFO \- request SSL certificate information .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 03, 2019" "libcurl 7.65.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> struct curl_fileinfo { char *filename; curlfiletype filetype; time_t time; /* always zero! */ unsigned int perm; int uid; int gid; curl_off_t size; long int hardlinks; struct { /* If some of these fields is not NULL, it is a pointer to b_data. */ char *time; char *perm; char *user; char *group; char *target; /* pointer to the target filename of a symlink */ } strings; unsigned int flags; /* used internally */ char *b_data; size_t b_size; size_t b_used; }; long chunk_bgn_callback(const void *transfer_info, void *ptr, int remains); CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION, chunk_bgn_callback); .SH DESCRIPTION |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function .SH SYNOPSIS #include <curl/curl.h> int closesocket_callback(void *clientp, curl_socket_t item); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONNECT_ONLY \- stop when connected to target server .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIE \- set contents of HTTP Cookie header .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIEFILE \- file name to read cookies from .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIEJAR \- file name to store cookies to .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIESESSION \- start a new cookie session .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLF.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CRLF \- enable/disable CRLF conversion .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CRLFILE \- specify a Certificate Revocation List file .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CURLU.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CURLU 3 "January 16, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CURLU \- set URL with CURLU * .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_CUSTOMREQUEST \- custom string for request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DEBUGDATA \- custom pointer for debug callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DEBUGFUNCTION \- debug callback .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a scheme name .SH SYNOPSIS #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DIRLISTONLY \- ask for names only in a directory listing .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DISALLOW_USERNAME_IN_URL, long disallow); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_INTERFACE \- set interface to speak DNS over .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_SERVERS \- set preferred DNS servers .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "March 07, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE, long enable); .SH DESCRIPTION Has no function since 7.62.0. Do note use! Pass a long. If the \fIenable\fP value is 1, it tells curl to use a global DNS cache that will survive between easy handle creations and deletions. This is not thread-safe and this will use a global variable. \fBWARNING:\fP this option is considered obsolete. Stop using it. Switch over to using the share interface instead! See \fICURLOPT_SHARE(3)\fP and \fIcurl_share_init(3)\fP. |
︙ | ︙ | |||
50 51 52 53 54 55 56 | /* switch off the use of a global, thread unsafe, cache */ curl_easy_setopt(curl, CURLOPT_DNS_USE_GLOBAL_CACHE, 0L); ret = curl_easy_perform(curl); curl_easy_cleanup(curl); } .fi .SH AVAILABILITY | | | 52 53 54 55 56 57 58 59 60 61 62 63 | /* switch off the use of a global, thread unsafe, cache */ curl_easy_setopt(curl, CURLOPT_DNS_USE_GLOBAL_CACHE, 0L); ret = curl_easy_perform(curl); curl_easy_cleanup(curl); } .fi .SH AVAILABILITY Deprecated since 7.62.0. Has no function. .SH RETURN VALUE Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. .SH "SEE ALSO" .BR CURLOPT_SHARE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), " |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_EGDSOCKET \- set EGD socket path .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ERRORBUFFER \- set error buffer for error messages .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FAILONERROR \- request failure on HTTP response >= 400 .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FILETIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FILETIME \- get the modification time of the remote resource .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FOLLOWLOCATION 3 "May 02, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FORBID_REUSE \- make connection get closed at once after use .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FRESH_CONNECT \- force a new connection to be used .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTPPORT \- make FTP transfer active .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_ACCOUNT \- set account info for FTP .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_USE_PRET \- enable the PRET command .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADER \- pass headers to the data stream .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADERDATA \- pointer to pass to header callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HEADERFUNCTION 3 "November 22, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADERFUNCTION \- callback that receives header data .SH SYNOPSIS #include <curl/curl.h> size_t header_callback(char *buffer, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HEADEROPT 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADEROPT \- set how to send HTTP headers .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTP09_ALLOWED 3 "December 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP09 \- allow HTTP/0.9 response .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPGET \- ask for an HTTP GET request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPHEADER \- set custom HTTP headers .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPPOST \- specify the multipart formpost content .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_HTTP_VERSION 3 "December 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_INFILESIZE \- set size of the input file to send off .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_INTERFACE \- source interface for outgoing traffic .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_IOCTLFUNCTION \- callback for I/O operations .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_IPRESOLVE \- specify which IP protocol version to use .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_ISSUERCERT \- issuer SSL certificate filename .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300 .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEEP_SENDING_ON_ERROR, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_KEYPASSWD \- set passphrase to private key .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_KRBLEVEL \- set FTP kerberos security level .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_LOCALPORT 3 "January 31, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOCALPORT \- set local port number to use for socket .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_LOCALPORTRANGE 3 "January 31, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOCALPORTRANGE \- number of additional local ports to try .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOGIN_OPTIONS \- set login options .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOW_SPEED_TIME \- set low speed limit time period .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAIL_AUTH \- SMTP authentication address .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAIL_FROM \- SMTP sender address .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAIL_RCPT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAIL_RCPT \- list of SMTP mail recipients .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Added jni/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.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 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAXAGE_CONN 3 "April 14, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage); .SH DESCRIPTION Pass a long as parameter containing \fImaxage\fP - the maximum time in seconds that you allow an existing connection to have to be considered for reuse for this request. The "connection cache" that holds previously used connections. When a new request is to be done, it will consider any connection that matches for reuse. The \fICURLOPT_MAXAGE_CONN(3)\fP limit prevents libcurl from trying very old connections for reuse, since old connections have a high risk of not working and thus trying them is a performance loss and sometimes service loss due to the difficulties to figure out the situation. If a connection is found in the cache that is older than this set \fImaxage\fP, it will instead be closed. .SH DEFAULT Default maxage is 118 seconds. .SH PROTOCOLS All .SH EXAMPLE .nf CURL *curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); /* only allow 30 seconds idle time */ curl_easy_setopt(curl, CURLOPT_MAXAGE_CONN, 30L); curl_easy_perform(curl); } .fi .SH AVAILABILITY Added in libcurl 7.65.0 .SH RETURN VALUE Returns CURLE_OK. .SH "SEE ALSO" .BR CURLOPT_TIMEOUT "(3), " CURLOPT_FORBID_REUSE "(3), " .BR CURLOPT_FRESH_CONNECT "(3), " |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXCONNECTS \- maximum connection cache size .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXFILESIZE \- maximum file size allowed to download .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXREDIRS \- maximum number of redirects allowed .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_MIMEPOST \- set post/send data from mime structure .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NETRC \- request that .netrc is used .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NETRC_FILE \- file name to read .netrc info from .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOBODY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOBODY \- do the download request without getting the body .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOPROGRESS \- switch off the progress meter .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOPROXY \- disable proxy use for specific hosts .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOSIGNAL \- skip all signal handling .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PASSWORD \- password to use in authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PATH_AS_IS \- do not handle dot dot sequences .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PINNEDPUBLICKEY 3 "January 29, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PINNEDPUBLICKEY \- set pinned public key .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PORT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PORT \- set remote port number to work with .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_POST 3 "May 21, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_POST \- request an HTTP POST .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTFIELDS \- specify data to POST to server .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTFIELDSIZE \- size of POST data pointed to .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PREQUOTE \- commands to run before an FTP transfer .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PRE_PROXY \- set pre-proxy to use .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRE_PROXY, char *preproxy); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PRIVATE \- store a private pointer .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROGRESSFUNCTION \- callback to progress meter function .SH SYNOPSIS #include <curl/curl.h> int progress_callback(void *clientp, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROTOCOLS \- set allowed protocols .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY \- set proxy to use .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYPASSWORD \- password to use with proxy authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYPORT \- port number the proxy listens on .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYTYPE \- proxy protocol type .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_CAPATH 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_PINNEDPUBLICKEY, char *pinnedpubkey); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY, char *keyfile); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSLVERSION 3 "October 30, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLVERSION, long version); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_CIPHER_LIST, char *list); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSL_OPTIONS 3 "January 29, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 02, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST, long verify); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYPEER, long verify); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_TLS13_CIPHERS 3 "October 10, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3 .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLS13_CIPHERS, char *list); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_PASSWORD, char *pwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_TYPE, char *type); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_USERNAME, char *user); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PUT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_PUT \- make an HTTP PUT request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_QUOTE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_QUOTE \- (S)FTP commands to run before transfer .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RANDOM_FILE \- specify a source for random data .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RANGE 3 "December 21, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RANGE \- set byte range to request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_READDATA \- custom pointer passed to the read callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3.
1 2 3 4 5 6 7 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. .\" * .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell .\" * copies of the Software, and permit persons to whom the Software is .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_READFUNCTION 3 "May 15, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_READFUNCTION \- read callback for data uploads .SH SYNOPSIS #include <curl/curl.h> size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata); |
︙ | ︙ | |||
76 77 78 79 80 81 82 | CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT was added in 7.12.1. .SH RETURN VALUE This will return CURLE_OK. .SH "SEE ALSO" .BR CURLOPT_READDATA "(3), " CURLOPT_WRITEFUNCTION "(3), " .BR CURLOPT_SEEKFUNCTION "(3), " CURLOPT_UPLOAD "(3), " CURLOPT_POST "(3), " | > | 76 77 78 79 80 81 82 83 | CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT was added in 7.12.1. .SH RETURN VALUE This will return CURLE_OK. .SH "SEE ALSO" .BR CURLOPT_READDATA "(3), " CURLOPT_WRITEFUNCTION "(3), " .BR CURLOPT_SEEKFUNCTION "(3), " CURLOPT_UPLOAD "(3), " CURLOPT_POST "(3), " .BR CURLOPT_UPLOAD_BUFFERSIZE "(3), " |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_REDIR_PROTOCOLS 3 "September 21, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REFERER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_REFERER \- set the HTTP referer header .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_REQUEST_TARGET \- specify an alternative target for this request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.65.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.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RESUME_FROM \- set a point to resume transfer from .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RTSP_REQUEST 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_REQUEST \- specify RTSP request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_SESSION_ID \- set RTSP session ID .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RTSP_STREAM_URI 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SASL_IR \- enable sending initial response in first packet .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SEEKDATA 3 "August 12, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SEEKDATA \- custom pointer passed to the seek callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SERVICE_NAME \- authentication service name .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SHARE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SHARE \- specify share handle to use .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_COMPRESSION, long enable); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLCERT \- set SSL client certificate .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLENGINE \- set SSL engine identifier .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLKEYTYPE \- set type of the private key file .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSLVERSION 3 "October 30, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLVERSION \- set preferred TLS/SSL version .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_CTX_DATA 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_CTX_FUNCTION 3 "August 29, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL/CyaSSL or mbedTLS .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_ENABLE_ALPN \- enable ALPN .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_ENABLE_NPN \- enable NPN .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_FALSESTART \- enable TLS false start .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_OPTIONS 3 "January 29, 2019" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_OPTIONS \- set SSL behavior options .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_VERIFYHOST 3 "February 02, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STDERR.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_STDERR \- redirect stderr to another stream .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_STREAM_WEIGHT \- set numerical stream weight .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TELNETOPTIONS \- custom telnet options .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TFTP_BLKSIZE \- TFTP block size .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests. .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMECONDITION \- select condition for a time request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMEOUT \- set maximum time the request is allowed to take .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMEVALUE \- set time value for conditional .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMEVALUE_LARGE \- set time value for conditional .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TLS13_CIPHERS 3 "October 10, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3 .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TRAILERDATA 3 "December 14, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME: CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback .SH SYNOPSIS: #include <curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERDATA, void *userdata); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TRAILERFUNCTION 3 "December 14, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME: CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers .SH SYNOPSIS: #include <curl.h> int curl_trailer_callback(struct curl_slist ** list, void *userdata); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.65.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_UPLOAD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_UPLOAD \- enable data upload .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_BUFFERSIZE, long size); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_URL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_URL \- provide the URL to use in the request .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_USERAGENT \- set HTTP user-agent header .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERNAME.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_USERNAME \- user name to use in authentication .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERPWD.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_USERPWD \- user name and password to use in authentication .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_USE_SSL \- request using SSL / TLS for the transfer .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_VERBOSE \- set verbose mode on/off .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_WRITEDATA \- custom pointer passed to the write callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_WRITEFUNCTION \- set callback for writing received data .SH SYNOPSIS .nf #include <curl/curl.h> |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_XFERINFOFUNCTION \- callback to progress meter function .SH SYNOPSIS #include <curl/curl.h> int progress_callback(void *clientp, |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.65.0" "curl_easy_setopt options" .SH NAME CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token .SH SYNOPSIS #include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token); |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/Makefile.in.
︙ | ︙ | |||
578 579 580 581 582 583 584 585 586 587 588 589 590 591 | CURLOPT_LOCALPORTRANGE.3 \ 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_MAXCONNECTS.3 \ CURLOPT_MAXFILESIZE.3 \ CURLOPT_MAXFILESIZE_LARGE.3 \ CURLOPT_MAXREDIRS.3 \ CURLOPT_MAX_RECV_SPEED_LARGE.3 \ CURLOPT_MAX_SEND_SPEED_LARGE.3 \ CURLOPT_MIMEPOST.3 \ | > | 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 | CURLOPT_LOCALPORTRANGE.3 \ 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_MAXAGE_CONN.3 \ CURLOPT_MAXCONNECTS.3 \ CURLOPT_MAXFILESIZE.3 \ CURLOPT_MAXFILESIZE_LARGE.3 \ CURLOPT_MAXREDIRS.3 \ CURLOPT_MAX_RECV_SPEED_LARGE.3 \ CURLOPT_MAX_SEND_SPEED_LARGE.3 \ CURLOPT_MIMEPOST.3 \ |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/opts/Makefile.inc.
︙ | ︙ | |||
185 186 187 188 189 190 191 192 193 194 195 196 197 198 | CURLOPT_LOCALPORTRANGE.3 \ 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_MAXCONNECTS.3 \ CURLOPT_MAXFILESIZE.3 \ CURLOPT_MAXFILESIZE_LARGE.3 \ CURLOPT_MAXREDIRS.3 \ CURLOPT_MAX_RECV_SPEED_LARGE.3 \ CURLOPT_MAX_SEND_SPEED_LARGE.3 \ CURLOPT_MIMEPOST.3 \ | > | 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | CURLOPT_LOCALPORTRANGE.3 \ 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_MAXAGE_CONN.3 \ CURLOPT_MAXCONNECTS.3 \ CURLOPT_MAXFILESIZE.3 \ CURLOPT_MAXFILESIZE_LARGE.3 \ CURLOPT_MAXREDIRS.3 \ CURLOPT_MAX_RECV_SPEED_LARGE.3 \ CURLOPT_MAX_SEND_SPEED_LARGE.3 \ CURLOPT_MIMEPOST.3 \ |
︙ | ︙ |
Changes to jni/curl/docs/libcurl/symbols-in-versions.
︙ | ︙ | |||
459 460 461 462 463 464 465 466 467 468 469 470 471 472 | CURLOPT_LOCALPORTRANGE 7.15.2 CURLOPT_LOGIN_OPTIONS 7.34.0 CURLOPT_LOW_SPEED_LIMIT 7.1 CURLOPT_LOW_SPEED_TIME 7.1 CURLOPT_MAIL_AUTH 7.25.0 CURLOPT_MAIL_FROM 7.20.0 CURLOPT_MAIL_RCPT 7.20.0 CURLOPT_MAXCONNECTS 7.7 CURLOPT_MAXFILESIZE 7.10.8 CURLOPT_MAXFILESIZE_LARGE 7.11.0 CURLOPT_MAXREDIRS 7.5 CURLOPT_MAX_RECV_SPEED_LARGE 7.15.5 CURLOPT_MAX_SEND_SPEED_LARGE 7.15.5 CURLOPT_MIMEPOST 7.56.0 | > | 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 | CURLOPT_LOCALPORTRANGE 7.15.2 CURLOPT_LOGIN_OPTIONS 7.34.0 CURLOPT_LOW_SPEED_LIMIT 7.1 CURLOPT_LOW_SPEED_TIME 7.1 CURLOPT_MAIL_AUTH 7.25.0 CURLOPT_MAIL_FROM 7.20.0 CURLOPT_MAIL_RCPT 7.20.0 CURLOPT_MAXAGE_CONN 7.65.0 CURLOPT_MAXCONNECTS 7.7 CURLOPT_MAXFILESIZE 7.10.8 CURLOPT_MAXFILESIZE_LARGE 7.11.0 CURLOPT_MAXREDIRS 7.5 CURLOPT_MAX_RECV_SPEED_LARGE 7.15.5 CURLOPT_MAX_SEND_SPEED_LARGE 7.15.5 CURLOPT_MIMEPOST 7.56.0 |
︙ | ︙ | |||
759 760 761 762 763 764 765 766 767 768 769 770 771 772 | CURLUPART_PASSWORD 7.62.0 CURLUPART_PATH 7.62.0 CURLUPART_PORT 7.62.0 CURLUPART_QUERY 7.62.0 CURLUPART_SCHEME 7.62.0 CURLUPART_URL 7.62.0 CURLUPART_USER 7.62.0 CURLUSESSL_ALL 7.17.0 CURLUSESSL_CONTROL 7.17.0 CURLUSESSL_NONE 7.17.0 CURLUSESSL_TRY 7.17.0 CURLU_APPENDQUERY 7.62.0 CURLU_DEFAULT_PORT 7.62.0 CURLU_DEFAULT_SCHEME 7.62.0 | > | 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 | CURLUPART_PASSWORD 7.62.0 CURLUPART_PATH 7.62.0 CURLUPART_PORT 7.62.0 CURLUPART_QUERY 7.62.0 CURLUPART_SCHEME 7.62.0 CURLUPART_URL 7.62.0 CURLUPART_USER 7.62.0 CURLUPART_ZONEID 7.65.0 CURLUSESSL_ALL 7.17.0 CURLUSESSL_CONTROL 7.17.0 CURLUSESSL_NONE 7.17.0 CURLUSESSL_TRY 7.17.0 CURLU_APPENDQUERY 7.62.0 CURLU_DEFAULT_PORT 7.62.0 CURLU_DEFAULT_SCHEME 7.62.0 |
︙ | ︙ |
Changes to jni/curl/include/curl/Makefile.in.
︙ | ︙ | |||
423 424 425 426 427 428 429 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ | | | | 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/curl/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ |
︙ | ︙ |
Changes to jni/curl/include/curl/curl.h.
︙ | ︙ | |||
110 111 112 113 114 115 116 | /* * libcurl external API function linkage decorations. */ #ifdef CURL_STATICLIB # define CURL_EXTERN | | | 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | /* * libcurl external API function linkage decorations. */ #ifdef CURL_STATICLIB # define CURL_EXTERN #elif defined(WIN32) || defined(__SYMBIAN32__) || \ (__has_declspec_attribute(dllexport) && \ __has_declspec_attribute(dllimport)) # if defined(BUILDING_LIBCURL) # define CURL_EXTERN __declspec(dllexport) # else # define CURL_EXTERN __declspec(dllimport) # endif |
︙ | ︙ | |||
286 287 288 289 290 291 292 | /* Content of this structure depends on information which is known and is achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man page for callbacks returning this structure -- some fields are mandatory, some others are optional. The FLAG field has special meaning. */ struct curl_fileinfo { char *filename; curlfiletype filetype; | | | 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 | /* Content of this structure depends on information which is known and is achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man page for callbacks returning this structure -- some fields are mandatory, some others are optional. The FLAG field has special meaning. */ struct curl_fileinfo { char *filename; curlfiletype filetype; time_t time; /* always zero! */ unsigned int perm; int uid; int gid; curl_off_t size; long int hardlinks; struct { |
︙ | ︙ | |||
1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 | CINIT(HTTP09_ALLOWED, LONG, 285), /* alt-svc control bitmask */ CINIT(ALTSVC_CTRL, LONG, 286), /* alt-svc cache file name to possibly read from/write to */ CINIT(ALTSVC, STRINGPOINT, 287), CURLOPT_LASTENTRY /* the last unused */ } CURLoption; #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all the obsolete stuff removed! */ | > > > | 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 | CINIT(HTTP09_ALLOWED, LONG, 285), /* alt-svc control bitmask */ CINIT(ALTSVC_CTRL, LONG, 286), /* alt-svc cache file name to possibly read from/write to */ CINIT(ALTSVC, STRINGPOINT, 287), /* maximum age of a connection to consider it for reuse (in seconds) */ CINIT(MAXAGE_CONN, LONG, 288), CURLOPT_LASTENTRY /* the last unused */ } CURLoption; #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all the obsolete stuff removed! */ |
︙ | ︙ |
Changes to jni/curl/include/curl/curlver.h.
︙ | ︙ | |||
26 27 28 29 30 31 32 | 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 - 2019 Daniel Stenberg, <daniel@haxx.se>." /* This is the version number of the libcurl package from which this header file origins: */ | | | | | | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 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 - 2019 Daniel Stenberg, <daniel@haxx.se>." /* This is the version number of the libcurl package from which this header file origins: */ #define LIBCURL_VERSION "7.65.0" /* The numeric version number is also available "in parts" by using these defines: */ #define LIBCURL_VERSION_MAJOR 7 #define LIBCURL_VERSION_MINOR 65 #define LIBCURL_VERSION_PATCH 0 /* This is the numeric version of the libcurl version number, meant for easier parsing and comparions by programs. The LIBCURL_VERSION_NUM define will always follow this syntax: 0xXXYYZZ Where XX, YY and ZZ are the main version, release and patch numbers in hexadecimal (using 8 bits each). All three numbers are always represented using two digits. 1.2 would appear as "0x010200" while version 9.11.7 appears as "0x090b07". This 6-digit (24 bits) hexadecimal number does not show pre-release number, 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 0x074100 /* * 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 "2019-05-22" #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 /* __CURL_CURLVER_H */ |
Changes to jni/curl/include/curl/typecheck-gcc.h.
︙ | ︙ | |||
109 110 111 112 113 114 115 | if(!_curl_is_ptr((value), CURLSH)) \ _curl_easy_setopt_err_CURLSH(); \ } \ curl_easy_setopt(handle, _curl_opt, value); \ }) /* wraps curl_easy_getinfo() with typechecking */ | < | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | if(!_curl_is_ptr((value), CURLSH)) \ _curl_easy_setopt_err_CURLSH(); \ } \ curl_easy_setopt(handle, _curl_opt, value); \ }) /* wraps curl_easy_getinfo() with typechecking */ #define curl_easy_getinfo(handle, info, arg) \ __extension__ ({ \ __typeof__(info) _curl_info = info; \ if(__builtin_constant_p(_curl_info)) { \ if(_curl_is_string_info(_curl_info)) \ if(!_curl_is_arr((arg), char *)) \ _curl_easy_getinfo_err_string(); \ |
︙ | ︙ | |||
142 143 144 145 146 147 148 | if(_curl_is_off_t_info(_curl_info)) \ if(!_curl_is_arr((arg), curl_off_t)) \ _curl_easy_getinfo_err_curl_off_t(); \ } \ curl_easy_getinfo(handle, _curl_info, arg); \ }) | | | < | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | if(_curl_is_off_t_info(_curl_info)) \ if(!_curl_is_arr((arg), curl_off_t)) \ _curl_easy_getinfo_err_curl_off_t(); \ } \ curl_easy_getinfo(handle, _curl_info, arg); \ }) /* * For now, just make sure that the functions are called with three arguments */ #define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param) #define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param) /* the actual warnings, triggered by calling the _curl_easy_setopt_err* * functions */ |
︙ | ︙ | |||
502 503 504 505 506 507 508 | /* evaluates to true if expr can be passed as POST data (void* or char*) */ #define _curl_is_postfields(expr) \ (_curl_is_ptr((expr), void) || \ _curl_is_arr((expr), char) || \ _curl_is_arr((expr), unsigned char)) | < < < < | 500 501 502 503 504 505 506 507 508 509 510 511 512 513 | /* evaluates to true if expr can be passed as POST data (void* or char*) */ #define _curl_is_postfields(expr) \ (_curl_is_ptr((expr), void) || \ _curl_is_arr((expr), char) || \ _curl_is_arr((expr), unsigned char)) /* helper: __builtin_types_compatible_p distinguishes between functions and * function pointers, hide it */ #define _curl_callback_compatible(func, type) \ (__builtin_types_compatible_p(__typeof__(func), type) || \ __builtin_types_compatible_p(__typeof__(func) *, type)) /* evaluates to true if expr is of type curl_resolver_start_callback */ |
︙ | ︙ |
Changes to jni/curl/include/curl/urlapi.h.
︙ | ︙ | |||
56 57 58 59 60 61 62 | CURLUPART_USER, CURLUPART_PASSWORD, CURLUPART_OPTIONS, CURLUPART_HOST, CURLUPART_PORT, CURLUPART_PATH, CURLUPART_QUERY, | | > | 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | CURLUPART_USER, CURLUPART_PASSWORD, CURLUPART_OPTIONS, CURLUPART_HOST, CURLUPART_PORT, CURLUPART_PATH, CURLUPART_QUERY, CURLUPART_FRAGMENT, CURLUPART_ZONEID /* added in 7.65.0 */ } CURLUPart; #define CURLU_DEFAULT_PORT (1<<0) /* return default port number */ #define CURLU_NO_DEFAULT_PORT (1<<1) /* act as if no port number was set, if the port number matches the default for the scheme */ #define CURLU_DEFAULT_SCHEME (1<<2) /* return default scheme if |
︙ | ︙ |
Changes to jni/curl/lib/Makefile.in.
︙ | ︙ | |||
218 219 220 221 222 223 224 | libcurl_la-idn_win32.lo libcurl_la-http_proxy.lo \ libcurl_la-non-ascii.lo libcurl_la-asyn-ares.lo \ libcurl_la-asyn-thread.lo libcurl_la-curl_gssapi.lo \ libcurl_la-http_ntlm.lo libcurl_la-curl_ntlm_wb.lo \ libcurl_la-curl_ntlm_core.lo libcurl_la-curl_sasl.lo \ libcurl_la-rand.lo libcurl_la-curl_multibyte.lo \ libcurl_la-hostcheck.lo libcurl_la-conncache.lo \ | | | | > | 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 | libcurl_la-idn_win32.lo libcurl_la-http_proxy.lo \ libcurl_la-non-ascii.lo libcurl_la-asyn-ares.lo \ libcurl_la-asyn-thread.lo libcurl_la-curl_gssapi.lo \ libcurl_la-http_ntlm.lo libcurl_la-curl_ntlm_wb.lo \ libcurl_la-curl_ntlm_core.lo libcurl_la-curl_sasl.lo \ libcurl_la-rand.lo libcurl_la-curl_multibyte.lo \ libcurl_la-hostcheck.lo libcurl_la-conncache.lo \ libcurl_la-dotdot.lo libcurl_la-x509asn1.lo \ libcurl_la-http2.lo libcurl_la-smb.lo \ libcurl_la-curl_endian.lo libcurl_la-curl_des.lo \ libcurl_la-system_win32.lo libcurl_la-mime.lo \ libcurl_la-sha256.lo libcurl_la-setopt.lo \ libcurl_la-curl_path.lo libcurl_la-curl_ctype.lo \ libcurl_la-curl_range.lo libcurl_la-psl.lo libcurl_la-doh.lo \ libcurl_la-urlapi.lo libcurl_la-curl_get_line.lo \ libcurl_la-altsvc.lo am__dirstamp = $(am__leading_dot)dirstamp am__objects_2 = vauth/libcurl_la-vauth.lo \ vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \ vauth/libcurl_la-digest.lo vauth/libcurl_la-digest_sspi.lo \ vauth/libcurl_la-krb5_gssapi.lo vauth/libcurl_la-krb5_sspi.lo \ vauth/libcurl_la-ntlm.lo vauth/libcurl_la-ntlm_sspi.lo \ vauth/libcurl_la-oauth2.lo vauth/libcurl_la-spnego_gssapi.lo \ |
︙ | ︙ | |||
299 300 301 302 303 304 305 | libcurlu_la-gopher.lo libcurlu_la-idn_win32.lo \ libcurlu_la-http_proxy.lo libcurlu_la-non-ascii.lo \ libcurlu_la-asyn-ares.lo libcurlu_la-asyn-thread.lo \ libcurlu_la-curl_gssapi.lo libcurlu_la-http_ntlm.lo \ libcurlu_la-curl_ntlm_wb.lo libcurlu_la-curl_ntlm_core.lo \ libcurlu_la-curl_sasl.lo libcurlu_la-rand.lo \ libcurlu_la-curl_multibyte.lo libcurlu_la-hostcheck.lo \ | | | | | | | | | | | 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 | libcurlu_la-gopher.lo libcurlu_la-idn_win32.lo \ libcurlu_la-http_proxy.lo libcurlu_la-non-ascii.lo \ libcurlu_la-asyn-ares.lo libcurlu_la-asyn-thread.lo \ libcurlu_la-curl_gssapi.lo libcurlu_la-http_ntlm.lo \ libcurlu_la-curl_ntlm_wb.lo libcurlu_la-curl_ntlm_core.lo \ libcurlu_la-curl_sasl.lo libcurlu_la-rand.lo \ libcurlu_la-curl_multibyte.lo libcurlu_la-hostcheck.lo \ libcurlu_la-conncache.lo libcurlu_la-dotdot.lo \ libcurlu_la-x509asn1.lo libcurlu_la-http2.lo \ libcurlu_la-smb.lo libcurlu_la-curl_endian.lo \ libcurlu_la-curl_des.lo libcurlu_la-system_win32.lo \ libcurlu_la-mime.lo libcurlu_la-sha256.lo \ libcurlu_la-setopt.lo libcurlu_la-curl_path.lo \ libcurlu_la-curl_ctype.lo libcurlu_la-curl_range.lo \ libcurlu_la-psl.lo libcurlu_la-doh.lo libcurlu_la-urlapi.lo \ libcurlu_la-curl_get_line.lo libcurlu_la-altsvc.lo am__objects_8 = vauth/libcurlu_la-vauth.lo \ vauth/libcurlu_la-cleartext.lo vauth/libcurlu_la-cram.lo \ vauth/libcurlu_la-digest.lo vauth/libcurlu_la-digest_sspi.lo \ vauth/libcurlu_la-krb5_gssapi.lo \ vauth/libcurlu_la-krb5_sspi.lo vauth/libcurlu_la-ntlm.lo \ vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \ vauth/libcurlu_la-spnego_gssapi.lo \ |
︙ | ︙ | |||
360 361 362 363 364 365 366 367 368 369 370 371 372 373 | ./$(DEPDIR)/libcurl_la-content_encoding.Plo \ ./$(DEPDIR)/libcurl_la-cookie.Plo \ ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo \ ./$(DEPDIR)/libcurl_la-curl_ctype.Plo \ ./$(DEPDIR)/libcurl_la-curl_des.Plo \ ./$(DEPDIR)/libcurl_la-curl_endian.Plo \ ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo \ ./$(DEPDIR)/libcurl_la-curl_gethostname.Plo \ ./$(DEPDIR)/libcurl_la-curl_gssapi.Plo \ ./$(DEPDIR)/libcurl_la-curl_memrchr.Plo \ ./$(DEPDIR)/libcurl_la-curl_multibyte.Plo \ ./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo \ ./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo \ ./$(DEPDIR)/libcurl_la-curl_path.Plo \ | > | 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 | ./$(DEPDIR)/libcurl_la-content_encoding.Plo \ ./$(DEPDIR)/libcurl_la-cookie.Plo \ ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo \ ./$(DEPDIR)/libcurl_la-curl_ctype.Plo \ ./$(DEPDIR)/libcurl_la-curl_des.Plo \ ./$(DEPDIR)/libcurl_la-curl_endian.Plo \ ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo \ ./$(DEPDIR)/libcurl_la-curl_get_line.Plo \ ./$(DEPDIR)/libcurl_la-curl_gethostname.Plo \ ./$(DEPDIR)/libcurl_la-curl_gssapi.Plo \ ./$(DEPDIR)/libcurl_la-curl_memrchr.Plo \ ./$(DEPDIR)/libcurl_la-curl_multibyte.Plo \ ./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo \ ./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo \ ./$(DEPDIR)/libcurl_la-curl_path.Plo \ |
︙ | ︙ | |||
418 419 420 421 422 423 424 | ./$(DEPDIR)/libcurl_la-multi.Plo \ ./$(DEPDIR)/libcurl_la-netrc.Plo \ ./$(DEPDIR)/libcurl_la-non-ascii.Plo \ ./$(DEPDIR)/libcurl_la-nonblock.Plo \ ./$(DEPDIR)/libcurl_la-openldap.Plo \ ./$(DEPDIR)/libcurl_la-parsedate.Plo \ ./$(DEPDIR)/libcurl_la-pingpong.Plo \ | < | 420 421 422 423 424 425 426 427 428 429 430 431 432 433 | ./$(DEPDIR)/libcurl_la-multi.Plo \ ./$(DEPDIR)/libcurl_la-netrc.Plo \ ./$(DEPDIR)/libcurl_la-non-ascii.Plo \ ./$(DEPDIR)/libcurl_la-nonblock.Plo \ ./$(DEPDIR)/libcurl_la-openldap.Plo \ ./$(DEPDIR)/libcurl_la-parsedate.Plo \ ./$(DEPDIR)/libcurl_la-pingpong.Plo \ ./$(DEPDIR)/libcurl_la-pop3.Plo \ ./$(DEPDIR)/libcurl_la-progress.Plo \ ./$(DEPDIR)/libcurl_la-psl.Plo ./$(DEPDIR)/libcurl_la-rand.Plo \ ./$(DEPDIR)/libcurl_la-rtsp.Plo \ ./$(DEPDIR)/libcurl_la-security.Plo \ ./$(DEPDIR)/libcurl_la-select.Plo \ ./$(DEPDIR)/libcurl_la-sendf.Plo \ |
︙ | ︙ | |||
468 469 470 471 472 473 474 475 476 477 478 479 480 481 | ./$(DEPDIR)/libcurlu_la-content_encoding.Plo \ ./$(DEPDIR)/libcurlu_la-cookie.Plo \ ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo \ ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo \ ./$(DEPDIR)/libcurlu_la-curl_des.Plo \ ./$(DEPDIR)/libcurlu_la-curl_endian.Plo \ ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo \ ./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo \ ./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo \ ./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo \ ./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo \ ./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo \ ./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo \ ./$(DEPDIR)/libcurlu_la-curl_path.Plo \ | > | 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 | ./$(DEPDIR)/libcurlu_la-content_encoding.Plo \ ./$(DEPDIR)/libcurlu_la-cookie.Plo \ ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo \ ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo \ ./$(DEPDIR)/libcurlu_la-curl_des.Plo \ ./$(DEPDIR)/libcurlu_la-curl_endian.Plo \ ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo \ ./$(DEPDIR)/libcurlu_la-curl_get_line.Plo \ ./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo \ ./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo \ ./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo \ ./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo \ ./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo \ ./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo \ ./$(DEPDIR)/libcurlu_la-curl_path.Plo \ |
︙ | ︙ | |||
528 529 530 531 532 533 534 | ./$(DEPDIR)/libcurlu_la-multi.Plo \ ./$(DEPDIR)/libcurlu_la-netrc.Plo \ ./$(DEPDIR)/libcurlu_la-non-ascii.Plo \ ./$(DEPDIR)/libcurlu_la-nonblock.Plo \ ./$(DEPDIR)/libcurlu_la-openldap.Plo \ ./$(DEPDIR)/libcurlu_la-parsedate.Plo \ ./$(DEPDIR)/libcurlu_la-pingpong.Plo \ | < | 530 531 532 533 534 535 536 537 538 539 540 541 542 543 | ./$(DEPDIR)/libcurlu_la-multi.Plo \ ./$(DEPDIR)/libcurlu_la-netrc.Plo \ ./$(DEPDIR)/libcurlu_la-non-ascii.Plo \ ./$(DEPDIR)/libcurlu_la-nonblock.Plo \ ./$(DEPDIR)/libcurlu_la-openldap.Plo \ ./$(DEPDIR)/libcurlu_la-parsedate.Plo \ ./$(DEPDIR)/libcurlu_la-pingpong.Plo \ ./$(DEPDIR)/libcurlu_la-pop3.Plo \ ./$(DEPDIR)/libcurlu_la-progress.Plo \ ./$(DEPDIR)/libcurlu_la-psl.Plo \ ./$(DEPDIR)/libcurlu_la-rand.Plo \ ./$(DEPDIR)/libcurlu_la-rtsp.Plo \ ./$(DEPDIR)/libcurlu_la-security.Plo \ ./$(DEPDIR)/libcurlu_la-select.Plo \ |
︙ | ︙ | |||
974 975 976 977 978 979 980 | inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \ ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \ curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \ pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \ openldap.c curl_gethostname.c gopher.c idn_win32.c \ http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \ http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \ | | | | | | 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 | inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \ ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \ curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \ pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \ openldap.c curl_gethostname.c gopher.c idn_win32.c \ http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \ http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \ curl_multibyte.c hostcheck.c conncache.c dotdot.c \ x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \ mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c \ doh.c urlapi.c curl_get_line.c altsvc.c LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \ formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \ speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h \ strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h \ wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h \ hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \ http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h \ inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h \ easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h \ socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h \ slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h \ rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h \ curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h \ http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \ curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \ curl_setup_once.h multihandle.h setup-vms.h dotdot.h \ x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \ curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \ curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h \ curl_get_line.h altsvc.h LIB_RCFILES = libcurl.rc CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) # Makefile.inc provides the CSOURCES and HHEADERS defines libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS) |
︙ | ︙ | |||
1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ctype.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_des.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_endian.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gethostname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gssapi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_memrchr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_multibyte.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_path.Plo@am__quote@ # am--include-marker | > | 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ctype.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_des.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_endian.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_get_line.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gethostname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gssapi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_memrchr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_multibyte.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_path.Plo@am__quote@ # am--include-marker |
︙ | ︙ | |||
1316 1317 1318 1319 1320 1321 1322 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-multi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-netrc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-non-ascii.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-nonblock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-openldap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-parsedate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pingpong.Plo@am__quote@ # am--include-marker | < | 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-multi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-netrc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-non-ascii.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-nonblock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-openldap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-parsedate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pingpong.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pop3.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-progress.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-psl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-rand.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-rtsp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-security.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-select.Plo@am__quote@ # am--include-marker |
︙ | ︙ | |||
1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ctype.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_des.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_endian.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_path.Plo@am__quote@ # am--include-marker | > | 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ctype.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_des.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_endian.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_get_line.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_path.Plo@am__quote@ # am--include-marker |
︙ | ︙ | |||
1428 1429 1430 1431 1432 1433 1434 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-multi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-netrc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-non-ascii.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-nonblock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-openldap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-parsedate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pingpong.Plo@am__quote@ # am--include-marker | < | 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-multi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-netrc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-non-ascii.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-nonblock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-openldap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-parsedate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pingpong.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pop3.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-progress.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-psl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-rand.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-rtsp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-security.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-select.Plo@am__quote@ # am--include-marker |
︙ | ︙ | |||
2205 2206 2207 2208 2209 2210 2211 | libcurl_la-conncache.lo: conncache.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurl_la-conncache.Tpo -c -o libcurl_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-conncache.Tpo $(DEPDIR)/libcurl_la-conncache.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='conncache.c' object='libcurl_la-conncache.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c | < < < < < < < | 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 | libcurl_la-conncache.lo: conncache.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurl_la-conncache.Tpo -c -o libcurl_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-conncache.Tpo $(DEPDIR)/libcurl_la-conncache.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='conncache.c' object='libcurl_la-conncache.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c libcurl_la-dotdot.lo: dotdot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-dotdot.lo -MD -MP -MF $(DEPDIR)/libcurl_la-dotdot.Tpo -c -o libcurl_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-dotdot.Tpo $(DEPDIR)/libcurl_la-dotdot.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dotdot.c' object='libcurl_la-dotdot.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c |
︙ | ︙ | |||
2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 | libcurl_la-urlapi.lo: urlapi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-urlapi.lo -MD -MP -MF $(DEPDIR)/libcurl_la-urlapi.Tpo -c -o libcurl_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-urlapi.Tpo $(DEPDIR)/libcurl_la-urlapi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='urlapi.c' object='libcurl_la-urlapi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c libcurl_la-altsvc.lo: altsvc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurl_la-altsvc.Tpo -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-altsvc.Tpo $(DEPDIR)/libcurl_la-altsvc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='altsvc.c' object='libcurl_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c | > > > > > > > | 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 | libcurl_la-urlapi.lo: urlapi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-urlapi.lo -MD -MP -MF $(DEPDIR)/libcurl_la-urlapi.Tpo -c -o libcurl_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-urlapi.Tpo $(DEPDIR)/libcurl_la-urlapi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='urlapi.c' object='libcurl_la-urlapi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c libcurl_la-curl_get_line.lo: curl_get_line.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_get_line.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_get_line.Tpo -c -o libcurl_la-curl_get_line.lo `test -f 'curl_get_line.c' || echo '$(srcdir)/'`curl_get_line.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_get_line.Tpo $(DEPDIR)/libcurl_la-curl_get_line.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='curl_get_line.c' object='libcurl_la-curl_get_line.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_get_line.lo `test -f 'curl_get_line.c' || echo '$(srcdir)/'`curl_get_line.c libcurl_la-altsvc.lo: altsvc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurl_la-altsvc.Tpo -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-altsvc.Tpo $(DEPDIR)/libcurl_la-altsvc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='altsvc.c' object='libcurl_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c |
︙ | ︙ | |||
3164 3165 3166 3167 3168 3169 3170 | libcurlu_la-conncache.lo: conncache.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-conncache.Tpo -c -o libcurlu_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-conncache.Tpo $(DEPDIR)/libcurlu_la-conncache.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='conncache.c' object='libcurlu_la-conncache.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c | < < < < < < < | 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 | libcurlu_la-conncache.lo: conncache.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-conncache.Tpo -c -o libcurlu_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-conncache.Tpo $(DEPDIR)/libcurlu_la-conncache.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='conncache.c' object='libcurlu_la-conncache.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c libcurlu_la-dotdot.lo: dotdot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-dotdot.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-dotdot.Tpo -c -o libcurlu_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-dotdot.Tpo $(DEPDIR)/libcurlu_la-dotdot.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dotdot.c' object='libcurlu_la-dotdot.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c |
︙ | ︙ | |||
3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 | libcurlu_la-urlapi.lo: urlapi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-urlapi.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-urlapi.Tpo -c -o libcurlu_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-urlapi.Tpo $(DEPDIR)/libcurlu_la-urlapi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='urlapi.c' object='libcurlu_la-urlapi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c libcurlu_la-altsvc.lo: altsvc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-altsvc.Tpo -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-altsvc.Tpo $(DEPDIR)/libcurlu_la-altsvc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='altsvc.c' object='libcurlu_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c | > > > > > > > | 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 | libcurlu_la-urlapi.lo: urlapi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-urlapi.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-urlapi.Tpo -c -o libcurlu_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-urlapi.Tpo $(DEPDIR)/libcurlu_la-urlapi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='urlapi.c' object='libcurlu_la-urlapi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-urlapi.lo `test -f 'urlapi.c' || echo '$(srcdir)/'`urlapi.c libcurlu_la-curl_get_line.lo: curl_get_line.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_get_line.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_get_line.Tpo -c -o libcurlu_la-curl_get_line.lo `test -f 'curl_get_line.c' || echo '$(srcdir)/'`curl_get_line.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_get_line.Tpo $(DEPDIR)/libcurlu_la-curl_get_line.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='curl_get_line.c' object='libcurlu_la-curl_get_line.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_get_line.lo `test -f 'curl_get_line.c' || echo '$(srcdir)/'`curl_get_line.c libcurlu_la-altsvc.lo: altsvc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-altsvc.Tpo -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-altsvc.Tpo $(DEPDIR)/libcurlu_la-altsvc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='altsvc.c' object='libcurlu_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c |
︙ | ︙ | |||
3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 | -rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_path.Plo | > | 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 | -rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_get_line.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_path.Plo |
︙ | ︙ | |||
3680 3681 3682 3683 3684 3685 3686 | -rm -f ./$(DEPDIR)/libcurl_la-multi.Plo -rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo | < | 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 | -rm -f ./$(DEPDIR)/libcurl_la-multi.Plo -rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo -rm -f ./$(DEPDIR)/libcurl_la-pop3.Plo -rm -f ./$(DEPDIR)/libcurl_la-progress.Plo -rm -f ./$(DEPDIR)/libcurl_la-psl.Plo -rm -f ./$(DEPDIR)/libcurl_la-rand.Plo -rm -f ./$(DEPDIR)/libcurl_la-rtsp.Plo -rm -f ./$(DEPDIR)/libcurl_la-security.Plo -rm -f ./$(DEPDIR)/libcurl_la-select.Plo |
︙ | ︙ | |||
3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 | -rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_path.Plo | > | 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 | -rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_get_line.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_path.Plo |
︙ | ︙ | |||
3792 3793 3794 3795 3796 3797 3798 | -rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo | < | 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 | -rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo -rm -f ./$(DEPDIR)/libcurlu_la-pop3.Plo -rm -f ./$(DEPDIR)/libcurlu_la-progress.Plo -rm -f ./$(DEPDIR)/libcurlu_la-psl.Plo -rm -f ./$(DEPDIR)/libcurlu_la-rand.Plo -rm -f ./$(DEPDIR)/libcurlu_la-rtsp.Plo -rm -f ./$(DEPDIR)/libcurlu_la-security.Plo -rm -f ./$(DEPDIR)/libcurlu_la-select.Plo |
︙ | ︙ | |||
3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 | -rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_path.Plo | > | 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 | -rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_get_line.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurl_la-curl_path.Plo |
︙ | ︙ | |||
3999 4000 4001 4002 4003 4004 4005 | -rm -f ./$(DEPDIR)/libcurl_la-multi.Plo -rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo | < | 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 | -rm -f ./$(DEPDIR)/libcurl_la-multi.Plo -rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo -rm -f ./$(DEPDIR)/libcurl_la-pop3.Plo -rm -f ./$(DEPDIR)/libcurl_la-progress.Plo -rm -f ./$(DEPDIR)/libcurl_la-psl.Plo -rm -f ./$(DEPDIR)/libcurl_la-rand.Plo -rm -f ./$(DEPDIR)/libcurl_la-rtsp.Plo -rm -f ./$(DEPDIR)/libcurl_la-security.Plo -rm -f ./$(DEPDIR)/libcurl_la-select.Plo |
︙ | ︙ | |||
4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 | -rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_path.Plo | > | 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 | -rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo -rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_get_line.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo -rm -f ./$(DEPDIR)/libcurlu_la-curl_path.Plo |
︙ | ︙ | |||
4111 4112 4113 4114 4115 4116 4117 | -rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo | < | 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 | -rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo -rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo -rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo -rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo -rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo -rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo -rm -f ./$(DEPDIR)/libcurlu_la-pop3.Plo -rm -f ./$(DEPDIR)/libcurlu_la-progress.Plo -rm -f ./$(DEPDIR)/libcurlu_la-psl.Plo -rm -f ./$(DEPDIR)/libcurlu_la-rand.Plo -rm -f ./$(DEPDIR)/libcurlu_la-rtsp.Plo -rm -f ./$(DEPDIR)/libcurlu_la-security.Plo -rm -f ./$(DEPDIR)/libcurlu_la-select.Plo |
︙ | ︙ |
Changes to jni/curl/lib/Makefile.inc.
︙ | ︙ | |||
48 49 50 51 52 53 54 | inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \ ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \ curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \ pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \ openldap.c curl_gethostname.c gopher.c idn_win32.c \ http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \ http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \ | | | | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \ ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \ curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \ pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \ openldap.c curl_gethostname.c gopher.c idn_win32.c \ http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \ http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \ curl_multibyte.c hostcheck.c conncache.c dotdot.c \ x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \ mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c \ doh.c urlapi.c curl_get_line.c altsvc.c LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \ formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \ speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h \ strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h \ wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h \ hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \ http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h \ inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h \ easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h \ socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h \ slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h \ rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h \ curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h \ http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \ curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \ curl_setup_once.h multihandle.h setup-vms.h dotdot.h \ x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \ curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \ curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h \ curl_get_line.h altsvc.h LIB_RCFILES = libcurl.rc CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) |
Changes to jni/curl/lib/altsvc.c.
︙ | ︙ | |||
25 26 27 28 29 30 31 | */ #include "curl_setup.h" #if !defined(CURL_DISABLE_HTTP) && defined(USE_ALTSVC) #include <curl/curl.h> #include "urldata.h" #include "altsvc.h" | | | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | */ #include "curl_setup.h" #if !defined(CURL_DISABLE_HTTP) && defined(USE_ALTSVC) #include <curl/curl.h> #include "urldata.h" #include "altsvc.h" #include "curl_get_line.h" #include "strcase.h" #include "parsedate.h" #include "sendf.h" #include "warnless.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" |
︙ | ︙ | |||
249 250 251 252 253 254 255 | /* set default behavior */ asi->flags = CURLALTSVC_H1 #ifdef USE_NGHTTP2 | CURLALTSVC_H2 #endif #ifdef USE_HTTP3 | < | 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | /* set default behavior */ asi->flags = CURLALTSVC_H1 #ifdef USE_NGHTTP2 | CURLALTSVC_H2 #endif #ifdef USE_HTTP3 | CURLALTSVC_H3 #endif ; return asi; } /* |
︙ | ︙ | |||
345 346 347 348 349 350 351 | p++; protop = p; while(*p && ISALNUM(*p)) p++; len = p - protop; if(!len || (len >= buflen)) | | | 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 | p++; protop = p; while(*p && ISALNUM(*p)) p++; len = p - protop; if(!len || (len >= buflen)) return CURLE_BAD_FUNCTION_ARGUMENT; memcpy(alpnbuf, protop, len); alpnbuf[len] = 0; *ptr = p; return CURLE_OK; } /* altsvc_flush() removes all alternatives for this source origin from the |
︙ | ︙ | |||
421 422 423 424 425 426 427 | DEBUGASSERT(asi); /* Flush all cached alternatives for this source origin, if any */ altsvc_flush(asi, srcalpnid, srchost, srcport); /* "clear" is a magic keyword */ if(strcasecompare(alpnbuf, "clear")) { | < | 420 421 422 423 424 425 426 427 428 429 430 431 432 433 | DEBUGASSERT(asi); /* Flush all cached alternatives for this source origin, if any */ altsvc_flush(asi, srcalpnid, srchost, srcport); /* "clear" is a magic keyword */ if(strcasecompare(alpnbuf, "clear")) { return CURLE_OK; } /* The 'ma' and 'persist' flags are annoyingly meant for all alternatives but are set after the list on the line. Scan for the semicolons and get those fields first! */ semip = p; |
︙ | ︙ | |||
474 475 476 477 478 479 480 | if(*p != ':') { /* host name starts here */ const char *hostp = p; while(*p && (ISALNUM(*p) || (*p == '.') || (*p == '-'))) p++; len = p - hostp; if(!len || (len >= MAX_ALTSVC_HOSTLEN)) | | | 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 | if(*p != ':') { /* host name starts here */ const char *hostp = p; while(*p && (ISALNUM(*p) || (*p == '.') || (*p == '-'))) p++; len = p - hostp; if(!len || (len >= MAX_ALTSVC_HOSTLEN)) return CURLE_BAD_FUNCTION_ARGUMENT; memcpy(namebuf, hostp, len); namebuf[len] = 0; dsthost = namebuf; } else { /* no destination name, use source host */ dsthost = srchost; |
︙ | ︙ | |||
500 501 502 503 504 505 506 | } if(*p++ != '\"') return CURLE_BAD_FUNCTION_ARGUMENT; as = altsvc_createid(srchost, dsthost, srcalpnid, dstalpnid, srcport, dstport); if(as) { | | | | 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 | } if(*p++ != '\"') return CURLE_BAD_FUNCTION_ARGUMENT; as = altsvc_createid(srchost, dsthost, srcalpnid, dstalpnid, srcport, dstport); if(as) { /* The expires time also needs to take the Age: value (if any) into account. [See RFC 7838 section 3.1] */ as->expires = maxage + time(NULL); as->persist = persist; Curl_llist_insert_next(&asi->list, asi->list.tail, as, &as->node); asi->num++; /* one more entry */ infof(data, "Added alt-svc: %s:%d over %s\n", dsthost, dstport, Curl_alpnid2str(dstalpnid)); } |
︙ | ︙ |
Changes to jni/curl/lib/asyn-ares.c.
︙ | ︙ | |||
64 65 66 67 68 69 70 | #include "multiif.h" #include "inet_pton.h" #include "connect.h" #include "select.h" #include "progress.h" # if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \ | | > > > > > > > > > > > > | 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 | #include "multiif.h" #include "inet_pton.h" #include "connect.h" #include "select.h" #include "progress.h" # if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \ (defined(WIN32) || defined(__SYMBIAN32__)) # define CARES_STATICLIB # endif # include <ares.h> # include <ares_version.h> /* really old c-ares didn't include this by itself */ #if ARES_VERSION >= 0x010500 /* c-ares 1.5.0 or later, the callback proto is modified */ #define HAVE_CARES_CALLBACK_TIMEOUTS 1 #endif /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" struct ResolverResults { int num_pending; /* number of ares_gethostbyname() requests */ Curl_addrinfo *temp_ai; /* intermediary result while fetching c-ares parts */ int last_status; struct curltime happy_eyeballs_dns_time; /* when this timer started, or 0 */ }; /* 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 its API, but it is officially documented as 5 seconds. See query_completed_cb() for an explanation of how this is used. */ #define HAPPY_EYEBALLS_DNS_TIMEOUT 5000 /* * Curl_resolver_global_init() - the generic low-level asynchronous name * resolve API. Called from curl_global_init() to initialize global resolver * environment. Initializes ares library. */ int Curl_resolver_global_init(void) |
︙ | ︙ | |||
315 316 317 318 319 320 321 | above, as otherwise the ares name resolve won't timeout! */ ares_process_fd((ares_channel)data->state.resolver, ARES_SOCKET_BAD, ARES_SOCKET_BAD); else { /* move through the descriptors and ask for processing on them */ for(i = 0; i < num; i++) ares_process_fd((ares_channel)data->state.resolver, | | | | 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 | above, as otherwise the ares name resolve won't timeout! */ ares_process_fd((ares_channel)data->state.resolver, ARES_SOCKET_BAD, ARES_SOCKET_BAD); else { /* move through the descriptors and ask for processing on them */ for(i = 0; i < num; i++) ares_process_fd((ares_channel)data->state.resolver, (pfd[i].revents & (POLLRDNORM|POLLIN))? pfd[i].fd:ARES_SOCKET_BAD, (pfd[i].revents & (POLLWRNORM|POLLOUT))? pfd[i].fd:ARES_SOCKET_BAD); } return nfds; } /* * Curl_resolver_is_resolved() is called repeatedly to check if a previous |
︙ | ︙ | |||
342 343 344 345 346 347 348 349 350 351 352 353 354 355 | conn->async.os_specific; CURLcode result = CURLE_OK; if(dns) *dns = NULL; waitperform(conn, 0); if(res && !res->num_pending) { if(dns) { (void)Curl_addrinfo_callback(conn, res->last_status, res->temp_ai); /* temp_ai ownership is moved to the connection, so we need not free-up them */ res->temp_ai = NULL; | > > > > > > > > > > > > > > > > > > > > > > > | 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 | conn->async.os_specific; CURLcode result = CURLE_OK; if(dns) *dns = NULL; waitperform(conn, 0); /* Now that we've checked for any last minute results above, see if there are any responses still pending when the EXPIRE_HAPPY_EYEBALLS_DNS timer expires. */ if(res && res->num_pending /* This is only set to non-zero if the timer was started. */ && (res->happy_eyeballs_dns_time.tv_sec || res->happy_eyeballs_dns_time.tv_usec) && (Curl_timediff(Curl_now(), res->happy_eyeballs_dns_time) >= HAPPY_EYEBALLS_DNS_TIMEOUT)) { /* Remember that the EXPIRE_HAPPY_EYEBALLS_DNS timer is no longer running. */ memset( &res->happy_eyeballs_dns_time, 0, sizeof(res->happy_eyeballs_dns_time)); /* Cancel the raw c-ares request, which will fire query_completed_cb() with ARES_ECANCELLED synchronously for all pending responses. This will leave us with res->num_pending == 0, which is perfect for the next block. */ ares_cancel((ares_channel)data->state.resolver); DEBUGASSERT(res->num_pending == 0); } if(res && !res->num_pending) { if(dns) { (void)Curl_addrinfo_callback(conn, res->last_status, res->temp_ai); /* temp_ai ownership is moved to the connection, so we need not free-up them */ res->temp_ai = NULL; |
︙ | ︙ | |||
451 452 453 454 455 456 457 | /* Operation complete, if the lookup was successful we now have the entry in the cache. */ if(entry) *entry = conn->async.dns; if(result) /* close the connection, since we can't return failure here without | | < < | 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 | /* Operation complete, if the lookup was successful we now have the entry in the cache. */ if(entry) *entry = conn->async.dns; if(result) /* close the connection, since we can't return failure here without cleaning up this connection properly. */ connclose(conn, "c-ares resolve failed"); return result; } /* Connects results to the list */ static void compound_results(struct ResolverResults *res, |
︙ | ︙ | |||
513 514 515 516 517 518 519 520 521 522 523 524 525 526 | if(ai) { compound_results(res, ai); } } /* A successful result overwrites any previous error */ if(res->last_status != ARES_SUCCESS) res->last_status = status; } } /* * Curl_resolver_getaddrinfo() - when using ares * * Returns name information about the given hostname and port number. If | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | if(ai) { compound_results(res, ai); } } /* A successful result overwrites any previous error */ if(res->last_status != ARES_SUCCESS) res->last_status = status; /* If there are responses still pending, we presume they must be the complementary IPv4 or IPv6 lookups that we started in parallel in Curl_resolver_getaddrinfo() (for Happy Eyeballs). If we've got a "definitive" response from one of a set of parallel queries, we need to think about how long we're willing to wait for more responses. */ if(res->num_pending /* Only these c-ares status values count as "definitive" for these purposes. For example, ARES_ENODATA is what we expect when there is no IPv6 entry for a domain name, and that's not a reason to get more aggressive in our timeouts for the other response. Other errors are either a result of bad input (which should affect all parallel requests), local or network conditions, non-definitive server responses, or us cancelling the request. */ && (status == ARES_SUCCESS || status == ARES_ENOTFOUND)) { /* Right now, there can only be up to two parallel queries, so don't bother handling any other cases. */ DEBUGASSERT(res->num_pending == 1); /* It's possible that one of these parallel queries could succeed quickly, but the other could always fail or timeout (when we're talking to a pool of DNS servers that can only successfully resolve IPv4 address, for example). It's also possible that the other request could always just take longer because it needs more time or only the second DNS server can fulfill it successfully. But, to align with the philosophy of Happy Eyeballs, we don't want to wait _too_ long or users will think requests are slow when IPv6 lookups don't actually work (but IPv4 ones do). So, now that we have a usable answer (some IPv4 addresses, some IPv6 addresses, or "no such domain"), we start a timeout for the remaining pending responses. Even though it is typical that this resolved request came back quickly, that needn't be the case. It might be that this completing request didn't get a result from the first DNS server or even the first round of the whole DNS server pool. So it could already be quite some time after we issued the DNS queries in the first place. Without modifying c-ares, we can't know exactly where in its retry cycle we are. We could guess based on how much time has gone by, but it doesn't really matter. Happy Eyeballs tells us that, given usable information in hand, we simply don't want to wait "too much longer" after we get a result. We simply wait an additional amount of time equal to the default c-ares query timeout. That is enough time for a typical parallel response to arrive without being "too long". Even on a network where one of the two types of queries is failing or timing out constantly, this will usually mean we wait a total of the default c-ares timeout (5 seconds) plus the round trip time for the successful request, which seems bearable. The downside is that c-ares might race with us to issue one more retry just before we give up, but it seems better to "waste" that request instead of trying to guess the perfect timeout to prevent it. After all, we don't even know where in the c-ares retry cycle each request is. */ res->happy_eyeballs_dns_time = Curl_now(); Curl_expire( conn->data, HAPPY_EYEBALLS_DNS_TIMEOUT, EXPIRE_HAPPY_EYEBALLS_DNS); } } } /* * Curl_resolver_getaddrinfo() - when using ares * * Returns name information about the given hostname and port number. If |
︙ | ︙ |
Changes to jni/curl/lib/base64.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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. * ***************************************************************************/ /* Base64 encoding/decoding */ #include "curl_setup.h" #if !defined(CURL_DISABLE_HTTP_AUTH) || defined(USE_LIBSSH2) || \ defined(USE_LIBSSH) || !defined(CURL_DISABLE_LDAP) || \ !defined(CURL_DISABLE_DOH) || defined(USE_SSL) #include "urldata.h" /* for the Curl_easy definition */ #include "warnless.h" #include "curl_base64.h" #include "non-ascii.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" |
︙ | ︙ | |||
313 314 315 316 317 318 319 | */ CURLcode Curl_base64url_encode(struct Curl_easy *data, const char *inputbuff, size_t insize, char **outptr, size_t *outlen) { return base64_encode(base64url, data, inputbuff, insize, outptr, outlen); } | > > | 318 319 320 321 322 323 324 325 326 | */ CURLcode Curl_base64url_encode(struct Curl_easy *data, const char *inputbuff, size_t insize, char **outptr, size_t *outlen) { return base64_encode(base64url, data, inputbuff, insize, outptr, outlen); } #endif /* no users so disabled */ |
Changes to jni/curl/lib/config-win32.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_CONFIG_WIN32_H #define HEADER_CURL_CONFIG_WIN32_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_CONFIG_WIN32_H #define HEADER_CURL_CONFIG_WIN32_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
180 181 182 183 184 185 186 187 188 189 190 191 192 193 | #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 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 | > > > | 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | #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 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 |
︙ | ︙ |
Changes to jni/curl/lib/conncache.c.
︙ | ︙ | |||
430 431 432 433 434 435 436 437 438 439 440 441 442 443 | /* data->multi->maxconnects can be negative, deal with it. */ size_t maxconnects = (data->multi->maxconnects < 0) ? data->multi->num_easy * 4: data->multi->maxconnects; struct connectdata *conn_candidate = NULL; conn->data = NULL; /* no owner anymore */ if(maxconnects > 0 && Curl_conncache_size(data) > maxconnects) { infof(data, "Connection cache is full, closing the oldest one.\n"); conn_candidate = Curl_conncache_extract_oldest(data); if(conn_candidate) { /* the winner gets the honour of being disconnected */ | > | 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 | /* data->multi->maxconnects can be negative, deal with it. */ size_t maxconnects = (data->multi->maxconnects < 0) ? data->multi->num_easy * 4: data->multi->maxconnects; struct connectdata *conn_candidate = NULL; conn->data = NULL; /* no owner anymore */ conn->lastused = Curl_now(); /* it was used up until now */ if(maxconnects > 0 && Curl_conncache_size(data) > maxconnects) { infof(data, "Connection cache is full, closing the oldest one.\n"); conn_candidate = Curl_conncache_extract_oldest(data); if(conn_candidate) { /* the winner gets the honour of being disconnected */ |
︙ | ︙ | |||
475 476 477 478 479 480 481 | curr = bundle->conn_list.head; while(curr) { conn = curr->ptr; if(!CONN_INUSE(conn) && !conn->data) { /* Set higher score for the age passed since the connection was used */ | | | 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 | curr = bundle->conn_list.head; while(curr) { conn = curr->ptr; if(!CONN_INUSE(conn) && !conn->data) { /* Set higher score for the age passed since the connection was used */ score = Curl_timediff(now, conn->lastused); if(score > highscore) { highscore = score; conn_candidate = conn; } } curr = curr->next; |
︙ | ︙ | |||
533 534 535 536 537 538 539 | curr = bundle->conn_list.head; while(curr) { conn = curr->ptr; if(!CONN_INUSE(conn) && !conn->data) { /* Set higher score for the age passed since the connection was used */ | | | 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 | curr = bundle->conn_list.head; while(curr) { conn = curr->ptr; if(!CONN_INUSE(conn) && !conn->data) { /* Set higher score for the age passed since the connection was used */ score = Curl_timediff(now, conn->lastused); if(score > highscore) { highscore = score; conn_candidate = conn; bundle_candidate = bundle; } } |
︙ | ︙ |
Changes to jni/curl/lib/conncache.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_CONNCACHE_H #define HEADER_CURL_CONNCACHE_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_CONNCACHE_H #define HEADER_CURL_CONNCACHE_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2015 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se> * * 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
︙ | ︙ | |||
36 37 38 39 40 41 42 | struct curltime last_cleanup; /* handle used for closing cached connections */ struct Curl_easy *closure_handle; }; #define BUNDLE_NO_MULTIUSE -1 #define BUNDLE_UNKNOWN 0 /* initial value */ | < | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | struct curltime last_cleanup; /* handle used for closing cached connections */ struct Curl_easy *closure_handle; }; #define BUNDLE_NO_MULTIUSE -1 #define BUNDLE_UNKNOWN 0 /* initial value */ #define BUNDLE_MULTIPLEX 2 struct connectbundle { int multiuse; /* supports multi-use */ size_t num_connections; /* Number of connections in the bundle */ struct curl_llist conn_list; /* The connectdata members of the bundle */ }; |
︙ | ︙ |
Changes to jni/curl/lib/connect.c.
︙ | ︙ | |||
353 354 355 356 357 358 359 | if(af == AF_INET) conn->ip_version = CURL_IPRESOLVE_V4; #ifdef ENABLE_IPV6 else if(af == AF_INET6) conn->ip_version = CURL_IPRESOLVE_V6; #endif | | | 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 | if(af == AF_INET) conn->ip_version = CURL_IPRESOLVE_V4; #ifdef ENABLE_IPV6 else if(af == AF_INET6) conn->ip_version = CURL_IPRESOLVE_V6; #endif rc = Curl_resolv(conn, dev, 0, FALSE, &h); if(rc == CURLRESOLV_PENDING) (void)Curl_resolver_wait_resolv(conn, &h); conn->ip_version = ipver; if(h) { /* convert the resolved address, sizeof myhost >= INET_ADDRSTRLEN */ Curl_printable_address(h->addr, myhost, sizeof(myhost)); |
︙ | ︙ | |||
624 625 626 627 628 629 630 | long *port); /* retrieves ip address and port from a sockaddr structure. note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */ UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr, long *port) { | < | | | 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 | long *port); /* retrieves ip address and port from a sockaddr structure. note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */ UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr, long *port) { struct sockaddr_in *si = NULL; #ifdef ENABLE_IPV6 struct sockaddr_in6 *si6 = NULL; #endif #if defined(HAVE_SYS_UN_H) && defined(AF_UNIX) struct sockaddr_un *su = NULL; #endif switch(sa->sa_family) { case AF_INET: si = (struct sockaddr_in *)(void *) sa; if(Curl_inet_ntop(sa->sa_family, &si->sin_addr, addr, MAX_IPADR_LEN)) { unsigned short us_port = ntohs(si->sin_port); *port = us_port; return TRUE; } break; #ifdef ENABLE_IPV6 case AF_INET6: si6 = (struct sockaddr_in6 *)(void *) sa; if(Curl_inet_ntop(sa->sa_family, &si6->sin6_addr, addr, MAX_IPADR_LEN)) { unsigned short us_port = ntohs(si6->sin6_port); *port = us_port; return TRUE; } break; #endif #if defined(HAVE_SYS_UN_H) && defined(AF_UNIX) case AF_UNIX: |
︙ | ︙ | |||
675 676 677 678 679 680 681 | return FALSE; } /* retrieves the start/end point information of a socket of an established connection */ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd) { | < < < < < > > > > > > | > | > | > | > > > | 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 | return FALSE; } /* retrieves the start/end point information of a socket of an established connection */ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd) { if(conn->socktype == SOCK_DGRAM) /* there's no connection! */ return; #if defined(HAVE_GETPEERNAME) || defined(HAVE_GETSOCKNAME) if(!conn->bits.reuse && !conn->bits.tcp_fastopen) { struct Curl_easy *data = conn->data; char buffer[STRERROR_LEN]; struct Curl_sockaddr_storage ssrem; struct Curl_sockaddr_storage ssloc; curl_socklen_t len; #ifdef HAVE_GETPEERNAME len = sizeof(struct Curl_sockaddr_storage); if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) { int error = SOCKERRNO; failf(data, "getpeername() failed with errno %d: %s", error, Curl_strerror(error, buffer, sizeof(buffer))); return; } #endif #ifdef HAVE_GETSOCKNAME len = sizeof(struct Curl_sockaddr_storage); memset(&ssloc, 0, sizeof(ssloc)); if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) { int error = SOCKERRNO; failf(data, "getsockname() failed with errno %d: %s", error, Curl_strerror(error, buffer, sizeof(buffer))); return; } #endif #ifdef HAVE_GETPEERNAME if(!getaddressinfo((struct sockaddr*)&ssrem, conn->primary_ip, &conn->primary_port)) { failf(data, "ssrem inet_ntop() failed with errno %d: %s", errno, Curl_strerror(errno, buffer, sizeof(buffer))); return; } memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN); #endif #ifdef HAVE_GETSOCKNAME if(!getaddressinfo((struct sockaddr*)&ssloc, conn->local_ip, &conn->local_port)) { failf(data, "ssloc inet_ntop() failed with errno %d: %s", errno, Curl_strerror(errno, buffer, sizeof(buffer))); return; } #endif } #else /* !HAVE_GETSOCKNAME && !HAVE_GETPEERNAME */ (void)sockfd; /* unused */ #endif /* persist connection info in session handle */ Curl_persistconninfo(conn); } /* * Curl_is_connected() checks if the socket has connected. |
︙ | ︙ | |||
1024 1025 1026 1027 1028 1029 1030 | ipaddress, &port)) { /* malformed address or bug in inet_ntop, try next address */ failf(data, "sa_addr inet_ntop() failed with errno %d: %s", errno, Curl_strerror(errno, buffer, sizeof(buffer))); Curl_closesocket(conn, sockfd); return CURLE_OK; } | | | 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 | ipaddress, &port)) { /* malformed address or bug in inet_ntop, try next address */ failf(data, "sa_addr inet_ntop() failed with errno %d: %s", errno, Curl_strerror(errno, buffer, sizeof(buffer))); Curl_closesocket(conn, sockfd); return CURLE_OK; } infof(data, " Trying %s:%ld...\n", ipaddress, port); #ifdef ENABLE_IPV6 is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) && addr.socktype == SOCK_STREAM; #else is_tcp = (addr.family == AF_INET) && addr.socktype == SOCK_STREAM; #endif |
︙ | ︙ |
Changes to jni/curl/lib/cookie.c.
︙ | ︙ | |||
89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #include "psl.h" #include "strtok.h" #include "sendf.h" #include "slist.h" #include "share.h" #include "strtoofft.h" #include "strcase.h" #include "curl_memrchr.h" #include "inet_pton.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" | > | 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #include "psl.h" #include "strtok.h" #include "sendf.h" #include "slist.h" #include "share.h" #include "strtoofft.h" #include "strcase.h" #include "curl_get_line.h" #include "curl_memrchr.h" #include "inet_pton.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" |
︙ | ︙ | |||
869 870 871 872 873 874 875 | if(curlx_strtoofft(ptr, NULL, 10, &co->expires)) badcookie = TRUE; break; case 5: co->name = strdup(ptr); if(!co->name) badcookie = TRUE; | > | | | | | > | 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 | if(curlx_strtoofft(ptr, NULL, 10, &co->expires)) badcookie = TRUE; break; case 5: co->name = strdup(ptr); if(!co->name) badcookie = TRUE; else { /* For Netscape file format cookies we check prefix on the name */ if(strncasecompare("__Secure-", co->name, 9)) co->prefix |= COOKIE_PREFIX__SECURE; else if(strncasecompare("__Host-", co->name, 7)) co->prefix |= COOKIE_PREFIX__HOST; } break; case 6: co->value = strdup(ptr); if(!co->value) badcookie = TRUE; break; } |
︙ | ︙ | |||
1081 1082 1083 1084 1085 1086 1087 | c->cookies[myhash] = co; c->numcookies++; /* one more cookie in the jar */ } return co; } | < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 | c->cookies[myhash] = co; c->numcookies++; /* one more cookie in the jar */ } return co; } /***************************************************************************** * * Curl_cookie_init() * * Inits a cookie struct to read data from a local file. This is always * called before any cookies are set. File may be NULL. |
︙ | ︙ | |||
1529 1530 1531 1532 1533 1534 1535 | * The function returns non-zero on write failure. */ static int cookie_output(struct CookieInfo *c, const char *dumphere) { struct Cookie *co; FILE *out; bool use_stdout = FALSE; | < < < < | 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 | * The function returns non-zero on write failure. */ static int cookie_output(struct CookieInfo *c, const char *dumphere) { struct Cookie *co; FILE *out; bool use_stdout = FALSE; if(!c) /* no cookie engine alive */ return 0; /* at first, remove expired cookies */ remove_expired(c); |
︙ | ︙ | |||
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 | fputs("# Netscape HTTP Cookie File\n" "# https://curl.haxx.se/docs/http-cookies.html\n" "# This file was generated by libcurl! Edit at your own risk.\n\n", out); if(c->numcookies) { array = malloc(sizeof(struct Cookie *) * c->numcookies); if(!array) { if(!use_stdout) fclose(out); return 1; } j = 0; for(i = 0; i < COOKIE_HASH_SIZE; i++) { for(co = c->cookies[i]; co; co = co->next) { if(!co->domain) continue; array[j++] = co; } } qsort(array, c->numcookies, sizeof(struct Cookie *), cookie_sort_ct); for(i = 0; i < j; i++) { | > > > > | | 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 | fputs("# Netscape HTTP Cookie File\n" "# https://curl.haxx.se/docs/http-cookies.html\n" "# This file was generated by libcurl! Edit at your own risk.\n\n", out); if(c->numcookies) { unsigned int i; unsigned int j; struct Cookie **array; array = malloc(sizeof(struct Cookie *) * c->numcookies); if(!array) { if(!use_stdout) fclose(out); return 1; } j = 0; for(i = 0; i < COOKIE_HASH_SIZE; i++) { for(co = c->cookies[i]; co; co = co->next) { if(!co->domain) continue; array[j++] = co; } } qsort(array, c->numcookies, sizeof(struct Cookie *), cookie_sort_ct); for(i = 0; i < j; i++) { char *format_ptr = get_netscape_format(array[i]); if(format_ptr == NULL) { fprintf(out, "#\n# Fatal libcurl error\n"); free(array); if(!use_stdout) fclose(out); return 1; } |
︙ | ︙ |
Changes to jni/curl/lib/cookie.h.
︙ | ︙ | |||
97 98 99 100 101 102 103 | bool secure); struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *, const char *, bool); void Curl_cookie_freelist(struct Cookie *cookies); void Curl_cookie_clearall(struct CookieInfo *cookies); void Curl_cookie_clearsess(struct CookieInfo *cookies); | < | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | bool secure); struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *, const char *, bool); void Curl_cookie_freelist(struct Cookie *cookies); void Curl_cookie_clearall(struct CookieInfo *cookies); void Curl_cookie_clearsess(struct CookieInfo *cookies); #if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES) #define Curl_cookie_list(x) NULL #define Curl_cookie_loadfiles(x) Curl_nop_stmt #define Curl_cookie_init(x,y,z,w) NULL #define Curl_cookie_cleanup(x) Curl_nop_stmt #define Curl_flush_cookies(x,y) Curl_nop_stmt |
︙ | ︙ |
Changes to jni/curl/lib/curl_config.h.cmake.
︙ | ︙ | |||
230 231 232 233 234 235 236 237 238 239 240 241 242 243 | #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 `getpwuid' function. */ #cmakedefine HAVE_GETPWUID 1 /* Define to 1 if you have the `getpwuid_r' function. */ #cmakedefine HAVE_GETPWUID_R 1 | > > > > > > | 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 | #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 `getpwuid' function. */ #cmakedefine HAVE_GETPWUID 1 /* Define to 1 if you have the `getpwuid_r' function. */ #cmakedefine HAVE_GETPWUID_R 1 |
︙ | ︙ | |||
926 927 928 929 930 931 932 | /* if GnuTLS is enabled */ #cmakedefine USE_GNUTLS 1 /* if PolarSSL is enabled */ #cmakedefine USE_POLARSSL 1 | | | | 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 | /* if GnuTLS is enabled */ #cmakedefine USE_GNUTLS 1 /* if PolarSSL is enabled */ #cmakedefine USE_POLARSSL 1 /* if Secure Transport is enabled */ #cmakedefine USE_SECTRANSP 1 /* if mbedTLS is enabled */ #cmakedefine USE_MBEDTLS 1 /* if libSSH2 is in use */ #cmakedefine USE_LIBSSH2 1 |
︙ | ︙ |
Changes to jni/curl/lib/curl_config.h.in.
︙ | ︙ | |||
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 | #undef HAVE_GETHOSTNAME /* Define to 1 if you have a working getifaddrs function. */ #undef HAVE_GETIFADDRS /* Define to 1 if you have the `getpass_r' function. */ #undef HAVE_GETPASS_R /* Define to 1 if you have the `getppid' function. */ #undef HAVE_GETPPID /* Define to 1 if you have the `getpwuid' function. */ #undef HAVE_GETPWUID /* Define to 1 if you have the `getpwuid_r' function. */ #undef HAVE_GETPWUID_R /* Define to 1 if you have the `getrlimit' function. */ #undef HAVE_GETRLIMIT /* Define to 1 if you have the getservbyport_r function. */ #undef HAVE_GETSERVBYPORT_R /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have a working glibc-style strerror_r function. */ #undef HAVE_GLIBC_STRERROR_R | > > > > > > | 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 | #undef HAVE_GETHOSTNAME /* Define to 1 if you have a working getifaddrs function. */ #undef HAVE_GETIFADDRS /* Define to 1 if you have the `getpass_r' function. */ #undef HAVE_GETPASS_R /* Define to 1 if you have the getpeername function. */ #undef HAVE_GETPEERNAME /* Define to 1 if you have the `getppid' function. */ #undef HAVE_GETPPID /* Define to 1 if you have the `getpwuid' function. */ #undef HAVE_GETPWUID /* Define to 1 if you have the `getpwuid_r' function. */ #undef HAVE_GETPWUID_R /* Define to 1 if you have the `getrlimit' function. */ #undef HAVE_GETRLIMIT /* Define to 1 if you have the getservbyport_r function. */ #undef HAVE_GETSERVBYPORT_R /* Define to 1 if you have the getsockname function. */ #undef HAVE_GETSOCKNAME /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have a working glibc-style strerror_r function. */ #undef HAVE_GLIBC_STRERROR_R |
︙ | ︙ |
Changes to jni/curl/lib/curl_fnmatch.c.
︙ | ︙ | |||
28 29 30 31 32 33 34 | #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" #ifndef HAVE_FNMATCH | < < < < < < < < < | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" #ifndef HAVE_FNMATCH #define CURLFNM_CHARSET_LEN (sizeof(char) * 256) #define CURLFNM_CHSET_SIZE (CURLFNM_CHARSET_LEN + 15) #define CURLFNM_NEGATE CURLFNM_CHARSET_LEN #define CURLFNM_ALNUM (CURLFNM_CHARSET_LEN + 1) #define CURLFNM_DIGIT (CURLFNM_CHARSET_LEN + 2) |
︙ | ︙ |
Added jni/curl/lib/curl_get_line.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 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #include "curl_get_line.h" #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" /* * get_line() makes sure to only return complete whole lines that fit in 'len' * bytes and end with a newline. */ char *Curl_get_line(char *buf, int len, FILE *input) { bool partial = FALSE; while(1) { char *b = fgets(buf, len, input); if(b) { size_t rlen = strlen(b); if(rlen && (b[rlen-1] == '\n')) { if(partial) { partial = FALSE; continue; } return b; } /* read a partial, discard the next piece that ends with newline */ partial = TRUE; } else break; } return NULL; } |
Added jni/curl/lib/curl_get_line.h.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #ifndef HEADER_CURL_GET_LINE_H #define HEADER_CURL_GET_LINE_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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. * ***************************************************************************/ /* get_line() makes sure to only return complete whole lines that fit in 'len' * bytes and end with a newline. */ char *Curl_get_line(char *buf, int len, FILE *input); #endif /* HEADER_CURL_GET_LINE_H */ |
Changes to jni/curl/lib/curl_md4.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_MD4_H #define HEADER_CURL_MD4_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #ifndef HEADER_CURL_MD4_H #define HEADER_CURL_MD4_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if defined(USE_NSS) || defined(USE_OS400CRYPTO) || \ (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \ (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len); #endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) || (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */ #endif /* HEADER_CURL_MD4_H */ |
Changes to jni/curl/lib/curl_md5.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_MD5_H #define HEADER_CURL_MD5_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_MD5_H #define HEADER_CURL_MD5_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
49 50 51 52 53 54 55 | extern const MD5_params Curl_DIGEST_MD5[1]; extern const HMAC_params Curl_HMAC_MD5[1]; void Curl_md5it(unsigned char *output, const unsigned char *input); MD5_context * Curl_MD5_init(const MD5_params *md5params); | | | | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | extern const MD5_params Curl_DIGEST_MD5[1]; extern const HMAC_params Curl_HMAC_MD5[1]; void Curl_md5it(unsigned char *output, const unsigned char *input); MD5_context * Curl_MD5_init(const MD5_params *md5params); CURLcode Curl_MD5_update(MD5_context *context, const unsigned char *data, unsigned int len); CURLcode Curl_MD5_final(MD5_context *context, unsigned char *result); #endif #endif /* HEADER_CURL_MD5_H */ |
Changes to jni/curl/lib/curl_memory.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_MEMORY_H #define HEADER_CURL_MEMORY_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_MEMORY_H #define HEADER_CURL_MEMORY_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
35 36 37 38 39 40 41 | * There is nearly no exception to above rule. All libcurl source * files in 'lib' subdirectory as well as those living deep inside * 'packages' subdirectories and linked together in order to build * libcurl library shall follow it. * * File lib/strdup.c is an exception, given that it provides a strdup * clone implementation while using malloc. Extra care needed inside | | | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | * There is nearly no exception to above rule. All libcurl source * files in 'lib' subdirectory as well as those living deep inside * 'packages' subdirectories and linked together in order to build * libcurl library shall follow it. * * File lib/strdup.c is an exception, given that it provides a strdup * clone implementation while using malloc. Extra care needed inside * this one. * * The need for curl_memory.h inclusion is due to libcurl's feature * of allowing library user to provide memory replacement functions, * memory callbacks, at runtime with curl_global_init_mem() * * Any *.c source file used to build libcurl library that does not * include curl_memory.h and uses any memory function of the five |
︙ | ︙ |
Changes to jni/curl/lib/curl_ntlm_core.c.
︙ | ︙ | |||
53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO) #ifdef USE_OPENSSL # include <openssl/des.h> # ifndef OPENSSL_NO_MD4 # include <openssl/md4.h> # endif # include <openssl/md5.h> # include <openssl/ssl.h> # include <openssl/rand.h> # if (OPENSSL_VERSION_NUMBER < 0x00907001L) # define DES_key_schedule des_key_schedule # define DES_cblock des_cblock | > > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO) #ifdef USE_OPENSSL # include <openssl/des.h> # ifndef OPENSSL_NO_MD4 # include <openssl/md4.h> # else # include "curl_md4.h" # endif # include <openssl/md5.h> # include <openssl/ssl.h> # include <openssl/rand.h> # if (OPENSSL_VERSION_NUMBER < 0x00907001L) # define DES_key_schedule des_key_schedule # define DES_cblock des_cblock |
︙ | ︙ | |||
564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 | result = Curl_convert_to_network(data, (char *)pw, len * 2); if(result) return result; { /* Create NT hashed password. */ #ifdef USE_OPENSSL MD4_CTX MD4pw; MD4_Init(&MD4pw); MD4_Update(&MD4pw, pw, 2 * len); MD4_Final(ntbuffer, &MD4pw); #elif defined(USE_GNUTLS_NETTLE) struct md4_ctx MD4pw; md4_init(&MD4pw); md4_update(&MD4pw, (unsigned int)(2 * len), pw); md4_digest(&MD4pw, MD4_DIGEST_SIZE, ntbuffer); #elif defined(USE_GNUTLS) gcry_md_hd_t MD4pw; | > > > > | 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 | result = Curl_convert_to_network(data, (char *)pw, len * 2); if(result) return result; { /* Create NT hashed password. */ #ifdef USE_OPENSSL #if !defined(OPENSSL_NO_MD4) MD4_CTX MD4pw; MD4_Init(&MD4pw); MD4_Update(&MD4pw, pw, 2 * len); MD4_Final(ntbuffer, &MD4pw); #else Curl_md4it(ntbuffer, pw, 2 * len); #endif #elif defined(USE_GNUTLS_NETTLE) struct md4_ctx MD4pw; md4_init(&MD4pw); md4_update(&MD4pw, (unsigned int)(2 * len), pw); md4_digest(&MD4pw, MD4_DIGEST_SIZE, ntbuffer); #elif defined(USE_GNUTLS) gcry_md_hd_t MD4pw; |
︙ | ︙ |
Changes to jni/curl/lib/curl_ntlm_core.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_NTLM_CORE_H #define HEADER_CURL_NTLM_CORE_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_NTLM_CORE_H #define HEADER_CURL_NTLM_CORE_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is |
︙ | ︙ | |||
39 40 41 42 43 44 45 | #ifdef USE_OPENSSL # include <openssl/ssl.h> #endif /* Define USE_NTRESPONSES in order to make the type-3 message include * the NT response message. */ | < < | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #ifdef USE_OPENSSL # include <openssl/ssl.h> #endif /* Define USE_NTRESPONSES in order to make the type-3 message include * the NT response message. */ #define USE_NTRESPONSES /* Define USE_NTLM2SESSION in order to make the type-3 message include the NTLM2Session response message, requires USE_NTRESPONSES defined to 1 and a Crypto engine that we have curl_ssl_md5sum() for. */ #if defined(USE_NTRESPONSES) && !defined(USE_WIN32_CRYPTO) #define USE_NTLM2SESSION #endif |
︙ | ︙ |
Changes to jni/curl/lib/curl_ntlm_wb.c.
︙ | ︙ | |||
49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include "select.h" #include "vauth/ntlm.h" #include "curl_ntlm_core.h" #include "curl_ntlm_wb.h" #include "url.h" #include "strerror.h" #include "strdup.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" #if DEBUG_ME # define DEBUG_OUT(x) x | > > | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include "select.h" #include "vauth/ntlm.h" #include "curl_ntlm_core.h" #include "curl_ntlm_wb.h" #include "url.h" #include "strerror.h" #include "strdup.h" #include "strcase.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" #if DEBUG_ME # define DEBUG_OUT(x) x |
︙ | ︙ | |||
70 71 72 73 74 75 76 | # define sclose_nolog(x) closesocket((x)) #elif defined(HAVE_CLOSESOCKET_CAMEL) # define sclose_nolog(x) CloseSocket((x)) #else # define sclose_nolog(x) close((x)) #endif | | | 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | # define sclose_nolog(x) closesocket((x)) #elif defined(HAVE_CLOSESOCKET_CAMEL) # define sclose_nolog(x) CloseSocket((x)) #else # define sclose_nolog(x) close((x)) #endif void Curl_http_auth_cleanup_ntlm_wb(struct connectdata *conn) { if(conn->ntlm_auth_hlpr_socket != CURL_SOCKET_BAD) { sclose(conn->ntlm_auth_hlpr_socket); conn->ntlm_auth_hlpr_socket = CURL_SOCKET_BAD; } if(conn->ntlm_auth_hlpr_pid) { |
︙ | ︙ | |||
328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 | if(!conn->response_header) return CURLE_OUT_OF_MEMORY; return CURLE_OK; done: free(buf); return CURLE_REMOTE_ACCESS_DENIED; } /* * This is for creating ntlm header output by delegating challenge/response * to Samba's winbind daemon helper ntlm_auth. */ CURLcode Curl_output_ntlm_wb(struct connectdata *conn, bool proxy) { /* point to the address of the pointer that holds the string to send to the server, which is for a plain host or for a HTTP proxy */ char **allocuserpwd; /* point to the name and password for this */ const char *userp; | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > < | | | | | > | | | > > > > | < | 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 | if(!conn->response_header) return CURLE_OUT_OF_MEMORY; return CURLE_OK; done: free(buf); return CURLE_REMOTE_ACCESS_DENIED; } CURLcode Curl_input_ntlm_wb(struct connectdata *conn, bool proxy, const char *header) { curlntlm *state = proxy ? &conn->proxy_ntlm_state : &conn->http_ntlm_state; if(!checkprefix("NTLM", header)) return CURLE_BAD_CONTENT_ENCODING; header += strlen("NTLM"); while(*header && ISSPACE(*header)) header++; if(*header) { conn->challenge_header = strdup(header); if(!conn->challenge_header) return CURLE_OUT_OF_MEMORY; *state = NTLMSTATE_TYPE2; /* We got a type-2 message */ } else { if(*state == NTLMSTATE_LAST) { infof(conn->data, "NTLM auth restarted\n"); Curl_http_auth_cleanup_ntlm_wb(conn); } else if(*state == NTLMSTATE_TYPE3) { infof(conn->data, "NTLM handshake rejected\n"); Curl_http_auth_cleanup_ntlm_wb(conn); *state = NTLMSTATE_NONE; return CURLE_REMOTE_ACCESS_DENIED; } else if(*state >= NTLMSTATE_TYPE1) { infof(conn->data, "NTLM handshake failure (internal error)\n"); return CURLE_REMOTE_ACCESS_DENIED; } *state = NTLMSTATE_TYPE1; /* We should send away a type-1 */ } return CURLE_OK; } /* * This is for creating ntlm header output by delegating challenge/response * to Samba's winbind daemon helper ntlm_auth. */ CURLcode Curl_output_ntlm_wb(struct connectdata *conn, bool proxy) { /* point to the address of the pointer that holds the string to send to the server, which is for a plain host or for a HTTP proxy */ char **allocuserpwd; /* point to the name and password for this */ const char *userp; curlntlm *state; struct auth *authp; CURLcode res = CURLE_OK; char *input; DEBUGASSERT(conn); DEBUGASSERT(conn->data); if(proxy) { allocuserpwd = &conn->allocptr.proxyuserpwd; userp = conn->http_proxy.user; state = &conn->proxy_ntlm_state; authp = &conn->data->state.authproxy; } else { allocuserpwd = &conn->allocptr.userpwd; userp = conn->user; state = &conn->http_ntlm_state; authp = &conn->data->state.authhost; } authp->done = FALSE; /* not set means empty */ if(!userp) userp = ""; switch(*state) { case NTLMSTATE_TYPE1: default: /* Use Samba's 'winbind' daemon to support NTLM authentication, * by delegating the NTLM challenge/response protocol to a helper * in ntlm_auth. * http://devel.squid-cache.org/ntlm/squid_helper_protocol.html * https://www.samba.org/samba/docs/man/manpages-3/winbindd.8.html * https://www.samba.org/samba/docs/man/manpages-3/ntlm_auth.1.html * Preprocessor symbol 'NTLM_WB_ENABLED' is defined when this * feature is enabled and 'NTLM_WB_FILE' symbol holds absolute * filename of ntlm_auth helper. * If NTLM authentication using winbind fails, go back to original * request handling process. */ /* Create communication with ntlm_auth */ res = ntlm_wb_init(conn, userp); if(res) return res; res = ntlm_wb_response(conn, "YR\n", *state); if(res) return res; free(*allocuserpwd); *allocuserpwd = aprintf("%sAuthorization: %s\r\n", proxy ? "Proxy-" : "", conn->response_header); DEBUG_OUT(fprintf(stderr, "**** Header %s\n ", *allocuserpwd)); free(conn->response_header); if(!*allocuserpwd) return CURLE_OUT_OF_MEMORY; conn->response_header = NULL; break; case NTLMSTATE_TYPE2: input = aprintf("TT %s\n", conn->challenge_header); if(!input) return CURLE_OUT_OF_MEMORY; res = ntlm_wb_response(conn, input, *state); free(input); input = NULL; if(res) return res; free(*allocuserpwd); *allocuserpwd = aprintf("%sAuthorization: %s\r\n", proxy ? "Proxy-" : "", conn->response_header); DEBUG_OUT(fprintf(stderr, "**** %s\n ", *allocuserpwd)); *state = NTLMSTATE_TYPE3; /* we sent a type-3 */ authp->done = TRUE; Curl_http_auth_cleanup_ntlm_wb(conn); if(!*allocuserpwd) return CURLE_OUT_OF_MEMORY; break; case NTLMSTATE_TYPE3: /* connection is already authenticated, * don't send a header in future requests */ *state = NTLMSTATE_LAST; /* FALLTHROUGH */ case NTLMSTATE_LAST: Curl_safefree(*allocuserpwd); authp->done = TRUE; break; } return CURLE_OK; } #endif /* !CURL_DISABLE_HTTP && USE_NTLM && NTLM_WB_ENABLED */ |
Changes to jni/curl/lib/curl_ntlm_wb.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_NTLM_WB_H #define HEADER_CURL_NTLM_WB_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > > > | < | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #ifndef HEADER_CURL_NTLM_WB_H #define HEADER_CURL_NTLM_WB_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \ defined(NTLM_WB_ENABLED) /* this is for ntlm header input */ CURLcode Curl_input_ntlm_wb(struct connectdata *conn, bool proxy, const char *header); /* this is for creating ntlm header output */ CURLcode Curl_output_ntlm_wb(struct connectdata *conn, bool proxy); void Curl_http_auth_cleanup_ntlm_wb(struct connectdata *conn); #endif /* !CURL_DISABLE_HTTP && USE_NTLM && NTLM_WB_ENABLED */ #endif /* HEADER_CURL_NTLM_WB_H */ |
Changes to jni/curl/lib/curl_path.c.
︙ | ︙ | |||
18 19 20 21 22 23 24 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if defined(USE_SSH) #include <curl/curl.h> #include "curl_memory.h" #include "curl_path.h" #include "escape.h" #include "memdebug.h" |
︙ | ︙ |
Changes to jni/curl/lib/curl_sasl.c.
︙ | ︙ | |||
27 28 29 30 31 32 33 34 35 36 37 38 39 40 | * RFC7628 A Set of SASL Mechanisms for OAuth * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" #include <curl/curl.h> #include "urldata.h" #include "curl_base64.h" #include "curl_md5.h" #include "vauth/vauth.h" #include "vtls/vtls.h" | > > > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | * RFC7628 A Set of SASL Mechanisms for OAuth * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" #if !defined(CURL_DISABLE_IMAP) || !defined(CURL_DISABLE_SMTP) || \ !defined(CURL_DISABLE_POP3) #include <curl/curl.h> #include "urldata.h" #include "curl_base64.h" #include "curl_md5.h" #include "vauth/vauth.h" #include "vtls/vtls.h" |
︙ | ︙ | |||
79 80 81 82 83 84 85 | * authused [in] - The authentication mechanism used. */ void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused) { #if defined(USE_KERBEROS5) /* Cleanup the gssapi structure */ if(authused == SASL_MECH_GSSAPI) { | | | | 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | * authused [in] - The authentication mechanism used. */ void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused) { #if defined(USE_KERBEROS5) /* Cleanup the gssapi structure */ if(authused == SASL_MECH_GSSAPI) { Curl_auth_cleanup_gssapi(&conn->krb5); } #endif #if defined(USE_NTLM) /* Cleanup the NTLM structure */ if(authused == SASL_MECH_NTLM) { Curl_auth_cleanup_ntlm(&conn->ntlm); } #endif #if !defined(USE_KERBEROS5) && !defined(USE_NTLM) /* Reserved for future use */ (void)conn; (void)authused; |
︙ | ︙ | |||
286 287 288 289 290 291 292 | result = Curl_auth_create_external_message(data, conn->user, &resp, &len); } else if(conn->bits.user_passwd) { #if defined(USE_KERBEROS5) if((enabledmechs & SASL_MECH_GSSAPI) && Curl_auth_is_gssapi_supported() && Curl_auth_user_contains_domain(conn->user)) { | | | 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 | result = Curl_auth_create_external_message(data, conn->user, &resp, &len); } else if(conn->bits.user_passwd) { #if defined(USE_KERBEROS5) if((enabledmechs & SASL_MECH_GSSAPI) && Curl_auth_is_gssapi_supported() && Curl_auth_user_contains_domain(conn->user)) { sasl->mutual_auth = FALSE; mech = SASL_MECH_STRING_GSSAPI; state1 = SASL_GSSAPI; state2 = SASL_GSSAPI_TOKEN; sasl->authused = SASL_MECH_GSSAPI; if(force_ir || data->set.sasl_ir) result = Curl_auth_create_gssapi_user_message(data, conn->user, |
︙ | ︙ | |||
353 354 355 356 357 358 359 | } else if((enabledmechs & SASL_MECH_XOAUTH2) && conn->oauth_bearer) { mech = SASL_MECH_STRING_XOAUTH2; state1 = SASL_OAUTH2; sasl->authused = SASL_MECH_XOAUTH2; if(force_ir || data->set.sasl_ir) | | < | | | | | 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 | } else if((enabledmechs & SASL_MECH_XOAUTH2) && conn->oauth_bearer) { mech = SASL_MECH_STRING_XOAUTH2; state1 = SASL_OAUTH2; sasl->authused = SASL_MECH_XOAUTH2; if(force_ir || data->set.sasl_ir) result = Curl_auth_create_xoauth_bearer_message(data, conn->user, conn->oauth_bearer, &resp, &len); } else if(enabledmechs & SASL_MECH_PLAIN) { mech = SASL_MECH_STRING_PLAIN; state1 = SASL_PLAIN; sasl->authused = SASL_MECH_PLAIN; if(force_ir || data->set.sasl_ir) result = Curl_auth_create_plain_message(data, NULL, conn->user, conn->passwd, &resp, &len); } else if(enabledmechs & SASL_MECH_LOGIN) { mech = SASL_MECH_STRING_LOGIN; state1 = SASL_LOGIN; state2 = SASL_LOGIN_PASSWD; sasl->authused = SASL_MECH_LOGIN; |
︙ | ︙ | |||
447 448 449 450 451 452 453 | } switch(sasl->state) { case SASL_STOP: *progress = SASL_DONE; return result; case SASL_PLAIN: | | | < | 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 | } switch(sasl->state) { case SASL_STOP: *progress = SASL_DONE; return result; case SASL_PLAIN: result = Curl_auth_create_plain_message(data, NULL, conn->user, conn->passwd, &resp, &len); break; case SASL_LOGIN: result = Curl_auth_create_login_message(data, conn->user, &resp, &len); newstate = SASL_LOGIN_PASSWD; break; case SASL_LOGIN_PASSWD: result = Curl_auth_create_login_message(data, conn->passwd, &resp, &len); |
︙ | ︙ | |||
558 559 560 561 562 563 564 | conn->oauth_bearer, &resp, &len); /* Failures maybe sent by the server as continuations for OAUTHBEARER */ newstate = SASL_OAUTH2_RESP; } else | | < | | | 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 | conn->oauth_bearer, &resp, &len); /* Failures maybe sent by the server as continuations for OAUTHBEARER */ newstate = SASL_OAUTH2_RESP; } else result = Curl_auth_create_xoauth_bearer_message(data, conn->user, conn->oauth_bearer, &resp, &len); break; case SASL_OAUTH2_RESP: /* The continuation is optional so check the response code */ if(code == sasl->params->finalcode) { /* Final response was received so we are done */ *progress = SASL_DONE; |
︙ | ︙ | |||
622 623 624 625 626 627 628 | free(resp); state(sasl, conn, newstate); return result; } | > | 622 623 624 625 626 627 628 629 | free(resp); state(sasl, conn, newstate); return result; } #endif /* protocols are enabled that use SASL */ |
Changes to jni/curl/lib/curl_setup.h.
︙ | ︙ | |||
681 682 683 684 685 686 687 688 689 690 691 692 693 694 | #endif #endif #ifdef CURL_WANTS_CA_BUNDLE_ENV #error "No longer supported. Set CURLOPT_CAINFO at runtime instead." #endif /* * Provide a mechanism to silence picky compilers, such as gcc 4.6+. * Parameters should of course normally not be unused, but for example when * we have multiple implementations of the same interface it may happen. */ | > > > > | 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 | #endif #endif #ifdef CURL_WANTS_CA_BUNDLE_ENV #error "No longer supported. Set CURLOPT_CAINFO at runtime instead." #endif #if defined(USE_LIBSSH2) || defined(USE_LIBSSH) || defined(USE_WOLFSSH) #define USE_SSH #endif /* * Provide a mechanism to silence picky compilers, such as gcc 4.6+. * Parameters should of course normally not be unused, but for example when * we have multiple implementations of the same interface it may happen. */ |
︙ | ︙ |
Changes to jni/curl/lib/doh.c.
︙ | ︙ | |||
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. * ***************************************************************************/ #include "curl_setup.h" #include "urldata.h" #include "curl_addrinfo.h" #include "doh.h" #include "sendf.h" #include "multiif.h" #include "url.h" | > > | 18 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. * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_DOH #include "urldata.h" #include "curl_addrinfo.h" #include "doh.h" #include "sendf.h" #include "multiif.h" #include "url.h" |
︙ | ︙ | |||
578 579 580 581 582 583 584 | DNStype dnstype, struct dohentry *d) { unsigned char rcode; unsigned short qdcount; unsigned short ancount; unsigned short type = 0; | < | 580 581 582 583 584 585 586 587 588 589 590 591 592 593 | DNStype dnstype, struct dohentry *d) { unsigned char rcode; unsigned short qdcount; unsigned short ancount; unsigned short type = 0; unsigned short rdlength; unsigned short nscount; unsigned short arcount; unsigned int index = 12; DOHcode rc; if(dohlen < 12) |
︙ | ︙ | |||
606 607 608 609 610 611 612 613 614 615 616 617 618 619 | return DOH_DNS_OUT_OF_RANGE; index += 4; /* skip question's type and class */ qdcount--; } ancount = get16bit(doh, 6); while(ancount) { unsigned int ttl; rc = skipqname(doh, dohlen, &index); if(rc) return rc; /* bad qname */ if(dohlen < (index + 2)) | > | 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 | return DOH_DNS_OUT_OF_RANGE; index += 4; /* skip question's type and class */ qdcount--; } ancount = get16bit(doh, 6); while(ancount) { unsigned short class; unsigned int ttl; rc = skipqname(doh, dohlen, &index); if(rc) return rc; /* bad qname */ if(dohlen < (index + 2)) |
︙ | ︙ | |||
890 891 892 893 894 895 896 | return conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY: CURLE_COULDNT_RESOLVE_HOST; } else if(!data->req.doh.pending) { DOHcode rc; DOHcode rc2; struct dohentry de; | < < | 892 893 894 895 896 897 898 899 900 901 902 903 904 905 | return conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY: CURLE_COULDNT_RESOLVE_HOST; } else if(!data->req.doh.pending) { DOHcode rc; DOHcode rc2; struct dohentry de; /* remove DOH handles from multi handle and close them */ curl_multi_remove_handle(data->multi, data->req.doh.probe[0].easy); Curl_close(data->req.doh.probe[0].easy); curl_multi_remove_handle(data->multi, data->req.doh.probe[1].easy); Curl_close(data->req.doh.probe[1].easy); /* parse the responses, create the struct and return it! */ |
︙ | ︙ | |||
921 922 923 924 925 926 927 928 929 930 931 932 933 934 | free(data->req.doh.probe[1].serverdoh.memory); if(rc2) { infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc2), type2name(data->req.doh.probe[1].dnstype), data->req.doh.host); } if(!rc || !rc2) { infof(data, "DOH Host name: %s\n", data->req.doh.host); showdoh(data, &de); ai = doh2ai(&de, data->req.doh.host, data->req.doh.port); if(!ai) { de_cleanup(&de); return CURLE_OUT_OF_MEMORY; | > > > | 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 | free(data->req.doh.probe[1].serverdoh.memory); if(rc2) { infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc2), type2name(data->req.doh.probe[1].dnstype), data->req.doh.host); } if(!rc || !rc2) { struct Curl_dns_entry *dns; struct Curl_addrinfo *ai; infof(data, "DOH Host name: %s\n", data->req.doh.host); showdoh(data, &de); ai = doh2ai(&de, data->req.doh.host, data->req.doh.port); if(!ai) { de_cleanup(&de); return CURLE_OUT_OF_MEMORY; |
︙ | ︙ | |||
956 957 958 959 960 961 962 | de_cleanup(&de); return CURLE_COULDNT_RESOLVE_HOST; } return CURLE_OK; } | > > | 959 960 961 962 963 964 965 966 967 | de_cleanup(&de); return CURLE_COULDNT_RESOLVE_HOST; } return CURLE_OK; } #endif /* CURL_DISABLE_DOH */ |
Changes to jni/curl/lib/doh.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_DOH_H #define HEADER_CURL_DOH_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #ifndef HEADER_CURL_DOH_H #define HEADER_CURL_DOH_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2018 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "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. */ Curl_addrinfo *Curl_doh(struct connectdata *conn, |
︙ | ︙ | |||
98 99 100 101 102 103 104 105 | size_t *olen); /* output length */ DOHcode doh_decode(unsigned char *doh, size_t dohlen, DNStype dnstype, struct dohentry *d); void de_cleanup(struct dohentry *d); #endif #endif /* HEADER_CURL_DOH_H */ | > > > > > > | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | size_t *olen); /* output length */ DOHcode doh_decode(unsigned char *doh, size_t dohlen, DNStype dnstype, struct dohentry *d); void de_cleanup(struct dohentry *d); #endif #else /* if DOH is disabled */ #define Curl_doh(a,b,c,d) NULL #define Curl_doh_is_resolved(x,y) CURLE_COULDNT_RESOLVE_HOST #endif #endif /* HEADER_CURL_DOH_H */ |
Changes to jni/curl/lib/easy.c.
︙ | ︙ | |||
261 262 263 264 265 266 267 | { if(!initialized) return; if(--initialized) return; | < | 261 262 263 264 265 266 267 268 269 270 271 272 273 274 | { if(!initialized) return; if(--initialized) return; Curl_ssl_cleanup(); Curl_resolver_global_cleanup(); #ifdef WIN32 Curl_win32_cleanup(init_flags); #endif |
︙ | ︙ | |||
424 425 426 427 428 429 430 | infof(easy, "socket cb: socket %d REMOVED\n", s); } else { /* The socket 's' is already being monitored, update the activity mask. Convert from libcurl bitmask to the poll one. */ m->socket.events = socketcb2poll(what); infof(easy, "socket cb: socket %d UPDATED as %s%s\n", s, | | | | 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 | infof(easy, "socket cb: socket %d REMOVED\n", s); } else { /* The socket 's' is already being monitored, update the activity mask. Convert from libcurl bitmask to the poll one. */ m->socket.events = socketcb2poll(what); infof(easy, "socket cb: socket %d UPDATED as %s%s\n", s, (what&CURL_POLL_IN)?"IN":"", (what&CURL_POLL_OUT)?"OUT":""); } break; } prev = m; m = m->next; /* move to next node */ } if(!m) { |
︙ | ︙ | |||
448 449 450 451 452 453 454 | if(m) { m->next = ev->list; m->socket.fd = s; m->socket.events = socketcb2poll(what); m->socket.revents = 0; ev->list = m; infof(easy, "socket cb: socket %d ADDED as %s%s\n", s, | | | | 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 | if(m) { m->next = ev->list; m->socket.fd = s; m->socket.events = socketcb2poll(what); m->socket.revents = 0; ev->list = m; infof(easy, "socket cb: socket %d ADDED as %s%s\n", s, (what&CURL_POLL_IN)?"IN":"", (what&CURL_POLL_OUT)?"OUT":""); } else return CURLE_OUT_OF_MEMORY; } } return 0; |
︙ | ︙ | |||
556 557 558 559 560 561 562 | } } } else return CURLE_RECV_ERROR; if(mcode) | | | 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 | } } } else return CURLE_RECV_ERROR; if(mcode) return CURLE_URL_MALFORMAT; /* we don't really care about the "msgs_in_queue" value returned in the second argument */ msg = curl_multi_info_read(multi, &pollrc); if(msg) { result = msg->data.result; done = TRUE; |
︙ | ︙ | |||
958 959 960 961 962 963 964 | data->progress.flags |= PGRS_HIDE; data->state.current_speed = -1; /* init to negative == impossible */ /* zero out authentication data: */ memset(&data->state.authhost, 0, sizeof(struct auth)); memset(&data->state.authproxy, 0, sizeof(struct auth)); | | > > > | 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 | data->progress.flags |= PGRS_HIDE; data->state.current_speed = -1; /* init to negative == impossible */ /* zero out authentication data: */ memset(&data->state.authhost, 0, sizeof(struct auth)); memset(&data->state.authproxy, 0, sizeof(struct auth)); #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH) Curl_http_auth_cleanup_digest(data); #endif } /* * curl_easy_pause() allows an application to pause or unpause a specific * transfer and direction. This function sets the full new state for the * current connection this easy handle operates on. * |
︙ | ︙ |
Changes to jni/curl/lib/fileinfo.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2010 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_FTP #include "strdup.h" #include "fileinfo.h" #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" struct fileinfo *Curl_fileinfo_alloc(void) { return calloc(1, sizeof(struct fileinfo)); } void Curl_fileinfo_cleanup(struct fileinfo *finfo) { if(!finfo) return; Curl_safefree(finfo->info.b_data); free(finfo); } #endif |
Changes to jni/curl/lib/formdata.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #include <curl/curl.h> #include "formdata.h" #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME) #if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME) #include <libgen.h> #endif #include "urldata.h" /* for struct Curl_easy */ #include "mime.h" #include "non-ascii.h" #include "vtls/vtls.h" #include "strcase.h" #include "sendf.h" #include "strdup.h" #include "rand.h" |
︙ | ︙ | |||
565 566 567 568 569 570 571 | ) { return_value = CURL_FORMADD_INCOMPLETE; break; } if(((form->flags & HTTPPOST_FILENAME) || (form->flags & HTTPPOST_BUFFER)) && !form->contenttype) { | | | 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 | ) { return_value = CURL_FORMADD_INCOMPLETE; break; } if(((form->flags & HTTPPOST_FILENAME) || (form->flags & HTTPPOST_BUFFER)) && !form->contenttype) { char *f = (form->flags & HTTPPOST_BUFFER)? form->showfilename : form->value; char const *type; type = Curl_mime_contenttype(f); if(!type) type = prevtype; if(!type) type = FILE_CONTENTTYPE_DEFAULT; |
︙ | ︙ | |||
917 918 919 920 921 922 923 | if(result) Curl_mime_cleanpart(finalform); return result; } | | > | 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 | if(result) Curl_mime_cleanpart(finalform); return result; } #else /* if disabled */ CURLFORMcode curl_formadd(struct curl_httppost **httppost, struct curl_httppost **last_post, ...) { (void)httppost; (void)last_post; return CURL_FORMADD_DISABLED; |
︙ | ︙ | |||
942 943 944 945 946 947 948 | void curl_formfree(struct curl_httppost *form) { (void)form; /* does nothing HTTP is disabled */ } | | < | 943 944 945 946 947 948 949 950 | void curl_formfree(struct curl_httppost *form) { (void)form; /* does nothing HTTP is disabled */ } #endif /* if disabled */ |
Changes to jni/curl/lib/formdata.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_FORMDATA_H #define HEADER_CURL_FORMDATA_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #ifndef HEADER_CURL_FORMDATA_H #define HEADER_CURL_FORMDATA_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_MIME /* used by FormAdd for temporary storage */ typedef struct FormInfo { char *name; bool name_alloc; size_t namelength; char *value; bool value_alloc; |
︙ | ︙ | |||
43 44 45 46 47 48 49 50 51 | struct FormInfo *more; } FormInfo; CURLcode Curl_getformdata(struct Curl_easy *data, curl_mimepart *, struct curl_httppost *post, curl_read_callback fread_func); #endif /* HEADER_CURL_FORMDATA_H */ | > > > > > | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | struct FormInfo *more; } FormInfo; CURLcode Curl_getformdata(struct Curl_easy *data, curl_mimepart *, struct curl_httppost *post, curl_read_callback fread_func); #else /* disabled */ #define Curl_getformdata(a,b,c,d) CURLE_NOT_BUILT_IN #endif #endif /* HEADER_CURL_FORMDATA_H */ |
Changes to jni/curl/lib/ftp.c.
︙ | ︙ | |||
568 569 570 571 572 573 574 | CURLcode result = CURLE_OK; int code; result = Curl_pp_readresp(sockfd, pp, &code, size); #if defined(HAVE_GSSAPI) /* handle the security-oriented responses 6xx ***/ | < | 568 569 570 571 572 573 574 575 576 577 578 579 580 581 | CURLcode result = CURLE_OK; int code; result = Curl_pp_readresp(sockfd, pp, &code, size); #if defined(HAVE_GSSAPI) /* handle the security-oriented responses 6xx ***/ switch(code) { case 631: code = Curl_sec_read_msg(conn, buf, PROT_SAFE); break; case 632: code = Curl_sec_read_msg(conn, buf, PROT_PRIVATE); break; |
︙ | ︙ | |||
1076 1077 1078 1079 1080 1081 1082 | break; } host = hbuf; /* use this host name */ possibly_non_local = FALSE; /* we know it is local now */ } /* resolv ip/host to ip */ | | | 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 | break; } host = hbuf; /* use this host name */ possibly_non_local = FALSE; /* we know it is local now */ } /* resolv ip/host to ip */ rc = Curl_resolv(conn, host, 0, FALSE, &h); if(rc == CURLRESOLV_PENDING) (void)Curl_resolver_wait_resolv(conn, &h); if(h) { res = h->addr; /* when we return from this function, we can forget about this entry to we can unlock it now already */ Curl_resolv_unlock(data, h); |
︙ | ︙ | |||
1930 1931 1932 1933 1934 1935 1936 | /* * This connection uses a proxy and we need to connect to the proxy again * here. We don't want to rely on a former host lookup that might've * expired now, instead we remake the lookup here and now! */ const char * const host_name = conn->bits.socksproxy ? conn->socks_proxy.host.name : conn->http_proxy.host.name; | | | | 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 | /* * This connection uses a proxy and we need to connect to the proxy again * here. We don't want to rely on a former host lookup that might've * expired now, instead we remake the lookup here and now! */ const char * const host_name = conn->bits.socksproxy ? conn->socks_proxy.host.name : conn->http_proxy.host.name; rc = Curl_resolv(conn, host_name, (int)conn->port, FALSE, &addr); if(rc == CURLRESOLV_PENDING) /* BLOCKING, ignores the return code but 'addr' will be NULL in case of failure */ (void)Curl_resolver_wait_resolv(conn, &addr); connectport = (unsigned short)conn->port; /* we connect to the proxy's port */ if(!addr) { failf(data, "Can't resolve proxy host %s:%hu", host_name, connectport); return CURLE_COULDNT_RESOLVE_PROXY; } } else { /* normal, direct, ftp connection */ rc = Curl_resolv(conn, ftpc->newhost, ftpc->newport, FALSE, &addr); if(rc == CURLRESOLV_PENDING) /* BLOCKING */ (void)Curl_resolver_wait_resolv(conn, &addr); connectport = ftpc->newport; /* we connect to the remote port */ if(!addr) { |
︙ | ︙ | |||
3486 3487 3488 3489 3490 3491 3492 | /* the ftp struct is inited in ftp_connect() */ struct FTP *ftp = data->req.protop; /* if the second connection isn't done yet, wait for it */ if(!conn->bits.tcpconnect[SECONDARYSOCKET]) { if(Curl_connect_ongoing(conn)) { /* As we're in TUNNEL_CONNECT state now, we know the proxy name and port | | | 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 | /* the ftp struct is inited in ftp_connect() */ struct FTP *ftp = data->req.protop; /* if the second connection isn't done yet, wait for it */ if(!conn->bits.tcpconnect[SECONDARYSOCKET]) { if(Curl_connect_ongoing(conn)) { /* As we're in TUNNEL_CONNECT state now, we know the proxy name and port aren't used so we blank their arguments. */ result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, NULL, 0); return result; } result = Curl_is_connected(conn, SECONDARYSOCKET, &connected); |
︙ | ︙ |
Changes to jni/curl/lib/ftplistparser.c.
︙ | ︙ | |||
910 911 912 913 914 915 916 | } break; } break; case PL_WINNT_DIRORSIZE: switch(parser->state.NT.sub.dirorsize) { case PL_WINNT_DIRORSIZE_PRESPACE: | | < < < | 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 | } break; } break; case PL_WINNT_DIRORSIZE: switch(parser->state.NT.sub.dirorsize) { case PL_WINNT_DIRORSIZE_PRESPACE: if(c != ' ') { parser->item_offset = finfo->b_used - 1; parser->item_length = 1; parser->state.NT.sub.dirorsize = PL_WINNT_DIRORSIZE_CONTENT; } break; case PL_WINNT_DIRORSIZE_CONTENT: parser->item_length ++; |
︙ | ︙ |
Changes to jni/curl/lib/hostcheck.c.
︙ | ︙ | |||
123 124 125 126 127 128 129 | strncasecompare(pattern_wildcard + 1, hostname_label_end - suffixlen, suffixlen) ? CURL_HOST_MATCH : CURL_HOST_NOMATCH; } int Curl_cert_hostcheck(const char *match_pattern, const char *hostname) { | < < | | | 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | strncasecompare(pattern_wildcard + 1, hostname_label_end - suffixlen, suffixlen) ? CURL_HOST_MATCH : CURL_HOST_NOMATCH; } int Curl_cert_hostcheck(const char *match_pattern, const char *hostname) { int res = 0; if(!match_pattern || !*match_pattern || !hostname || !*hostname) /* sanity check */ ; else { char *matchp = strdup(match_pattern); if(matchp) { char *hostp = strdup(hostname); if(hostp) { if(hostmatch(hostp, matchp) == CURL_HOST_MATCH) res = 1; free(hostp); } free(matchp); } |
︙ | ︙ |
Changes to jni/curl/lib/hostip.c.
︙ | ︙ | |||
110 111 112 113 114 115 116 | * asyn-ares.c - functions for ares-using name resolves * asyn-thread.c - functions for threaded name resolves * The hostip.h is the united header file for all this. It defines the * CURLRES_* defines based on the config*.h and curl_setup.h defines. */ | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | * asyn-ares.c - functions for ares-using name resolves * asyn-thread.c - functions for threaded name resolves * The hostip.h is the united header file for all this. It defines the * CURLRES_* defines based on the config*.h and curl_setup.h defines. */ static void freednsentry(void *freethis); /* * Return # of addresses in a Curl_addrinfo struct */ int Curl_num_addresses(const Curl_addrinfo *addr) { int i = 0; while(addr) { |
︙ | ︙ | |||
364 365 366 367 368 369 370 371 372 | if(data->share) Curl_share_unlock(data, CURL_LOCK_DATA_DNS); return dns; } UNITTEST CURLcode Curl_shuffle_addr(struct Curl_easy *data, Curl_addrinfo **addr); | > < | 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | if(data->share) Curl_share_unlock(data, CURL_LOCK_DATA_DNS); return dns; } #ifndef CURL_DISABLE_SHUFFLE_DNS UNITTEST CURLcode Curl_shuffle_addr(struct Curl_easy *data, Curl_addrinfo **addr); /* * Curl_shuffle_addr() shuffles the order of addresses in a 'Curl_addrinfo' * struct by re-linking its linked list. * * The addr argument should be the address of a pointer to the head node of a * `Curl_addrinfo` list and it will be modified to point to the new head after * shuffling. |
︙ | ︙ | |||
431 432 433 434 435 436 437 438 439 440 441 442 443 444 | free(nodes); } else result = CURLE_OUT_OF_MEMORY; } return result; } /* * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache. * * When calling Curl_resolv() has resulted in a response with a returned * address, we call this function to store the information in the dns * cache etc | > | 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 | free(nodes); } else result = CURLE_OUT_OF_MEMORY; } return result; } #endif /* * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache. * * When calling Curl_resolv() has resulted in a response with a returned * address, we call this function to store the information in the dns * cache etc |
︙ | ︙ | |||
452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 | int port) { char entry_id[MAX_HOSTCACHE_LEN]; size_t entry_len; struct Curl_dns_entry *dns; struct Curl_dns_entry *dns2; /* shuffle addresses if requested */ if(data->set.dns_shuffle_addresses) { CURLcode result = Curl_shuffle_addr(data, &addr); if(result) return NULL; } /* Create a new cache entry */ dns = calloc(1, sizeof(struct Curl_dns_entry)); if(!dns) { return NULL; } | > > | 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 | int port) { char entry_id[MAX_HOSTCACHE_LEN]; size_t entry_len; struct Curl_dns_entry *dns; struct Curl_dns_entry *dns2; #ifndef CURL_DISABLE_SHUFFLE_DNS /* shuffle addresses if requested */ if(data->set.dns_shuffle_addresses) { CURLcode result = Curl_shuffle_addr(data, &addr); if(result) return NULL; } #endif /* Create a new cache entry */ dns = calloc(1, sizeof(struct Curl_dns_entry)); if(!dns) { return NULL; } |
︙ | ︙ | |||
512 513 514 515 516 517 518 519 520 521 522 523 524 525 | * CURLRESOLV_RESOLVED (0) = OK, pointer provided * CURLRESOLV_PENDING (1) = waiting for response, no pointer */ int Curl_resolv(struct connectdata *conn, const char *hostname, int port, struct Curl_dns_entry **entry) { struct Curl_dns_entry *dns = NULL; struct Curl_easy *data = conn->data; CURLcode result; int rc = CURLRESOLV_ERROR; /* default to failure */ | > | 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 | * CURLRESOLV_RESOLVED (0) = OK, pointer provided * CURLRESOLV_PENDING (1) = waiting for response, no pointer */ int Curl_resolv(struct connectdata *conn, const char *hostname, int port, bool allowDOH, struct Curl_dns_entry **entry) { struct Curl_dns_entry *dns = NULL; struct Curl_easy *data = conn->data; CURLcode result; int rc = CURLRESOLV_ERROR; /* default to failure */ |
︙ | ︙ | |||
557 558 559 560 561 562 563 | st = data->set.resolver_start(data->state.resolver, NULL, data->set.resolver_start_client); Curl_set_in_callback(data, false); if(st) return CURLRESOLV_ERROR; } | | | 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 | st = data->set.resolver_start(data->state.resolver, NULL, data->set.resolver_start_client); Curl_set_in_callback(data, false); if(st) return CURLRESOLV_ERROR; } if(allowDOH && data->set.doh) { addr = Curl_doh(conn, hostname, port, &respwait); } else { /* If Curl_getaddrinfo() returns NULL, 'respwait' might be set to a non-zero value indicating that we need to wait for the response to the resolve call */ addr = Curl_getaddrinfo(conn, |
︙ | ︙ | |||
683 684 685 686 687 688 689 | /* Ignore the timeout when signals are disabled */ timeout = 0; else timeout = (timeoutms > LONG_MAX) ? LONG_MAX : (long)timeoutms; if(!timeout) /* USE_ALARM_TIMEOUT defined, but no timeout actually requested */ | | | 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 | /* Ignore the timeout when signals are disabled */ timeout = 0; else timeout = (timeoutms > LONG_MAX) ? LONG_MAX : (long)timeoutms; if(!timeout) /* USE_ALARM_TIMEOUT defined, but no timeout actually requested */ return Curl_resolv(conn, hostname, port, TRUE, entry); if(timeout < 1000) { /* The alarm() function only provides integer second resolution, so if we want to wait less than one second we must bail out already now. */ failf(data, "remaining timeout of %ld too small to resolve via SIGALRM method", timeout); |
︙ | ︙ | |||
745 746 747 748 749 750 751 | (void)timeoutms; /* timeoutms not used with an async resolver */ #endif #endif /* USE_ALARM_TIMEOUT */ /* Perform the actual name resolution. This might be interrupted by an * alarm if it takes too long. */ | | | 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 | (void)timeoutms; /* timeoutms not used with an async resolver */ #endif #endif /* USE_ALARM_TIMEOUT */ /* Perform the actual name resolution. This might be interrupted by an * alarm if it takes too long. */ rc = Curl_resolv(conn, hostname, port, TRUE, entry); #ifdef USE_ALARM_TIMEOUT clean_up: if(!prev_alarm) /* deactivate a possibly active alarm before uninstalling the handler */ alarm(0); |
︙ | ︙ |
Changes to jni/curl/lib/hostip.h.
︙ | ︙ | |||
79 80 81 82 83 84 85 | * use, or we'll leak memory! */ /* return codes */ #define CURLRESOLV_TIMEDOUT -2 #define CURLRESOLV_ERROR -1 #define CURLRESOLV_RESOLVED 0 #define CURLRESOLV_PENDING 1 | | > > > | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | * use, or we'll leak memory! */ /* return codes */ #define CURLRESOLV_TIMEDOUT -2 #define CURLRESOLV_ERROR -1 #define CURLRESOLV_RESOLVED 0 #define CURLRESOLV_PENDING 1 int Curl_resolv(struct connectdata *conn, const char *hostname, int port, bool allowDOH, struct Curl_dns_entry **dnsentry); int Curl_resolv_timeout(struct connectdata *conn, const char *hostname, int port, struct Curl_dns_entry **dnsentry, time_t timeoutms); #ifdef CURLRES_IPV6 /* * Curl_ipv6works() returns TRUE if IPv6 seems to work. |
︙ | ︙ |
Changes to jni/curl/lib/hostip6.c.
︙ | ︙ | |||
98 99 100 101 102 103 104 | #ifdef DEBUG_ADDRINFO static void dump_addrinfo(struct connectdata *conn, const Curl_addrinfo *ai) { printf("dump_addrinfo:\n"); for(; ai; ai = ai->ai_next) { char buf[INET6_ADDRSTRLEN]; | < | > > | 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #ifdef DEBUG_ADDRINFO static void dump_addrinfo(struct connectdata *conn, const Curl_addrinfo *ai) { printf("dump_addrinfo:\n"); for(; ai; ai = ai->ai_next) { char buf[INET6_ADDRSTRLEN]; printf(" fam %2d, CNAME %s, ", ai->ai_family, ai->ai_canonname ? ai->ai_canonname : "<none>"); if(Curl_printable_address(ai, buf, sizeof(buf))) printf("%s\n", buf); else { char buffer[STRERROR_LEN]; printf("failed; %s\n", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer))); } } } #else #define dump_addrinfo(x,y) Curl_nop_stmt #endif /* |
︙ | ︙ |
Changes to jni/curl/lib/http.c.
︙ | ︙ | |||
69 70 71 72 73 74 75 | #include "strtoofft.h" #include "multiif.h" #include "strcase.h" #include "content_encoding.h" #include "http_proxy.h" #include "warnless.h" #include "non-ascii.h" | < > > | 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 | #include "strtoofft.h" #include "multiif.h" #include "strcase.h" #include "content_encoding.h" #include "http_proxy.h" #include "warnless.h" #include "non-ascii.h" #include "http2.h" #include "connect.h" #include "strdup.h" #include "altsvc.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" /* * Forward declarations. */ static int http_getsock_do(struct connectdata *conn, curl_socket_t *socks, int numsocks); static int http_should_fail(struct connectdata *conn); #ifndef CURL_DISABLE_PROXY static CURLcode add_haproxy_protocol_header(struct connectdata *conn); #endif #ifdef USE_SSL static CURLcode https_connecting(struct connectdata *conn, bool *done); static int https_getsock(struct connectdata *conn, curl_socket_t *socks, int numsocks); #else |
︙ | ︙ | |||
173 174 175 176 177 178 179 | if(!CONN_INUSE(conn)) /* if not already multi-using, setup connection details */ Curl_http2_setup_conn(conn); Curl_http2_setup_req(data); return CURLE_OK; } | | | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | if(!CONN_INUSE(conn)) /* if not already multi-using, setup connection details */ Curl_http2_setup_conn(conn); Curl_http2_setup_req(data); return CURLE_OK; } #ifndef CURL_DISABLE_PROXY /* * checkProxyHeaders() checks the linked list of custom proxy headers * if proxy headers are not available, then it will lookup into http header * link list * * It takes a connectdata struct as input instead of the Curl_easy simply to * know if this is a proxy request or not, as it then might check a different |
︙ | ︙ | |||
200 201 202 203 204 205 206 207 208 209 210 211 212 213 | if(strncasecompare(head->data, thisheader, thislen) && Curl_headersep(head->data[thislen])) return head->data; } return NULL; } /* * Strip off leading and trailing whitespace from the value in the * given HTTP header line and return a strdupped copy. Returns NULL in * case of allocation failure. Returns an empty string if the header value * consists entirely of whitespace. */ | > > > > | 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 | if(strncasecompare(head->data, thisheader, thislen) && Curl_headersep(head->data[thislen])) return head->data; } return NULL; } #else /* disabled */ #define Curl_checkProxyheaders(x,y) NULL #endif /* * Strip off leading and trailing whitespace from the value in the * given HTTP header line and return a strdupped copy. Returns NULL in * case of allocation failure. Returns an empty string if the header value * consists entirely of whitespace. */ |
︙ | ︙ | |||
254 255 256 257 258 259 260 261 262 263 264 265 266 267 | memcpy(value, start, len); value[len] = 0; /* zero terminate */ return value; } /* * http_output_basic() sets up an Authorization: header (or the proxy version) * for HTTP Basic authentication. * * Returns CURLcode. */ static CURLcode http_output_basic(struct connectdata *conn, bool proxy) | > | 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 | memcpy(value, start, len); value[len] = 0; /* zero terminate */ return value; } #ifndef CURL_DISABLE_HTTP_AUTH /* * http_output_basic() sets up an Authorization: header (or the proxy version) * for HTTP Basic authentication. * * Returns CURLcode. */ static CURLcode http_output_basic(struct connectdata *conn, bool proxy) |
︙ | ︙ | |||
334 335 336 337 338 339 340 341 342 343 344 345 346 347 | result = CURLE_OUT_OF_MEMORY; goto fail; } fail: return result; } /* pickoneauth() selects the most favourable authentication method from the * ones available and the ones we want. * * return TRUE if one was picked */ static bool pickoneauth(struct auth *pick, unsigned long mask) | > > | 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | result = CURLE_OUT_OF_MEMORY; goto fail; } fail: return result; } #endif /* pickoneauth() selects the most favourable authentication method from the * ones available and the ones we want. * * return TRUE if one was picked */ static bool pickoneauth(struct auth *pick, unsigned long mask) |
︙ | ︙ | |||
454 455 456 457 458 459 460 | #if defined(USE_NTLM) /* There is still data left to send */ if((data->state.authproxy.picked == CURLAUTH_NTLM) || (data->state.authhost.picked == CURLAUTH_NTLM) || (data->state.authproxy.picked == CURLAUTH_NTLM_WB) || (data->state.authhost.picked == CURLAUTH_NTLM_WB)) { if(((expectsend - bytessent) < 2000) || | | | | 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 | #if defined(USE_NTLM) /* There is still data left to send */ if((data->state.authproxy.picked == CURLAUTH_NTLM) || (data->state.authhost.picked == CURLAUTH_NTLM) || (data->state.authproxy.picked == CURLAUTH_NTLM_WB) || (data->state.authhost.picked == CURLAUTH_NTLM_WB)) { if(((expectsend - bytessent) < 2000) || (conn->http_ntlm_state != NTLMSTATE_NONE) || (conn->proxy_ntlm_state != NTLMSTATE_NONE)) { /* The NTLM-negotiation has started *OR* there is just a little (<2K) data left to send, keep on sending. */ /* rewind data when completely done sending! */ if(!conn->bits.authneg && (conn->writesockfd != CURL_SOCKET_BAD)) { conn->bits.rewindaftersend = TRUE; infof(data, "Rewind stream after send\n"); |
︙ | ︙ | |||
482 483 484 485 486 487 488 | } #endif #if defined(USE_SPNEGO) /* There is still data left to send */ if((data->state.authproxy.picked == CURLAUTH_NEGOTIATE) || (data->state.authhost.picked == CURLAUTH_NEGOTIATE)) { if(((expectsend - bytessent) < 2000) || | | | | 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 | } #endif #if defined(USE_SPNEGO) /* There is still data left to send */ if((data->state.authproxy.picked == CURLAUTH_NEGOTIATE) || (data->state.authhost.picked == CURLAUTH_NEGOTIATE)) { if(((expectsend - bytessent) < 2000) || (conn->http_negotiate_state != GSS_AUTHNONE) || (conn->proxy_negotiate_state != GSS_AUTHNONE)) { /* The NEGOTIATE-negotiation has started *OR* there is just a little (<2K) data left to send, keep on sending. */ /* rewind data when completely done sending! */ if(!conn->bits.authneg && (conn->writesockfd != CURL_SOCKET_BAD)) { conn->bits.rewindaftersend = TRUE; infof(data, "Rewind stream after send\n"); |
︙ | ︙ | |||
608 609 610 611 612 613 614 615 616 617 618 619 620 621 | data->req.httpcode); result = CURLE_HTTP_RETURNED_ERROR; } return result; } /* * Output the correct authentication header depending on the auth type * and whether or not it is to a proxy. */ static CURLcode output_auth_headers(struct connectdata *conn, struct auth *authstatus, | > | 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 | data->req.httpcode); result = CURLE_HTTP_RETURNED_ERROR; } return result; } #ifndef CURL_DISABLE_HTTP_AUTH /* * Output the correct authentication header depending on the auth type * and whether or not it is to a proxy. */ static CURLcode output_auth_headers(struct connectdata *conn, struct auth *authstatus, |
︙ | ︙ | |||
796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 | } else authhost->done = TRUE; return result; } /* * Curl_http_input_auth() deals with Proxy-Authenticate: and WWW-Authenticate: * headers. They are dealt with both in the transfer.c main loop and in the * proxy CONNECT loop. */ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy, const char *auth) /* the first non-space */ { /* * This resource requires authentication */ struct Curl_easy *data = conn->data; #ifdef USE_SPNEGO | > > > > > > > > > > > > > > > > | | | 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 | } else authhost->done = TRUE; return result; } #else /* when disabled */ CURLcode Curl_http_output_auth(struct connectdata *conn, const char *request, const char *path, bool proxytunnel) { (void)conn; (void)request; (void)path; (void)proxytunnel; return CURLE_OK; } #endif /* * Curl_http_input_auth() deals with Proxy-Authenticate: and WWW-Authenticate: * headers. They are dealt with both in the transfer.c main loop and in the * proxy CONNECT loop. */ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy, const char *auth) /* the first non-space */ { /* * This resource requires authentication */ struct Curl_easy *data = conn->data; #ifdef USE_SPNEGO curlnegotiate *negstate = proxy ? &conn->proxy_negotiate_state : &conn->http_negotiate_state; #endif unsigned long *availp; struct auth *authp; if(proxy) { availp = &data->info.proxyauthavail; authp = &data->state.authproxy; |
︙ | ︙ | |||
859 860 861 862 863 864 865 | if(!result) { DEBUGASSERT(!data->req.newurl); data->req.newurl = strdup(data->change.url); if(!data->req.newurl) return CURLE_OUT_OF_MEMORY; data->state.authproblem = FALSE; /* we received a GSS auth token and we dealt with it fine */ | | | 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 | if(!result) { DEBUGASSERT(!data->req.newurl); data->req.newurl = strdup(data->change.url); if(!data->req.newurl) return CURLE_OUT_OF_MEMORY; data->state.authproblem = FALSE; /* we received a GSS auth token and we dealt with it fine */ *negstate = GSS_AUTHRECV; } else data->state.authproblem = TRUE; } } } else |
︙ | ︙ | |||
890 891 892 893 894 895 896 | #ifdef NTLM_WB_ENABLED if(authp->picked == CURLAUTH_NTLM_WB) { *availp &= ~CURLAUTH_NTLM; authp->avail &= ~CURLAUTH_NTLM; *availp |= CURLAUTH_NTLM_WB; authp->avail |= CURLAUTH_NTLM_WB; | < < < | | < < | | < < < < | 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 | #ifdef NTLM_WB_ENABLED if(authp->picked == CURLAUTH_NTLM_WB) { *availp &= ~CURLAUTH_NTLM; authp->avail &= ~CURLAUTH_NTLM; *availp |= CURLAUTH_NTLM_WB; authp->avail |= CURLAUTH_NTLM_WB; result = Curl_input_ntlm_wb(conn, proxy, auth); if(result) { infof(data, "Authentication problem. Ignoring this.\n"); data->state.authproblem = TRUE; } } #endif } else { infof(data, "Authentication problem. Ignoring this.\n"); data->state.authproblem = TRUE; |
︙ | ︙ | |||
1276 1277 1278 1279 1280 1281 1282 | when this function is used from the CONNECT sending function. We currently (stupidly) assume that the whole request is always sent away in the first single chunk. This needs FIXing. */ return CURLE_SEND_ERROR; | < | 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 | when this function is used from the CONNECT sending function. We currently (stupidly) assume that the whole request is always sent away in the first single chunk. This needs FIXing. */ return CURLE_SEND_ERROR; } } Curl_add_buffer_free(&in); return result; } |
︙ | ︙ | |||
1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 | if(CONNECT_FIRSTSOCKET_PROXY_SSL()) return CURLE_OK; /* wait for HTTPS proxy SSL initialization to complete */ if(Curl_connect_ongoing(conn)) /* nothing else to do except wait right now - we're not done here. */ return CURLE_OK; if(conn->data->set.haproxyprotocol) { /* add HAProxy PROXY protocol header */ result = add_haproxy_protocol_header(conn); if(result) return result; } if(conn->given->protocol & CURLPROTO_HTTPS) { /* perform SSL initialization */ result = https_connecting(conn, done); if(result) return result; } | > > | 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 | if(CONNECT_FIRSTSOCKET_PROXY_SSL()) return CURLE_OK; /* wait for HTTPS proxy SSL initialization to complete */ if(Curl_connect_ongoing(conn)) /* nothing else to do except wait right now - we're not done here. */ return CURLE_OK; #ifndef CURL_DISABLE_PROXY if(conn->data->set.haproxyprotocol) { /* add HAProxy PROXY protocol header */ result = add_haproxy_protocol_header(conn); if(result) return result; } #endif if(conn->given->protocol & CURLPROTO_HTTPS) { /* perform SSL initialization */ result = https_connecting(conn, done); if(result) return result; } |
︙ | ︙ | |||
1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 | { /* write mode */ (void)numsocks; /* unused, we trust it to be at least 1 */ socks[0] = conn->sock[FIRSTSOCKET]; return GETSOCK_WRITESOCK(0); } static CURLcode add_haproxy_protocol_header(struct connectdata *conn) { char proxy_header[128]; Curl_send_buffer *req_buffer; CURLcode result; char tcp_version[5]; | > | 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 | { /* write mode */ (void)numsocks; /* unused, we trust it to be at least 1 */ socks[0] = conn->sock[FIRSTSOCKET]; return GETSOCK_WRITESOCK(0); } #ifndef CURL_DISABLE_PROXY static CURLcode add_haproxy_protocol_header(struct connectdata *conn) { char proxy_header[128]; Curl_send_buffer *req_buffer; CURLcode result; char tcp_version[5]; |
︙ | ︙ | |||
1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 | conn, &conn->data->info.request_size, 0, FIRSTSOCKET); return result; } #ifdef USE_SSL static CURLcode https_connecting(struct connectdata *conn, bool *done) { CURLcode result; DEBUGASSERT((conn) && (conn->handler->flags & PROTOPT_SSL)); | > | 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 | conn, &conn->data->info.request_size, 0, FIRSTSOCKET); return result; } #endif #ifdef USE_SSL static CURLcode https_connecting(struct connectdata *conn, bool *done) { CURLcode result; DEBUGASSERT((conn) && (conn->handler->flags & PROTOPT_SSL)); |
︙ | ︙ | |||
1685 1686 1687 1688 1689 1690 1691 | struct Curl_easy *handle) { char *ptr = NULL; CURLcode result = CURLE_OK; const char *endofline_native = NULL; const char *endofline_network = NULL; | < < | 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 | struct Curl_easy *handle) { char *ptr = NULL; CURLcode result = CURLE_OK; const char *endofline_native = NULL; const char *endofline_network = NULL; if( #ifdef CURL_DO_LINEEND_CONV (handle->set.prefer_ascii) || #endif (handle->set.crlf)) { /* \n will become \r\n later on */ endofline_native = "\n"; |
︙ | ︙ | |||
1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 | headers = headers->next; } } return CURLE_OK; } CURLcode Curl_add_timecondition(struct Curl_easy *data, Curl_send_buffer *req_buffer) { const struct tm *tm; struct tm keeptime; CURLcode result; char datestr[80]; | > | 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 | headers = headers->next; } } return CURLE_OK; } #ifndef CURL_DISABLE_PARSEDATE CURLcode Curl_add_timecondition(struct Curl_easy *data, Curl_send_buffer *req_buffer) { const struct tm *tm; struct tm keeptime; CURLcode result; char datestr[80]; |
︙ | ︙ | |||
1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 | tm->tm_min, tm->tm_sec); result = Curl_add_buffer(&req_buffer, datestr, strlen(datestr)); return result; } /* * Curl_http() gets called from the generic multi_do() function when a HTTP * request is to be performed. This creates and sends a properly constructed * HTTP request. */ CURLcode Curl_http(struct connectdata *conn, bool *done) | > > > > > > > > > > | 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 | tm->tm_min, tm->tm_sec); result = Curl_add_buffer(&req_buffer, datestr, strlen(datestr)); return result; } #else /* disabled */ CURLcode Curl_add_timecondition(struct Curl_easy *data, Curl_send_buffer *req_buffer) { (void)data; (void)req_buffer; return CURLE_OK; } #endif /* * Curl_http() gets called from the generic multi_do() function when a HTTP * request is to be performed. This creates and sends a properly constructed * HTTP request. */ CURLcode Curl_http(struct connectdata *conn, bool *done) |
︙ | ︙ | |||
1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 | /* continue with HTTP/1.1 when explicitly requested */ break; default: /* Check if user wants to use HTTP/2 with clear TCP*/ #ifdef USE_NGHTTP2 if(conn->data->set.httpversion == CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) { DEBUGF(infof(data, "HTTP/2 over clean TCP\n")); conn->httpversion = 20; result = Curl_http2_switched(conn, NULL, 0); if(result) return result; } | > > > > > > > | 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 | /* continue with HTTP/1.1 when explicitly requested */ break; default: /* Check if user wants to use HTTP/2 with clear TCP*/ #ifdef USE_NGHTTP2 if(conn->data->set.httpversion == CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) { if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) { /* We don't support HTTP/2 proxies yet. Also it's debatable whether or not this setting should apply to HTTP/2 proxies. */ infof(data, "Ignoring HTTP/2 prior knowledge due to proxy\n"); break; } DEBUGF(infof(data, "HTTP/2 over clean TCP\n")); conn->httpversion = 20; result = Curl_http2_switched(conn, NULL, 0); if(result) return result; } |
︙ | ︙ | |||
2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 | return result; http->sendit = &http->form; break; default: http->sendit = NULL; } if(http->sendit) { const char *cthdr = Curl_checkheaders(conn, "Content-Type"); /* Read and seek body only. */ http->sendit->flags |= MIME_BODY_ONLY; /* Prepare the mime structure headers & set content type. */ | > | 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 | return result; http->sendit = &http->form; break; default: http->sendit = NULL; } #ifndef CURL_DISABLE_MIME if(http->sendit) { const char *cthdr = Curl_checkheaders(conn, "Content-Type"); /* Read and seek body only. */ http->sendit->flags |= MIME_BODY_ONLY; /* Prepare the mime structure headers & set content type. */ |
︙ | ︙ | |||
2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 | curl_mime_headers(http->sendit, NULL, 0); if(!result) result = Curl_mime_rewind(http->sendit); if(result) return result; http->postsize = Curl_mime_size(http->sendit); } ptr = Curl_checkheaders(conn, "Transfer-Encoding"); if(ptr) { /* Some kind of TE is requested, check if 'chunked' is chosen */ data->req.upload_chunky = Curl_compareheader(ptr, "Transfer-Encoding:", "chunked"); } | > | 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 | curl_mime_headers(http->sendit, NULL, 0); if(!result) result = Curl_mime_rewind(http->sendit); if(result) return result; http->postsize = Curl_mime_size(http->sendit); } #endif ptr = Curl_checkheaders(conn, "Transfer-Encoding"); if(ptr) { /* Some kind of TE is requested, check if 'chunked' is chosen */ data->req.upload_chunky = Curl_compareheader(ptr, "Transfer-Encoding:", "chunked"); } |
︙ | ︙ | |||
2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 | result = Curl_add_bufferf(&req_buffer, "Content-Length: %" CURL_FORMAT_CURL_OFF_T "\r\n", postsize); if(result) return result; } /* Output mime-generated headers. */ { struct curl_slist *hdr; for(hdr = http->sendit->curlheaders; hdr; hdr = hdr->next) { result = Curl_add_bufferf(&req_buffer, "%s\r\n", hdr->data); if(result) return result; } } /* For really small posts we don't use Expect: headers at all, and for the somewhat bigger ones we allow the app to disable it. Just make sure that the expect100header is always set to the preferred value here. */ ptr = Curl_checkheaders(conn, "Expect"); if(ptr) { | > > | 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 | result = Curl_add_bufferf(&req_buffer, "Content-Length: %" CURL_FORMAT_CURL_OFF_T "\r\n", postsize); if(result) return result; } #ifndef CURL_DISABLE_MIME /* Output mime-generated headers. */ { struct curl_slist *hdr; for(hdr = http->sendit->curlheaders; hdr; hdr = hdr->next) { result = Curl_add_bufferf(&req_buffer, "%s\r\n", hdr->data); if(result) return result; } } #endif /* For really small posts we don't use Expect: headers at all, and for the somewhat bigger ones we allow the app to disable it. Just make sure that the expect100header is always set to the preferred value here. */ ptr = Curl_checkheaders(conn, "Expect"); if(ptr) { |
︙ | ︙ | |||
3368 3369 3370 3371 3372 3373 3374 | } /* At this point we have some idea about the fate of the connection. If we are closing the connection it may result auth failure. */ #if defined(USE_NTLM) if(conn->bits.close && (((data->req.httpcode == 401) && | | | | | | | | | | 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 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 | } /* At this point we have some idea about the fate of the connection. If we are closing the connection it may result auth failure. */ #if defined(USE_NTLM) if(conn->bits.close && (((data->req.httpcode == 401) && (conn->http_ntlm_state == NTLMSTATE_TYPE2)) || ((data->req.httpcode == 407) && (conn->proxy_ntlm_state == NTLMSTATE_TYPE2)))) { infof(data, "Connection closure while negotiating auth (HTTP 1.0?)\n"); data->state.authproblem = TRUE; } #endif #if defined(USE_SPNEGO) if(conn->bits.close && (((data->req.httpcode == 401) && (conn->http_negotiate_state == GSS_AUTHRECV)) || ((data->req.httpcode == 407) && (conn->proxy_negotiate_state == GSS_AUTHRECV)))) { infof(data, "Connection closure while negotiating auth (HTTP 1.0?)\n"); data->state.authproblem = TRUE; } if((conn->http_negotiate_state == GSS_AUTHDONE) && (data->req.httpcode != 401)) { conn->http_negotiate_state = GSS_AUTHSUCC; } if((conn->proxy_negotiate_state == GSS_AUTHDONE) && (data->req.httpcode != 407)) { conn->proxy_negotiate_state = GSS_AUTHSUCC; } #endif /* * When all the headers have been parsed, see if we should give * up and return an error. */ if(http_should_fail(conn)) { |
︙ | ︙ | |||
3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 | conn->httpversion += 10 * httpversion_major; if(k->upgr101 == UPGR101_RECEIVED) { /* supposedly upgraded to http2 now */ if(conn->httpversion != 20) infof(data, "Lying server, not serving HTTP/2\n"); } } else if(!nc) { /* this is the real world, not a Nirvana NCSA 1.5.x returns this crap when asked for HTTP/1.1 */ nc = sscanf(HEADER1, " HTTP %3d", &k->httpcode); conn->httpversion = 10; | > > > > | 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 | conn->httpversion += 10 * httpversion_major; if(k->upgr101 == UPGR101_RECEIVED) { /* supposedly upgraded to http2 now */ if(conn->httpversion != 20) infof(data, "Lying server, not serving HTTP/2\n"); } if(conn->httpversion < 20) { conn->bundle->multiuse = BUNDLE_NO_MULTIUSE; infof(data, "Mark bundle as not supporting multiuse\n"); } } else if(!nc) { /* this is the real world, not a Nirvana NCSA 1.5.x returns this crap when asked for HTTP/1.1 */ nc = sscanf(HEADER1, " HTTP %3d", &k->httpcode); conn->httpversion = 10; |
︙ | ︙ | |||
3665 3666 3667 3668 3669 3670 3671 | &separator, &k->httpcode); if((nc == 4) && (' ' == separator)) { conn->rtspversion += 10 * rtspversion_major; conn->httpversion = 11; /* For us, RTSP acts like HTTP 1.1 */ } else { | < | 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 | &separator, &k->httpcode); if((nc == 4) && (' ' == separator)) { conn->rtspversion += 10 * rtspversion_major; conn->httpversion = 11; /* For us, RTSP acts like HTTP 1.1 */ } else { nc = 0; } } if(nc) { data->info.httpcode = k->httpcode; |
︙ | ︙ | |||
3718 3719 3720 3721 3722 3723 3724 | /* HTTP/2 cannot blacklist multiplexing since it is a core functionality of the protocol */ conn->bundle->multiuse = BUNDLE_MULTIPLEX; } else if(conn->httpversion >= 11 && !conn->bits.close) { | | < | < < < < < < | 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 | /* HTTP/2 cannot blacklist multiplexing since it is a core functionality of the protocol */ conn->bundle->multiuse = BUNDLE_MULTIPLEX; } else if(conn->httpversion >= 11 && !conn->bits.close) { /* If HTTP version is >= 1.1 and connection is persistent */ DEBUGF(infof(data, "HTTP 1.1 or later with persistent connection\n")); } switch(k->httpcode) { case 304: /* (quote from RFC2616, section 10.3.5): The 304 response * MUST NOT contain a message-body, and thus is always * terminated by the first empty line after the header |
︙ | ︙ | |||
3812 3813 3814 3815 3816 3817 3818 | /* ignore empty data */ free(contenttype); else { Curl_safefree(data->info.contenttype); data->info.contenttype = contenttype; } } | < < < < < < < < < < < < < | 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 | /* ignore empty data */ free(contenttype); else { Curl_safefree(data->info.contenttype); data->info.contenttype = contenttype; } } else if((conn->httpversion == 10) && conn->bits.httpproxy && Curl_compareheader(k->p, "Proxy-Connection:", "keep-alive")) { /* * When a HTTP/1.0 reply comes when using a proxy, the * 'Proxy-Connection: keep-alive' line tells us the |
︙ | ︙ |
Changes to jni/curl/lib/http2.c.
︙ | ︙ | |||
107 108 109 110 111 112 113 | int numsocks) { const struct http_conn *c = &conn->proto.httpc; struct SingleRequest *k = &conn->data->req; int bitmap = GETSOCK_BLANK; (void)numsocks; | < < | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | int numsocks) { const struct http_conn *c = &conn->proto.httpc; struct SingleRequest *k = &conn->data->req; int bitmap = GETSOCK_BLANK; (void)numsocks; sock[0] = conn->sock[FIRSTSOCKET]; /* in a HTTP/2 connection we can basically always get a frame so we should always be ready for one */ bitmap |= GETSOCK_READSOCK(FIRSTSOCKET); /* we're still uploading or the HTTP/2 layer wants to send data */ |
︙ | ︙ | |||
616 617 618 619 620 621 622 | } fail: return rv; } /* * multi_connchanged() is called to tell that there is a connection in | | | 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 | } fail: return rv; } /* * multi_connchanged() is called to tell that there is a connection in * this multi handle that has changed state (multiplexing become possible, the * number of allowed streams changed or similar), and a subsequent use of this * multi handle should move CONNECT_PEND handles back to CONNECT to have them * retry. */ static void multi_connchanged(struct Curl_multi *multi) { multi->recheckstate = TRUE; |
︙ | ︙ | |||
966 967 968 969 970 971 972 | /* Store received PUSH_PROMISE headers to be used when the subsequent PUSH_PROMISE callback comes */ if(frame->hd.type == NGHTTP2_PUSH_PROMISE) { char *h; if(!strcmp(":authority", (const char *)name)) { | | | 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 | /* Store received PUSH_PROMISE headers to be used when the subsequent PUSH_PROMISE callback comes */ if(frame->hd.type == NGHTTP2_PUSH_PROMISE) { char *h; if(!strcmp(":authority", (const char *)name)) { /* pseudo headers are lower case */ int rc = 0; char *check = aprintf("%s:%d", conn->host.name, conn->remote_port); if(!check) /* no memory */ return NGHTTP2_ERR_CALLBACK_FAILURE; if(!Curl_strcasecompare(check, (const char *)value)) { /* This is push is not for the same authority that was asked for in |
︙ | ︙ | |||
1843 1844 1845 1846 1847 1848 1849 | } } static ssize_t http2_send(struct connectdata *conn, int sockindex, const void *mem, size_t len, CURLcode *err) { /* | | | | | 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 | } } static ssize_t http2_send(struct connectdata *conn, int sockindex, const void *mem, size_t len, CURLcode *err) { /* * Currently, we send request in this function, but this function is also * used to send request body. It would be nice to add dedicated function for * request. */ int rv; struct http_conn *httpc = &conn->proto.httpc; struct HTTP *stream = conn->data->req.protop; nghttp2_nv *nva = NULL; size_t nheader; size_t i; |
︙ | ︙ |
Changes to jni/curl/lib/http_digest.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH) #include "urldata.h" #include "strcase.h" #include "vauth/vauth.h" #include "http_digest.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" /* Test example headers: | > | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH) #include "urldata.h" #include "strcase.h" #include "vauth/vauth.h" #include "http_digest.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" /* Test example headers: |
︙ | ︙ | |||
167 168 169 170 171 172 173 | return CURLE_OUT_OF_MEMORY; authp->done = TRUE; return CURLE_OK; } | | | 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | return CURLE_OUT_OF_MEMORY; authp->done = TRUE; return CURLE_OK; } void Curl_http_auth_cleanup_digest(struct Curl_easy *data) { Curl_auth_digest_cleanup(&data->state.digest); Curl_auth_digest_cleanup(&data->state.proxydigest); } #endif |
Changes to jni/curl/lib/http_digest.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_HTTP_DIGEST_H #define HEADER_CURL_HTTP_DIGEST_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > < | | < | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #ifndef HEADER_CURL_HTTP_DIGEST_H #define HEADER_CURL_HTTP_DIGEST_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH) /* this is for digest header input */ CURLcode Curl_input_digest(struct connectdata *conn, bool proxy, const char *header); /* this is for creating digest header output */ CURLcode Curl_output_digest(struct connectdata *conn, bool proxy, const unsigned char *request, const unsigned char *uripath); void Curl_http_auth_cleanup_digest(struct Curl_easy *data); #endif /* !CURL_DISABLE_HTTP && !CURL_DISABLE_CRYPTO_AUTH */ #endif /* HEADER_CURL_HTTP_DIGEST_H */ |
Changes to jni/curl/lib/http_negotiate.c.
︙ | ︙ | |||
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | const char *userp; const char *passwdp; const char *service; const char *host; /* Point to the correct struct with this */ struct negotiatedata *neg_ctx; if(proxy) { userp = conn->http_proxy.user; passwdp = conn->http_proxy.passwd; service = data->set.str[STRING_PROXY_SERVICE_NAME] ? data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP"; host = conn->http_proxy.host.name; neg_ctx = &conn->proxyneg; } else { userp = conn->user; passwdp = conn->passwd; service = data->set.str[STRING_SERVICE_NAME] ? data->set.str[STRING_SERVICE_NAME] : "HTTP"; host = conn->host.name; neg_ctx = &conn->negotiate; } /* Not set means empty */ if(!userp) userp = ""; if(!passwdp) passwdp = ""; /* Obtain the input token, if any */ header += strlen("Negotiate"); while(*header && ISSPACE(*header)) header++; len = strlen(header); neg_ctx->havenegdata = len != 0; if(!len) { | > > > | | | | | > > | | | | | > > > > > > | | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | const char *userp; const char *passwdp; const char *service; const char *host; /* Point to the correct struct with this */ struct negotiatedata *neg_ctx; curlnegotiate state; if(proxy) { userp = conn->http_proxy.user; passwdp = conn->http_proxy.passwd; service = data->set.str[STRING_PROXY_SERVICE_NAME] ? data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP"; host = conn->http_proxy.host.name; neg_ctx = &conn->proxyneg; state = conn->proxy_negotiate_state; } else { userp = conn->user; passwdp = conn->passwd; service = data->set.str[STRING_SERVICE_NAME] ? data->set.str[STRING_SERVICE_NAME] : "HTTP"; host = conn->host.name; neg_ctx = &conn->negotiate; state = conn->http_negotiate_state; } /* Not set means empty */ if(!userp) userp = ""; if(!passwdp) passwdp = ""; /* Obtain the input token, if any */ header += strlen("Negotiate"); while(*header && ISSPACE(*header)) header++; len = strlen(header); neg_ctx->havenegdata = len != 0; if(!len) { if(state == GSS_AUTHSUCC) { infof(conn->data, "Negotiate auth restarted\n"); Curl_http_auth_cleanup_negotiate(conn); } else if(state != GSS_AUTHNONE) { /* The server rejected our authentication and hasn't supplied any more negotiation mechanisms */ Curl_http_auth_cleanup_negotiate(conn); return CURLE_LOGIN_DENIED; } } /* Supports SSL channel binding for Windows ISS extended protection */ #if defined(USE_WINDOWS_SSPI) && defined(SECPKG_ATTR_ENDPOINT_BINDINGS) neg_ctx->sslContext = conn->sslContext; #endif /* Initialize the security context and decode our challenge */ result = Curl_auth_decode_spnego_message(data, userp, passwdp, service, host, header, neg_ctx); if(result) Curl_http_auth_cleanup_negotiate(conn); return result; } CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy) { struct negotiatedata *neg_ctx = proxy ? &conn->proxyneg : &conn->negotiate; struct auth *authp = proxy ? &conn->data->state.authproxy : &conn->data->state.authhost; curlnegotiate *state = proxy ? &conn->proxy_negotiate_state : &conn->http_negotiate_state; char *base64 = NULL; size_t len = 0; char *userp; CURLcode result; authp->done = FALSE; if(*state == GSS_AUTHRECV) { if(neg_ctx->havenegdata) { neg_ctx->havemultiplerequests = TRUE; } } else if(*state == GSS_AUTHSUCC) { if(!neg_ctx->havenoauthpersist) { neg_ctx->noauthpersist = !neg_ctx->havemultiplerequests; } } if(neg_ctx->noauthpersist || (*state != GSS_AUTHDONE && *state != GSS_AUTHSUCC)) { if(neg_ctx->noauthpersist && *state == GSS_AUTHSUCC) { infof(conn->data, "Curl_output_negotiate, " "no persistent authentication: cleanup existing context"); Curl_http_auth_cleanup_negotiate(conn); } if(!neg_ctx->context) { result = Curl_input_negotiate(conn, proxy, "Negotiate"); if(result == CURLE_LOGIN_DENIED) { /* negotiate auth failed, let's continue unauthenticated to stay * compatible with the behavior before curl-7_64_0-158-g6c6035532 */ conn->data->state.authproblem = TRUE; return CURLE_OK; } else if(result) return result; } result = Curl_auth_create_spnego_message(conn->data, neg_ctx, &base64, &len); if(result) return result; |
︙ | ︙ | |||
166 167 168 169 170 171 172 | free(base64); if(userp == NULL) { return CURLE_OUT_OF_MEMORY; } | | | | | | > > > | | | 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 | free(base64); if(userp == NULL) { return CURLE_OUT_OF_MEMORY; } *state = GSS_AUTHSENT; #ifdef HAVE_GSSAPI if(neg_ctx->status == GSS_S_COMPLETE || neg_ctx->status == GSS_S_CONTINUE_NEEDED) { *state = GSS_AUTHDONE; } #else #ifdef USE_WINDOWS_SSPI if(neg_ctx->status == SEC_E_OK || neg_ctx->status == SEC_I_CONTINUE_NEEDED) { *state = GSS_AUTHDONE; } #endif #endif } if(*state == GSS_AUTHDONE || *state == GSS_AUTHSUCC) { /* connection is already authenticated, * don't send a header in future requests */ authp->done = TRUE; } neg_ctx->havenegdata = FALSE; return CURLE_OK; } void Curl_http_auth_cleanup_negotiate(struct connectdata *conn) { conn->http_negotiate_state = GSS_AUTHNONE; conn->proxy_negotiate_state = GSS_AUTHNONE; Curl_auth_cleanup_spnego(&conn->negotiate); Curl_auth_cleanup_spnego(&conn->proxyneg); } #endif /* !CURL_DISABLE_HTTP && USE_SPNEGO */ |
Changes to jni/curl/lib/http_negotiate.h.
︙ | ︙ | |||
18 19 20 21 22 23 24 | * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ | | | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO) /* this is for Negotiate header input */ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy, const char *header); /* this is for creating Negotiate header output */ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy); void Curl_http_auth_cleanup_negotiate(struct connectdata *conn); #endif /* !CURL_DISABLE_HTTP && USE_SPNEGO */ #endif /* HEADER_CURL_HTTP_NEGOTIATE_H */ |
Changes to jni/curl/lib/http_ntlm.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | CURLcode Curl_input_ntlm(struct connectdata *conn, bool proxy, /* if proxy or not */ const char *header) /* rest of the www-authenticate: header */ { /* point to the correct struct with this */ struct ntlmdata *ntlm; CURLcode result = CURLE_OK; ntlm = proxy ? &conn->proxyntlm : &conn->ntlm; if(checkprefix("NTLM", header)) { header += strlen("NTLM"); while(*header && ISSPACE(*header)) header++; if(*header) { result = Curl_auth_decode_ntlm_type2_message(conn->data, header, ntlm); if(result) return result; | > > | | | | | | | | | 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 | CURLcode Curl_input_ntlm(struct connectdata *conn, bool proxy, /* if proxy or not */ const char *header) /* rest of the www-authenticate: header */ { /* point to the correct struct with this */ struct ntlmdata *ntlm; curlntlm *state; CURLcode result = CURLE_OK; ntlm = proxy ? &conn->proxyntlm : &conn->ntlm; state = proxy ? &conn->proxy_ntlm_state : &conn->http_ntlm_state; if(checkprefix("NTLM", header)) { header += strlen("NTLM"); while(*header && ISSPACE(*header)) header++; if(*header) { result = Curl_auth_decode_ntlm_type2_message(conn->data, header, ntlm); if(result) return result; *state = NTLMSTATE_TYPE2; /* We got a type-2 message */ } else { if(*state == NTLMSTATE_LAST) { infof(conn->data, "NTLM auth restarted\n"); Curl_http_auth_cleanup_ntlm(conn); } else if(*state == NTLMSTATE_TYPE3) { infof(conn->data, "NTLM handshake rejected\n"); Curl_http_auth_cleanup_ntlm(conn); *state = NTLMSTATE_NONE; return CURLE_REMOTE_ACCESS_DENIED; } else if(*state >= NTLMSTATE_TYPE1) { infof(conn->data, "NTLM handshake failure (internal error)\n"); return CURLE_REMOTE_ACCESS_DENIED; } *state = NTLMSTATE_TYPE1; /* We should send away a type-1 */ } } return result; } /* |
︙ | ︙ | |||
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 | const char *userp; const char *passwdp; const char *service = NULL; const char *hostname = NULL; /* point to the correct struct with this */ struct ntlmdata *ntlm; struct auth *authp; DEBUGASSERT(conn); DEBUGASSERT(conn->data); #if defined(NTLM_NEEDS_NSS_INIT) if(CURLE_OK != Curl_nss_force_init(conn->data)) return CURLE_OUT_OF_MEMORY; #endif if(proxy) { allocuserpwd = &conn->allocptr.proxyuserpwd; userp = conn->http_proxy.user; passwdp = conn->http_proxy.passwd; service = conn->data->set.str[STRING_PROXY_SERVICE_NAME] ? conn->data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP"; hostname = conn->http_proxy.host.name; ntlm = &conn->proxyntlm; authp = &conn->data->state.authproxy; } else { allocuserpwd = &conn->allocptr.userpwd; userp = conn->user; passwdp = conn->passwd; service = conn->data->set.str[STRING_SERVICE_NAME] ? conn->data->set.str[STRING_SERVICE_NAME] : "HTTP"; hostname = conn->host.name; ntlm = &conn->ntlm; authp = &conn->data->state.authhost; } authp->done = FALSE; /* not set means empty */ if(!userp) userp = ""; | > > > | 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 | const char *userp; const char *passwdp; const char *service = NULL; const char *hostname = NULL; /* point to the correct struct with this */ struct ntlmdata *ntlm; curlntlm *state; struct auth *authp; DEBUGASSERT(conn); DEBUGASSERT(conn->data); #if defined(NTLM_NEEDS_NSS_INIT) if(CURLE_OK != Curl_nss_force_init(conn->data)) return CURLE_OUT_OF_MEMORY; #endif if(proxy) { allocuserpwd = &conn->allocptr.proxyuserpwd; userp = conn->http_proxy.user; passwdp = conn->http_proxy.passwd; service = conn->data->set.str[STRING_PROXY_SERVICE_NAME] ? conn->data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP"; hostname = conn->http_proxy.host.name; ntlm = &conn->proxyntlm; state = &conn->proxy_ntlm_state; authp = &conn->data->state.authproxy; } else { allocuserpwd = &conn->allocptr.userpwd; userp = conn->user; passwdp = conn->passwd; service = conn->data->set.str[STRING_SERVICE_NAME] ? conn->data->set.str[STRING_SERVICE_NAME] : "HTTP"; hostname = conn->host.name; ntlm = &conn->ntlm; state = &conn->http_ntlm_state; authp = &conn->data->state.authhost; } authp->done = FALSE; /* not set means empty */ if(!userp) userp = ""; |
︙ | ︙ | |||
176 177 178 179 180 181 182 | return err; } #ifdef SECPKG_ATTR_ENDPOINT_BINDINGS ntlm->sslContext = conn->sslContext; #endif #endif | | | 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | return err; } #ifdef SECPKG_ATTR_ENDPOINT_BINDINGS ntlm->sslContext = conn->sslContext; #endif #endif switch(*state) { case NTLMSTATE_TYPE1: default: /* for the weird cases we (re)start here */ /* Create a type-1 message */ result = Curl_auth_create_ntlm_type1_message(conn->data, userp, passwdp, service, hostname, ntlm, &base64, &len); |
︙ | ︙ | |||
218 219 220 221 222 223 224 | base64); free(base64); if(!*allocuserpwd) return CURLE_OUT_OF_MEMORY; DEBUG_OUT(fprintf(stderr, "**** %s\n ", *allocuserpwd)); | | | | | | | | 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 | base64); free(base64); if(!*allocuserpwd) return CURLE_OUT_OF_MEMORY; DEBUG_OUT(fprintf(stderr, "**** %s\n ", *allocuserpwd)); *state = NTLMSTATE_TYPE3; /* we send a type-3 */ authp->done = TRUE; } break; case NTLMSTATE_TYPE3: /* connection is already authenticated, * don't send a header in future requests */ *state = NTLMSTATE_LAST; /* FALLTHROUGH */ case NTLMSTATE_LAST: Curl_safefree(*allocuserpwd); authp->done = TRUE; break; } return CURLE_OK; } void Curl_http_auth_cleanup_ntlm(struct connectdata *conn) { Curl_auth_cleanup_ntlm(&conn->ntlm); Curl_auth_cleanup_ntlm(&conn->proxyntlm); #if defined(NTLM_WB_ENABLED) Curl_http_auth_cleanup_ntlm_wb(conn); #endif } #endif /* !CURL_DISABLE_HTTP && USE_NTLM */ |
Changes to jni/curl/lib/http_ntlm.h.
|
| | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_HTTP_NTLM_H #define HEADER_CURL_HTTP_NTLM_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is |
︙ | ︙ | |||
29 30 31 32 33 34 35 | /* this is for ntlm header input */ CURLcode Curl_input_ntlm(struct connectdata *conn, bool proxy, const char *header); /* this is for creating ntlm header output */ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy); | | | | 29 30 31 32 33 34 35 36 37 38 39 40 | /* this is for ntlm header input */ CURLcode Curl_input_ntlm(struct connectdata *conn, bool proxy, const char *header); /* this is for creating ntlm header output */ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy); void Curl_http_auth_cleanup_ntlm(struct connectdata *conn); #endif /* !CURL_DISABLE_HTTP && USE_NTLM */ #endif /* HEADER_CURL_HTTP_NTLM_H */ |
Changes to jni/curl/lib/if2ip.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
93 94 95 96 97 98 99 | return IPV6_SCOPE_GLOBAL; } #if defined(HAVE_GETIFADDRS) if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, | | | > > | | | > | 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 | return IPV6_SCOPE_GLOBAL; } #if defined(HAVE_GETIFADDRS) if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, unsigned int local_scope_id, const char *interf, char *buf, int buf_size) { struct ifaddrs *iface, *head; if2ip_result_t res = IF2IP_NOT_FOUND; #ifndef ENABLE_IPV6 (void) remote_scope; #endif #if !defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID) || \ !defined(ENABLE_IPV6) (void) local_scope_id; #endif if(getifaddrs(&head) >= 0) { for(iface = head; iface != NULL; iface = iface->ifa_next) { if(iface->ifa_addr != NULL) { if(iface->ifa_addr->sa_family == af) { if(strcasecompare(iface->ifa_name, interf)) { void *addr; char *ip; char scope[12] = ""; char ipstr[64]; #ifdef ENABLE_IPV6 if(af == AF_INET6) { #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID unsigned int scopeid = 0; #endif unsigned int ifscope = Curl_ipv6_scope(iface->ifa_addr); if(ifscope != remote_scope) { /* We are interested only in interface addresses whose scope matches the remote address we want to connect to: global for global, link-local for link-local, etc... */ if(res == IF2IP_NOT_FOUND) res = IF2IP_AF_NOT_SUPPORTED; continue; } addr = &((struct sockaddr_in6 *)(void *)iface->ifa_addr)->sin6_addr; #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID /* Include the scope of this interface as part of the address */ scopeid = ((struct sockaddr_in6 *)(void *)iface->ifa_addr) ->sin6_scope_id; /* If given, scope id should match. */ if(local_scope_id && scopeid != local_scope_id) { if(res == IF2IP_NOT_FOUND) res = IF2IP_AF_NOT_SUPPORTED; continue; } if(scopeid) msnprintf(scope, sizeof(scope), "%%%u", scopeid); #endif } else #endif addr = &((struct sockaddr_in *)(void *)iface->ifa_addr)->sin_addr; res = IF2IP_FOUND; ip = (char *) Curl_inet_ntop(af, addr, ipstr, sizeof(ipstr)); |
︙ | ︙ | |||
175 176 177 178 179 180 181 | return res; } #elif defined(HAVE_IOCTL_SIOCGIFADDR) if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, | | | | 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 | return res; } #elif defined(HAVE_IOCTL_SIOCGIFADDR) if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, unsigned int local_scope_id, const char *interf, char *buf, int buf_size) { struct ifreq req; struct in_addr in; struct sockaddr_in *s; curl_socket_t dummy; size_t len; (void)remote_scope; (void)local_scope_id; if(!interf || (af != AF_INET)) return IF2IP_NOT_FOUND; len = strlen(interf); if(len >= sizeof(req.ifr_name)) return IF2IP_NOT_FOUND; |
︙ | ︙ | |||
221 222 223 224 225 226 227 | sclose(dummy); return IF2IP_FOUND; } #else if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, | | | | 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | sclose(dummy); return IF2IP_FOUND; } #else if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, unsigned int local_scope_id, const char *interf, char *buf, int buf_size) { (void) af; (void) remote_scope; (void) local_scope_id; (void) interf; (void) buf; (void) buf_size; return IF2IP_NOT_FOUND; } #endif |
Changes to jni/curl/lib/if2ip.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_IF2IP_H #define HEADER_CURL_IF2IP_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_IF2IP_H #define HEADER_CURL_IF2IP_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
35 36 37 38 39 40 41 | typedef enum { IF2IP_NOT_FOUND = 0, /* Interface not found */ IF2IP_AF_NOT_SUPPORTED = 1, /* Int. exists but has no address for this af */ IF2IP_FOUND = 2 /* The address has been stored in "buf" */ } if2ip_result_t; if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, | | | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | typedef enum { IF2IP_NOT_FOUND = 0, /* Interface not found */ IF2IP_AF_NOT_SUPPORTED = 1, /* Int. exists but has no address for this af */ IF2IP_FOUND = 2 /* The address has been stored in "buf" */ } if2ip_result_t; if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, unsigned int local_scope_id, const char *interf, char *buf, int buf_size); #ifdef __INTERIX /* Nedelcho Stanev's work-around for SFU 3.0 */ struct ifreq { #define IFNAMSIZ 16 |
︙ | ︙ |
Changes to jni/curl/lib/imap.c.
︙ | ︙ | |||
24 25 26 27 28 29 30 31 32 33 34 35 36 37 | * RFC3501 IMAPv4 protocol * RFC4422 Simple Authentication and Security Layer (SASL) * RFC4616 PLAIN authentication * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism * RFC4959 IMAP Extension for SASL Initial Client Response * RFC5092 IMAP URL Scheme * RFC6749 OAuth 2.0 Authorization Framework * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_IMAP | > | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | * RFC3501 IMAPv4 protocol * RFC4422 Simple Authentication and Security Layer (SASL) * RFC4616 PLAIN authentication * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism * RFC4959 IMAP Extension for SASL Initial Client Response * RFC5092 IMAP URL Scheme * RFC6749 OAuth 2.0 Authorization Framework * RFC8314 Use of TLS for Email Submission and Access * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_IMAP |
︙ | ︙ | |||
1038 1039 1040 1041 1042 1043 1044 | if(imapcode == '*') { /* Temporarily add the LF character back and send as body to the client */ line[len] = '\n'; result = Curl_client_write(conn, CLIENTWRITE_BODY, line, len + 1); line[len] = '\0'; } else if(imapcode != IMAP_RESP_OK) | | | 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 | if(imapcode == '*') { /* Temporarily add the LF character back and send as body to the client */ line[len] = '\n'; result = Curl_client_write(conn, CLIENTWRITE_BODY, line, len + 1); line[len] = '\0'; } else if(imapcode != IMAP_RESP_OK) result = CURLE_QUOTE_ERROR; else /* End of DO phase */ state(conn, IMAP_STOP); return result; } |
︙ | ︙ | |||
1110 1111 1112 1113 1114 1115 1116 | curl_off_t size = 0; (void)instate; /* no use for this yet */ if(imapcode != '*') { Curl_pgrsSetDownloadSize(data, -1); state(conn, IMAP_STOP); | | | 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 | curl_off_t size = 0; (void)instate; /* no use for this yet */ if(imapcode != '*') { Curl_pgrsSetDownloadSize(data, -1); state(conn, IMAP_STOP); return CURLE_REMOTE_FILE_NOT_FOUND; } /* Something like this is received "* 1 FETCH (BODY[TEXT] {2021}\r" so parse the continuation data contained within the curly brackets */ while(*ptr && (*ptr != '{')) ptr++; |
︙ | ︙ | |||
1487 1488 1489 1490 1491 1492 1493 | else { /* End the APPEND command first by sending an empty line */ result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", ""); if(!result) state(conn, IMAP_APPEND_FINAL); } | | < < < < < | 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 | else { /* End the APPEND command first by sending an empty line */ result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", ""); if(!result) state(conn, IMAP_APPEND_FINAL); } /* Run the state-machine */ if(!result) result = imap_block_statemach(conn, FALSE); } /* Cleanup our per-request based variables */ Curl_safefree(imap->mailbox); Curl_safefree(imap->uidvalidity); |
︙ | ︙ | |||
1790 1791 1792 1793 1794 1795 1796 | size_t newlen = 0; char *newstr = NULL; if(!str) return NULL; /* Look for "atom-specials", counting the backslash and quote characters as | | | 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 | size_t newlen = 0; char *newstr = NULL; if(!str) return NULL; /* Look for "atom-specials", counting the backslash and quote characters as these will need escaping */ p1 = str; while(*p1) { if(*p1 == '\\') backsp_count++; else if(*p1 == '"') quote_count++; else if(!escape_only) { |
︙ | ︙ |
Changes to jni/curl/lib/inet_pton.c.
︙ | ︙ | |||
149 150 151 152 153 154 155 | */ static int inet_pton6(const char *src, unsigned char *dst) { static const char xdigits_l[] = "0123456789abcdef", xdigits_u[] = "0123456789ABCDEF"; unsigned char tmp[IN6ADDRSZ], *tp, *endp, *colonp; | | > | 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 | */ static int inet_pton6(const char *src, unsigned char *dst) { static const char xdigits_l[] = "0123456789abcdef", xdigits_u[] = "0123456789ABCDEF"; unsigned char tmp[IN6ADDRSZ], *tp, *endp, *colonp; const char *curtok; int ch, saw_xdigit; size_t val; memset((tp = tmp), 0, IN6ADDRSZ); endp = tp + IN6ADDRSZ; colonp = NULL; /* Leading :: requires some special handling. */ if(*src == ':') if(*++src != ':') return (0); curtok = src; saw_xdigit = 0; val = 0; while((ch = *src++) != '\0') { const char *xdigits; const char *pch; pch = strchr((xdigits = xdigits_l), ch); if(!pch) pch = strchr((xdigits = xdigits_u), ch); if(pch != NULL) { val <<= 4; |
︙ | ︙ |
Changes to jni/curl/lib/ldap.c.
︙ | ︙ | |||
1065 1066 1067 1068 1069 1070 1071 | } *ludpp = ludp; return (rc); } static void _ldap_free_urldesc(LDAPURLDesc *ludp) { | < < > | 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 | } *ludpp = ludp; return (rc); } static void _ldap_free_urldesc(LDAPURLDesc *ludp) { if(!ludp) return; free(ludp->lud_dn); free(ludp->lud_filter); if(ludp->lud_attrs) { size_t i; for(i = 0; i < ludp->lud_attrs_dups; i++) free(ludp->lud_attrs[i]); free(ludp->lud_attrs); } free(ludp); } |
︙ | ︙ |
Changes to jni/curl/lib/libcurl.plist.
︙ | ︙ | |||
11 12 13 14 15 16 17 | <key>CFBundleExecutable</key> <string>curl</string> <key>CFBundleIdentifier</key> <string>se.haxx.curl.libcurl</string> <key>CFBundleVersion</key> | | | | | 11 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.haxx.curl.libcurl</string> <key>CFBundleVersion</key> <string>7.65.0</string> <key>CFBundleName</key> <string>libcurl</string> <key>CFBundlePackageType</key> <string>FMWK</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleShortVersionString</key> <string>libcurl 7.65.0</string> <key>CFBundleGetInfoString</key> <string>libcurl.plist 7.65.0</string> </dict> </plist> |
Changes to jni/curl/lib/md4.c.
︙ | ︙ | |||
34 35 36 37 38 39 40 | * It is meant to be fast, but not as fast as possible. Some known * optimizations are not included to reduce source code size and avoid * compile-time configuration. */ #include "curl_setup.h" | > | | > | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | * It is meant to be fast, but not as fast as possible. Some known * optimizations are not included to reduce source code size and avoid * compile-time configuration. */ #include "curl_setup.h" /* The NSS, OS/400, and when not included, OpenSSL and mbed TLS crypto * libraries do not provide the MD4 hash algorithm, so we use this * implementation of it */ #if defined(USE_NSS) || defined(USE_OS400CRYPTO) || \ (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \ (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) #include "curl_md4.h" #include "warnless.h" #ifndef HAVE_OPENSSL |
︙ | ︙ | |||
109 110 111 112 113 114 115 | * This processes one or more 64-byte data blocks, but does NOT update * the bit counters. There are no alignment requirements. */ static const void *body(MD4_CTX *ctx, const void *data, unsigned long size) { const unsigned char *ptr; MD4_u32plus a, b, c, d; | < > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | * This processes one or more 64-byte data blocks, but does NOT update * the bit counters. There are no alignment requirements. */ static const void *body(MD4_CTX *ctx, const void *data, unsigned long size) { const unsigned char *ptr; MD4_u32plus a, b, c, d; ptr = (const unsigned char *)data; a = ctx->a; b = ctx->b; c = ctx->c; d = ctx->d; do { MD4_u32plus saved_a, saved_b, saved_c, saved_d; saved_a = a; saved_b = b; saved_c = c; saved_d = d; /* Round 1 */ STEP(F, a, b, c, d, SET(0), 3) STEP(F, d, a, b, c, SET(1), 7) STEP(F, c, d, a, b, SET(2), 11) STEP(F, b, c, d, a, SET(3), 19) STEP(F, a, b, c, d, SET(4), 3) STEP(F, d, a, b, c, SET(5), 7) STEP(F, c, d, a, b, SET(6), 11) STEP(F, b, c, d, a, SET(7), 19) STEP(F, a, b, c, d, SET(8), 3) STEP(F, d, a, b, c, SET(9), 7) STEP(F, c, d, a, b, SET(10), 11) STEP(F, b, c, d, a, SET(11), 19) STEP(F, a, b, c, d, SET(12), 3) STEP(F, d, a, b, c, SET(13), 7) STEP(F, c, d, a, b, SET(14), 11) STEP(F, b, c, d, a, SET(15), 19) /* Round 2 */ STEP(G, a, b, c, d, GET(0) + 0x5a827999, 3) STEP(G, d, a, b, c, GET(4) + 0x5a827999, 5) STEP(G, c, d, a, b, GET(8) + 0x5a827999, 9) STEP(G, b, c, d, a, GET(12) + 0x5a827999, 13) STEP(G, a, b, c, d, GET(1) + 0x5a827999, 3) STEP(G, d, a, b, c, GET(5) + 0x5a827999, 5) STEP(G, c, d, a, b, GET(9) + 0x5a827999, 9) STEP(G, b, c, d, a, GET(13) + 0x5a827999, 13) STEP(G, a, b, c, d, GET(2) + 0x5a827999, 3) STEP(G, d, a, b, c, GET(6) + 0x5a827999, 5) STEP(G, c, d, a, b, GET(10) + 0x5a827999, 9) STEP(G, b, c, d, a, GET(14) + 0x5a827999, 13) STEP(G, a, b, c, d, GET(3) + 0x5a827999, 3) STEP(G, d, a, b, c, GET(7) + 0x5a827999, 5) STEP(G, c, d, a, b, GET(11) + 0x5a827999, 9) STEP(G, b, c, d, a, GET(15) + 0x5a827999, 13) /* Round 3 */ STEP(H, a, b, c, d, GET(0) + 0x6ed9eba1, 3) STEP(H, d, a, b, c, GET(8) + 0x6ed9eba1, 9) STEP(H, c, d, a, b, GET(4) + 0x6ed9eba1, 11) STEP(H, b, c, d, a, GET(12) + 0x6ed9eba1, 15) STEP(H, a, b, c, d, GET(2) + 0x6ed9eba1, 3) STEP(H, d, a, b, c, GET(10) + 0x6ed9eba1, 9) STEP(H, c, d, a, b, GET(6) + 0x6ed9eba1, 11) STEP(H, b, c, d, a, GET(14) + 0x6ed9eba1, 15) STEP(H, a, b, c, d, GET(1) + 0x6ed9eba1, 3) STEP(H, d, a, b, c, GET(9) + 0x6ed9eba1, 9) STEP(H, c, d, a, b, GET(5) + 0x6ed9eba1, 11) STEP(H, b, c, d, a, GET(13) + 0x6ed9eba1, 15) STEP(H, a, b, c, d, GET(3) + 0x6ed9eba1, 3) STEP(H, d, a, b, c, GET(11) + 0x6ed9eba1, 9) STEP(H, c, d, a, b, GET(7) + 0x6ed9eba1, 11) STEP(H, b, c, d, a, GET(15) + 0x6ed9eba1, 15) a += saved_a; b += saved_b; c += saved_c; d += saved_d; ptr += 64; } while(size -= 64); |
︙ | ︙ | |||
208 209 210 211 212 213 214 | ctx->lo = 0; ctx->hi = 0; } static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size) { MD4_u32plus saved_lo; | | | | 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 | ctx->lo = 0; ctx->hi = 0; } static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size) { MD4_u32plus saved_lo; unsigned long used; saved_lo = ctx->lo; ctx->lo = (saved_lo + size) & 0x1fffffff; if(ctx->lo < saved_lo) ctx->hi++; ctx->hi += (MD4_u32plus)size >> 29; used = saved_lo & 0x3f; if(used) { unsigned long available = 64 - used; if(size < available) { memcpy(&ctx->buffer[used], data, size); return; } memcpy(&ctx->buffer[used], data, available); |
︙ | ︙ | |||
300 301 302 303 304 305 306 307 308 | void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len) { MD4_CTX ctx; MD4_Init(&ctx); MD4_Update(&ctx, input, curlx_uztoui(len)); MD4_Final(output, &ctx); } #endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) || (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */ | > > | 303 304 305 306 307 308 309 310 311 312 313 | void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len) { MD4_CTX ctx; MD4_Init(&ctx); MD4_Update(&ctx, input, curlx_uztoui(len)); MD4_Final(output, &ctx); } #endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) || (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */ |
Changes to jni/curl/lib/md5.c.
︙ | ︙ | |||
35 36 37 38 39 40 41 | #include <nettle/md5.h> #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" typedef struct md5_ctx MD5_CTX; | | | | | | | | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | #include <nettle/md5.h> #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" typedef struct md5_ctx MD5_CTX; static void MD5_Init(MD5_CTX *ctx) { md5_init(ctx); } static void MD5_Update(MD5_CTX *ctx, const unsigned char *input, unsigned int inputLen) { md5_update(ctx, inputLen, input); } static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx) { md5_digest(ctx, 16, digest); } #elif defined(USE_GNUTLS) #include <gcrypt.h> #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" typedef gcry_md_hd_t MD5_CTX; static void MD5_Init(MD5_CTX *ctx) { gcry_md_open(ctx, GCRY_MD_MD5, 0); } static void MD5_Update(MD5_CTX *ctx, const unsigned char *input, unsigned int inputLen) { gcry_md_write(*ctx, input, inputLen); } static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx) { memcpy(digest, gcry_md_read(*ctx, 0), 16); gcry_md_close(*ctx); } #elif defined(USE_OPENSSL) && !defined(USE_AMISSL) /* When OpenSSL is available we use the MD5-function from OpenSSL */ |
︙ | ︙ | |||
120 121 122 123 124 125 126 | } static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx) { CC_MD5_Final(digest, ctx); } | | | 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | } static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx) { CC_MD5_Final(digest, ctx); } #elif defined(WIN32) && !defined(CURL_WINDOWS_APP) #include <wincrypt.h> #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" typedef struct { |
︙ | ︙ | |||
271 272 273 274 275 276 277 | * This processes one or more 64-byte data blocks, but does NOT update * the bit counters. There are no alignment requirements. */ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size) { const unsigned char *ptr; MD5_u32plus a, b, c, d; | < > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | * This processes one or more 64-byte data blocks, but does NOT update * the bit counters. There are no alignment requirements. */ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size) { const unsigned char *ptr; MD5_u32plus a, b, c, d; ptr = (const unsigned char *)data; a = ctx->a; b = ctx->b; c = ctx->c; d = ctx->d; do { MD5_u32plus saved_a, saved_b, saved_c, saved_d; saved_a = a; saved_b = b; saved_c = c; saved_d = d; /* Round 1 */ STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7) STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12) STEP(F, c, d, a, b, SET(2), 0x242070db, 17) STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22) STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7) STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12) STEP(F, c, d, a, b, SET(6), 0xa8304613, 17) STEP(F, b, c, d, a, SET(7), 0xfd469501, 22) STEP(F, a, b, c, d, SET(8), 0x698098d8, 7) STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12) STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17) STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22) STEP(F, a, b, c, d, SET(12), 0x6b901122, 7) STEP(F, d, a, b, c, SET(13), 0xfd987193, 12) STEP(F, c, d, a, b, SET(14), 0xa679438e, 17) STEP(F, b, c, d, a, SET(15), 0x49b40821, 22) /* Round 2 */ STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5) STEP(G, d, a, b, c, GET(6), 0xc040b340, 9) STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14) STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20) STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5) STEP(G, d, a, b, c, GET(10), 0x02441453, 9) STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14) STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20) STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5) STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9) STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14) STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20) STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5) STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9) STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14) STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20) /* Round 3 */ STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4) STEP(H2, d, a, b, c, GET(8), 0x8771f681, 11) STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16) STEP(H2, b, c, d, a, GET(14), 0xfde5380c, 23) STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4) STEP(H2, d, a, b, c, GET(4), 0x4bdecfa9, 11) STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16) STEP(H2, b, c, d, a, GET(10), 0xbebfbc70, 23) STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4) STEP(H2, d, a, b, c, GET(0), 0xeaa127fa, 11) STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16) STEP(H2, b, c, d, a, GET(6), 0x04881d05, 23) STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4) STEP(H2, d, a, b, c, GET(12), 0xe6db99e5, 11) STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16) STEP(H2, b, c, d, a, GET(2), 0xc4ac5665, 23) /* Round 4 */ STEP(I, a, b, c, d, GET(0), 0xf4292244, 6) STEP(I, d, a, b, c, GET(7), 0x432aff97, 10) STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15) STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21) STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6) STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10) STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15) STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21) STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6) STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10) STEP(I, c, d, a, b, GET(6), 0xa3014314, 15) STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21) STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6) STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10) STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15) STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21) a += saved_a; b += saved_b; c += saved_c; d += saved_d; ptr += 64; } while(size -= 64); |
︙ | ︙ | |||
388 389 390 391 392 393 394 | ctx->lo = 0; ctx->hi = 0; } static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size) { MD5_u32plus saved_lo; | | | | 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 | ctx->lo = 0; ctx->hi = 0; } static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size) { MD5_u32plus saved_lo; unsigned long used; saved_lo = ctx->lo; ctx->lo = (saved_lo + size) & 0x1fffffff; if(ctx->lo < saved_lo) ctx->hi++; ctx->hi += (MD5_u32plus)size >> 29; used = saved_lo & 0x3f; if(used) { unsigned long available = 64 - used; if(size < available) { memcpy(&ctx->buffer[used], data, size); return; } memcpy(&ctx->buffer[used], data, available); |
︙ | ︙ | |||
541 542 543 544 545 546 547 | ctxt->md5_hash = md5params; (*md5params->md5_init_func)(ctxt->md5_hashctx); return ctxt; } | | | | | | | | 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 | ctxt->md5_hash = md5params; (*md5params->md5_init_func)(ctxt->md5_hashctx); return ctxt; } CURLcode Curl_MD5_update(MD5_context *context, const unsigned char *data, unsigned int len) { (*context->md5_hash->md5_update_func)(context->md5_hashctx, data, len); return CURLE_OK; } CURLcode Curl_MD5_final(MD5_context *context, unsigned char *result) { (*context->md5_hash->md5_final_func)(result, context->md5_hashctx); free(context->md5_hashctx); free(context); return CURLE_OK; } #endif /* CURL_DISABLE_CRYPTO_AUTH */ |
Changes to jni/curl/lib/memdebug.c.
︙ | ︙ | |||
110 111 112 113 114 115 116 | if(!curl_dbg_logfile) { if(logname && *logname) curl_dbg_logfile = fopen(logname, FOPEN_WRITETEXT); else curl_dbg_logfile = stderr; #ifdef MEMDEBUG_LOG_SYNC /* Flush the log file after every line so the log isn't lost in a crash */ | | | | 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | if(!curl_dbg_logfile) { if(logname && *logname) curl_dbg_logfile = fopen(logname, FOPEN_WRITETEXT); else curl_dbg_logfile = stderr; #ifdef MEMDEBUG_LOG_SYNC /* Flush the log file after every line so the log isn't lost in a crash */ if(curl_dbg_logfile) setbuf(curl_dbg_logfile, (char *)NULL); #endif } } /* This function sets the number of malloc() calls that should return successfully! */ void curl_dbg_memlimit(long limit) |
︙ | ︙ | |||
302 303 304 305 306 307 308 | } return NULL; } void curl_dbg_free(void *ptr, int line, const char *source) { | < < > | 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 | } return NULL; } void curl_dbg_free(void *ptr, int line, const char *source) { if(ptr) { struct memdebug *mem; #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:1684) /* 1684: conversion from pointer to same-sized integral type */ #endif |
︙ | ︙ |
Changes to jni/curl/lib/mime.c.
︙ | ︙ | |||
25 26 27 28 29 30 31 | #include <curl/curl.h> #include "mime.h" #include "non-ascii.h" #include "urldata.h" #include "sendf.h" | | | | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <curl/curl.h> #include "mime.h" #include "non-ascii.h" #include "urldata.h" #include "sendf.h" #if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \ !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP) #if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME) #include <libgen.h> #endif #include "rand.h" #include "slist.h" |
︙ | ︙ | |||
817 818 819 820 821 822 823 | /* Readback from part. */ while(bufsize) { size_t sz = 0; struct curl_slist *hdr = (struct curl_slist *) part->state.ptr; switch(part->state.state) { case MIMESTATE_BEGIN: | | > > | | 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 | /* Readback from part. */ while(bufsize) { size_t sz = 0; struct curl_slist *hdr = (struct curl_slist *) part->state.ptr; switch(part->state.state) { case MIMESTATE_BEGIN: mimesetstate(&part->state, (part->flags & MIME_BODY_ONLY)? MIMESTATE_BODY: MIMESTATE_CURLHEADERS, part->curlheaders); break; case MIMESTATE_USERHEADERS: if(!hdr) { mimesetstate(&part->state, MIMESTATE_EOH, NULL); break; } if(match_header(hdr, "Content-Type", 12)) { |
︙ | ︙ | |||
1895 1896 1897 1898 1899 1900 1901 | { (void) part; (void) headers; (void) take_ownership; return CURLE_NOT_BUILT_IN; } | < < < < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1897 1898 1899 1900 1901 1902 1903 1904 | { (void) part; (void) headers; (void) take_ownership; return CURLE_NOT_BUILT_IN; } #endif /* if disabled */ |
Changes to jni/curl/lib/mime.h.
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 27 28 29 30 | * 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. * ***************************************************************************/ #define MIME_RAND_BOUNDARY_CHARS 16 /* Nb. of random boundary chars. */ #define MAX_ENCODED_LINE_LENGTH 76 /* Maximum encoded line length. */ #define ENCODING_BUFFER_SIZE 256 /* Encoding temp buffers size. */ /* Part flags. */ #define MIME_USERHEADERS_OWNER (1 << 0) | > > | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #define MIME_RAND_BOUNDARY_CHARS 16 /* Nb. of random boundary chars. */ #define MAX_ENCODED_LINE_LENGTH 76 /* Maximum encoded line length. */ #define ENCODING_BUFFER_SIZE 256 /* Encoding temp buffers size. */ /* Part flags. */ #define MIME_USERHEADERS_OWNER (1 << 0) |
︙ | ︙ | |||
65 66 67 68 69 70 71 | MIMESTRATEGY_LAST }; /* Content transfer encoder. */ typedef struct { const char * name; /* Encoding name. */ size_t (*encodefunc)(char *buffer, size_t size, bool ateof, | | | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | MIMESTRATEGY_LAST }; /* Content transfer encoder. */ typedef struct { const char * name; /* Encoding name. */ size_t (*encodefunc)(char *buffer, size_t size, bool ateof, curl_mimepart *part); /* Encoded read. */ curl_off_t (*sizefunc)(curl_mimepart *part); /* Encoded size. */ } mime_encoder; /* Content transfer encoder state. */ typedef struct { size_t pos; /* Position on output line. */ size_t bufbeg; /* Next data index in input buffer. */ |
︙ | ︙ | |||
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 | curl_off_t datasize; /* Expected data size. */ unsigned int flags; /* Flags. */ mime_state state; /* Current readback state. */ const mime_encoder *encoder; /* Content data encoder. */ mime_encoder_state encstate; /* Data encoder state. */ }; /* Prototypes. */ void Curl_mime_initpart(curl_mimepart *part, struct Curl_easy *easy); void Curl_mime_cleanpart(curl_mimepart *part); CURLcode Curl_mime_duppart(curl_mimepart *dst, const curl_mimepart *src); CURLcode Curl_mime_set_subparts(curl_mimepart *part, curl_mime *subparts, int take_ownership); CURLcode Curl_mime_prepare_headers(curl_mimepart *part, const char *contenttype, const char *disposition, enum mimestrategy strategy); curl_off_t Curl_mime_size(curl_mimepart *part); size_t Curl_mime_read(char *buffer, size_t size, size_t nitems, void *instream); CURLcode Curl_mime_rewind(curl_mimepart *part); CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...); const char *Curl_mime_contenttype(const char *filename); #endif /* HEADER_CURL_MIME_H */ | > > > > > > > > > > > > > > > > | 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 | curl_off_t datasize; /* Expected data size. */ unsigned int flags; /* Flags. */ mime_state state; /* Current readback state. */ const mime_encoder *encoder; /* Content data encoder. */ mime_encoder_state encstate; /* Data encoder state. */ }; #if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \ !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP) /* Prototypes. */ void Curl_mime_initpart(curl_mimepart *part, struct Curl_easy *easy); void Curl_mime_cleanpart(curl_mimepart *part); CURLcode Curl_mime_duppart(curl_mimepart *dst, const curl_mimepart *src); CURLcode Curl_mime_set_subparts(curl_mimepart *part, curl_mime *subparts, int take_ownership); CURLcode Curl_mime_prepare_headers(curl_mimepart *part, const char *contenttype, const char *disposition, enum mimestrategy strategy); curl_off_t Curl_mime_size(curl_mimepart *part); size_t Curl_mime_read(char *buffer, size_t size, size_t nitems, void *instream); CURLcode Curl_mime_rewind(curl_mimepart *part); CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...); const char *Curl_mime_contenttype(const char *filename); #else /* if disabled */ #define Curl_mime_initpart(x,y) #define Curl_mime_cleanpart(x) #define Curl_mime_duppart(x,y) CURLE_OK /* Nothing to duplicate. Succeed */ #define Curl_mime_set_subparts(a,b,c) CURLE_NOT_BUILT_IN #define Curl_mime_prepare_headers(a,b,c,d) CURLE_NOT_BUILT_IN #define Curl_mime_size(x) (curl_off_t) -1 #define Curl_mime_read NULL #define Curl_mime_rewind(x) ((void)x, CURLE_NOT_BUILT_IN) #define Curl_mime_add_header(x,y,...) CURLE_NOT_BUILT_IN #endif #endif /* HEADER_CURL_MIME_H */ |
Changes to jni/curl/lib/multi.c.
︙ | ︙ | |||
37 38 39 40 41 42 43 | #include "timeval.h" #include "http.h" #include "select.h" #include "warnless.h" #include "speedcheck.h" #include "conncache.h" #include "multihandle.h" | < | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include "timeval.h" #include "http.h" #include "select.h" #include "warnless.h" #include "speedcheck.h" #include "conncache.h" #include "multihandle.h" #include "sigpipe.h" #include "vtls/vtls.h" #include "connect.h" #include "http_proxy.h" #include "http2.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" |
︙ | ︙ | |||
88 89 90 91 92 93 94 | "CONNECT_PEND", "CONNECT", "WAITRESOLVE", "WAITCONNECT", "WAITPROXYCONNECT", "SENDPROTOCONNECT", "PROTOCONNECT", | < < | 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | "CONNECT_PEND", "CONNECT", "WAITRESOLVE", "WAITCONNECT", "WAITPROXYCONNECT", "SENDPROTOCONNECT", "PROTOCONNECT", "DO", "DOING", "DO_MORE", "DO_DONE", "PERFORM", "TOOFAST", "DONE", "COMPLETED", "MSGSENT", }; #endif |
︙ | ︙ | |||
132 133 134 135 136 137 138 | NULL, /* CONNECT_PEND */ Curl_init_CONNECT, /* CONNECT */ NULL, /* WAITRESOLVE */ NULL, /* WAITCONNECT */ NULL, /* WAITPROXYCONNECT */ NULL, /* SENDPROTOCONNECT */ NULL, /* PROTOCONNECT */ | < < | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | NULL, /* CONNECT_PEND */ Curl_init_CONNECT, /* CONNECT */ NULL, /* WAITRESOLVE */ NULL, /* WAITCONNECT */ NULL, /* WAITPROXYCONNECT */ NULL, /* SENDPROTOCONNECT */ NULL, /* PROTOCONNECT */ Curl_connect_free, /* DO */ NULL, /* DOING */ NULL, /* DO_MORE */ NULL, /* DO_DONE */ NULL, /* PERFORM */ NULL, /* TOOFAST */ NULL, /* DONE */ Curl_init_completed, /* COMPLETED */ NULL /* MSGSENT */ }; |
︙ | ︙ | |||
345 346 347 348 349 350 351 | if(Curl_conncache_init(&multi->conn_cache, chashsize)) goto error; Curl_llist_init(&multi->msglist, multi_freeamsg); Curl_llist_init(&multi->pending, multi_freeamsg); | < < < | 340 341 342 343 344 345 346 347 348 349 350 351 352 353 | if(Curl_conncache_init(&multi->conn_cache, chashsize)) goto error; Curl_llist_init(&multi->msglist, multi_freeamsg); Curl_llist_init(&multi->pending, multi_freeamsg); /* -1 means it not set by user, use the default value */ multi->maxconnects = -1; return multi; error: Curl_hash_destroy(&multi->sockhash); |
︙ | ︙ | |||
404 405 406 407 408 409 410 | */ if(data->set.errorbuffer) data->set.errorbuffer[0] = 0; /* set the easy handle */ multistate(data, CURLM_STATE_INIT); | < < < < < < < < < < | < < < < | < | 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 | */ if(data->set.errorbuffer) data->set.errorbuffer[0] = 0; /* set the easy handle */ multistate(data, CURLM_STATE_INIT); /* for multi interface connections, we share DNS cache automatically if the easy handle's one is currently not set. */ if(!data->dns.hostcache || (data->dns.hostcachetype == HCACHE_NONE)) { data->dns.hostcache = &multi->hostcache; data->dns.hostcachetype = HCACHE_MULTI; } /* Point to the shared or multi handle connection cache */ if(data->share && (data->share->specifier & (1<< CURL_LOCK_DATA_CONNECT))) data->state.conn_cache = &data->share->conn_cache; else data->state.conn_cache = &multi->conn_cache; #ifdef USE_LIBPSL /* Do the same for PSL. */ if(data->share && (data->share->specifier & (1 << CURL_LOCK_DATA_PSL))) data->psl = &data->share->psl; else data->psl = &multi->psl; #endif /* We add the new entry last in the list. */ data->next = NULL; /* end of the line */ if(multi->easyp) { struct Curl_easy *last = multi->easylp; last->next = data; data->prev = last; multi->easylp = data; /* the new last node */ } |
︙ | ︙ | |||
493 494 495 496 497 498 499 | closure handle always has the same timeouts as the most recently added easy handle. */ data->state.conn_cache->closure_handle->set.timeout = data->set.timeout; data->state.conn_cache->closure_handle->set.server_response_timeout = data->set.server_response_timeout; data->state.conn_cache->closure_handle->set.no_signal = data->set.no_signal; | < < | 470 471 472 473 474 475 476 477 478 479 480 481 482 483 | closure handle always has the same timeouts as the most recently added easy handle. */ data->state.conn_cache->closure_handle->set.timeout = data->set.timeout; data->state.conn_cache->closure_handle->set.server_response_timeout = data->set.server_response_timeout; data->state.conn_cache->closure_handle->set.no_signal = data->set.no_signal; update_timer(multi); return CURLM_OK; } #if 0 /* Debug-function, used like this: |
︙ | ︙ | |||
534 535 536 537 538 539 540 | if(data->state.done) /* Stop if multi_done() has already been called */ return CURLE_OK; /* Stop the resolver and free its own resources (but not dns_entry yet). */ Curl_resolver_kill(conn); | < < | 509 510 511 512 513 514 515 516 517 518 519 520 521 522 | if(data->state.done) /* Stop if multi_done() has already been called */ return CURLE_OK; /* Stop the resolver and free its own resources (but not dns_entry yet). */ Curl_resolver_kill(conn); /* Cleanup possible redirect junk */ Curl_safefree(data->req.newurl); Curl_safefree(data->req.location); switch(status) { case CURLE_ABORTED_BY_CALLBACK: case CURLE_READ_ERROR: |
︙ | ︙ | |||
569 570 571 572 573 574 575 | CURLcode rc = Curl_pgrsDone(conn); if(!result && rc) result = CURLE_ABORTED_BY_CALLBACK; } process_pending_handles(data->multi); /* connection / multiplex */ | < < | > > | | | 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 | CURLcode rc = Curl_pgrsDone(conn); if(!result && rc) result = CURLE_ABORTED_BY_CALLBACK; } process_pending_handles(data->multi); /* connection / multiplex */ detach_connnection(data); if(CONN_INUSE(conn)) { /* Stop if still used. */ DEBUGF(infof(data, "Connection still in use %zu, " "no more multi_done now!\n", conn->easyq.size)); return CURLE_OK; } data->state.done = TRUE; /* called just now! */ if(conn->dns_entry) { Curl_resolv_unlock(data, conn->dns_entry); /* done with this */ |
︙ | ︙ | |||
611 612 613 614 615 616 617 | state it is for re-using, so we're forced to close it. In a perfect world we can add code that keep track of if we really must close it here or not, but currently we have no such detail knowledge. */ if((data->set.reuse_forbid #if defined(USE_NTLM) | | | | | | 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 | state it is for re-using, so we're forced to close it. In a perfect world we can add code that keep track of if we really must close it here or not, but currently we have no such detail knowledge. */ if((data->set.reuse_forbid #if defined(USE_NTLM) && !(conn->http_ntlm_state == NTLMSTATE_TYPE2 || conn->proxy_ntlm_state == NTLMSTATE_TYPE2) #endif #if defined(USE_SPNEGO) && !(conn->http_negotiate_state == GSS_AUTHRECV || conn->proxy_negotiate_state == GSS_AUTHRECV) #endif ) || conn->bits.close || (premature && !(conn->handler->flags & PROTOPT_STREAM))) { CURLcode res2 = Curl_disconnect(data, conn, premature); /* If we had an error already, make sure we return that one. But if we got a new error, return that. */ |
︙ | ︙ | |||
648 649 650 651 652 653 654 | data->state.lastconnect = conn; infof(data, "%s\n", buffer); } else data->state.lastconnect = NULL; } | < | 621 622 623 624 625 626 627 628 629 630 631 632 633 634 | data->state.lastconnect = conn; infof(data, "%s\n", buffer); } else data->state.lastconnect = NULL; } Curl_free_request_state(data); return result; } CURLMcode curl_multi_remove_handle(struct Curl_multi *multi, struct Curl_easy *data) { |
︙ | ︙ | |||
694 695 696 697 698 699 700 | if(data->conn && data->mstate > CURLM_STATE_DO && data->mstate < CURLM_STATE_COMPLETED) { /* Set connection owner so that the DONE function closes it. We can safely do this here since connection is killed. */ data->conn->data = easy; | < < < | 666 667 668 669 670 671 672 673 674 675 676 677 678 679 | if(data->conn && data->mstate > CURLM_STATE_DO && data->mstate < CURLM_STATE_COMPLETED) { /* Set connection owner so that the DONE function closes it. We can safely do this here since connection is killed. */ data->conn->data = easy; streamclose(data->conn, "Removed with partial response"); easy_owns_conn = TRUE; } /* The timer must be shut down before data->multi is set to NULL, else the timenode will remain in the splay tree after curl_easy_cleanup is called. */ |
︙ | ︙ | |||
719 720 721 722 723 724 725 | /* multi_done() clears the conn->data field to lose the association between the easy handle and the connection Note that this ignores the return code simply because there's nothing really useful to do with it anyway! */ (void)multi_done(data, data->result, premature); } | < < < | 688 689 690 691 692 693 694 695 696 697 698 699 700 701 | /* multi_done() clears the conn->data field to lose the association between the easy handle and the connection Note that this ignores the return code simply because there's nothing really useful to do with it anyway! */ (void)multi_done(data, data->result, premature); } } if(data->connect_queue.ptr) /* the handle was in the pending list waiting for an available connection, so go ahead and remove it */ Curl_llist_remove(&multi->pending, &data->connect_queue, NULL); |
︙ | ︙ | |||
799 800 801 802 803 804 805 | We do not touch the easy handle here! */ multi->num_easy--; /* one less to care about now */ update_timer(multi); return CURLM_OK; } | | | | > > > > > > | 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 | We do not touch the easy handle here! */ multi->num_easy--; /* one less to care about now */ update_timer(multi); return CURLM_OK; } /* Return TRUE if the application asked for multiplexing */ bool Curl_multiplex_wanted(const struct Curl_multi *multi) { return (multi && (multi->multiplexing)); } /* This is the only function that should clear data->conn. This will occasionally be called with the pointer already cleared. */ static void detach_connnection(struct Curl_easy *data) { struct connectdata *conn = data->conn; if(conn) Curl_llist_remove(&conn->easyq, &data->conn_queue, NULL); data->conn = NULL; } /* This is the only function that should assign data->conn */ void Curl_attach_connnection(struct Curl_easy *data, struct connectdata *conn) { DEBUGASSERT(!data->conn); DEBUGASSERT(conn); data->conn = conn; Curl_llist_insert_next(&conn->easyq, conn->easyq.tail, data, &data->conn_queue); } static int waitconnect_getsock(struct connectdata *conn, curl_socket_t *sock, int numsocks) { int i; |
︙ | ︙ | |||
931 932 933 934 935 936 937 | case CURLM_STATE_DO_MORE: return domore_getsock(data->conn, socks, numsocks); case CURLM_STATE_DO_DONE: /* since is set after DO is completed, we switch to waiting for the same as the *PERFORM states */ case CURLM_STATE_PERFORM: | < | 903 904 905 906 907 908 909 910 911 912 913 914 915 916 | case CURLM_STATE_DO_MORE: return domore_getsock(data->conn, socks, numsocks); case CURLM_STATE_DO_DONE: /* since is set after DO is completed, we switch to waiting for the same as the *PERFORM states */ case CURLM_STATE_PERFORM: return Curl_single_getsock(data->conn, socks, numsocks); } } CURLMcode curl_multi_fdset(struct Curl_multi *multi, fd_set *read_fd_set, fd_set *write_fd_set, |
︙ | ︙ | |||
1199 1200 1201 1202 1203 1204 1205 | return rc; } /* * do_complete is called when the DO actions are complete. * * We init chunking and trailer bits to their default values here immediately | | > > > < < | 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 | return rc; } /* * do_complete is called when the DO actions are complete. * * We init chunking and trailer bits to their default values here immediately * before receiving any header data for the current request. */ static void do_complete(struct connectdata *conn) { conn->data->req.chunk = FALSE; Curl_pgrsTime(conn->data, TIMER_PRETRANSFER); } static CURLcode multi_do(struct Curl_easy *data, bool *done) { CURLcode result = CURLE_OK; struct connectdata *conn = data->conn; DEBUGASSERT(conn); DEBUGASSERT(conn->handler); if(conn->handler->do_it) { /* generic protocol-specific function pointer set in curl_connect() */ result = conn->handler->do_it(conn, done); if(!result && *done) /* do_complete must be called after the protocol-specific DO function */ do_complete(conn); } return result; } /* * multi_do_more() is called during the DO_MORE multi state. It is basically a * second stage DO state which (wrongly) was introduced to support FTP's * second connection. * * 'complete' can return 0 for incomplete, 1 for done and -1 for go back to * DOING state there's more work to do! */ static CURLcode multi_do_more(struct connectdata *conn, int *complete) { CURLcode result = CURLE_OK; |
︙ | ︙ | |||
1262 1263 1264 1265 1266 1267 1268 | bool connected; bool async; bool protocol_connect = FALSE; bool dophase_done = FALSE; bool done = FALSE; CURLMcode rc; CURLcode result = CURLE_OK; | < | 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 | bool connected; bool async; bool protocol_connect = FALSE; bool dophase_done = FALSE; bool done = FALSE; CURLMcode rc; CURLcode result = CURLE_OK; timediff_t timeout_ms; timediff_t recv_timeout_ms; timediff_t send_timeout_ms; int control; if(!GOOD_EASY_HANDLE(data)) return CURLM_BAD_EASY_HANDLE; |
︙ | ︙ | |||
1289 1290 1291 1292 1293 1294 1295 | analyzers. */ failf(data, "In state %d with no conn, bail out!\n", data->mstate); return CURLM_INTERNAL_ERROR; } if(multi_ischanged(multi, TRUE)) { DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!\n")); | | | | | 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 | analyzers. */ failf(data, "In state %d with no conn, bail out!\n", data->mstate); return CURLM_INTERNAL_ERROR; } if(multi_ischanged(multi, TRUE)) { DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!\n")); process_pending_handles(multi); /* multiplexed */ } if(data->conn && data->mstate > CURLM_STATE_CONNECT && data->mstate < CURLM_STATE_COMPLETED) { /* Make sure we set the connection's current owner */ data->conn->data = data; } if(data->conn && (data->mstate >= CURLM_STATE_CONNECT) && (data->mstate < CURLM_STATE_COMPLETED)) { /* we need to wait for the connect state as only then is the start time stored, but we must not check already completed handles */ timeout_ms = Curl_timeleft(data, &now, (data->mstate <= CURLM_STATE_DO)? TRUE:FALSE); if(timeout_ms < 0) { /* Handle timed out */ if(data->mstate == CURLM_STATE_WAITRESOLVE) failf(data, "Resolving timed out after %" CURL_FORMAT_TIMEDIFF_T " milliseconds", Curl_timediff(now, data->progress.t_startsingle)); else if(data->mstate == CURLM_STATE_WAITCONNECT) failf(data, "Connection timed out after %" CURL_FORMAT_TIMEDIFF_T " milliseconds", Curl_timediff(now, data->progress.t_startsingle)); else { struct SingleRequest *k = &data->req; if(k->size != -1) { failf(data, "Operation timed out after %" CURL_FORMAT_TIMEDIFF_T " milliseconds with %" CURL_FORMAT_CURL_OFF_T " out of %" CURL_FORMAT_CURL_OFF_T " bytes received", Curl_timediff(now, data->progress.t_startsingle), k->bytecount, k->size); } |
︙ | ︙ | |||
1386 1387 1388 1389 1390 1391 1392 | /* add this handle to the list of connect-pending handles */ Curl_llist_insert_next(&multi->pending, multi->pending.tail, data, &data->connect_queue); result = CURLE_OK; break; } | > > > > | > < < < < < | | | | | | | | | | < | | | | | < > | 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 | /* add this handle to the list of connect-pending handles */ Curl_llist_insert_next(&multi->pending, multi->pending.tail, data, &data->connect_queue); result = CURLE_OK; break; } else if(data->state.previouslypending) { /* this transfer comes from the pending queue so try move another */ infof(data, "Transfer was pending, now try another\n"); process_pending_handles(data->multi); } if(!result) { if(async) /* We're now waiting for an asynchronous name lookup */ multistate(data, CURLM_STATE_WAITRESOLVE); else { /* after the connect has been sent off, go WAITCONNECT unless the protocol connect is already done and we can go directly to WAITDO or DO! */ rc = CURLM_CALL_MULTI_PERFORM; if(protocol_connect) multistate(data, CURLM_STATE_DO); else { #ifndef CURL_DISABLE_HTTP if(Curl_connect_ongoing(data->conn)) multistate(data, CURLM_STATE_WAITPROXYCONNECT); else #endif multistate(data, CURLM_STATE_WAITCONNECT); } } } break; case CURLM_STATE_WAITRESOLVE: /* awaiting an asynch name resolve to complete */ { struct Curl_dns_entry *dns = NULL; struct connectdata *conn = data->conn; const char *hostname; DEBUGASSERT(conn); if(conn->bits.httpproxy) hostname = conn->http_proxy.host.name; else if(conn->bits.conn_to_host) hostname = conn->conn_to_host.name; else hostname = conn->host.name; |
︙ | ︙ | |||
1463 1464 1465 1466 1467 1468 1469 | /* Perform the next step in the connection phase, and then move on to the WAITCONNECT state */ result = Curl_once_resolved(data->conn, &protocol_connect); if(result) /* if Curl_once_resolved() returns failure, the connection struct is already freed and gone */ | | | < | 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 | /* Perform the next step in the connection phase, and then move on to the WAITCONNECT state */ result = Curl_once_resolved(data->conn, &protocol_connect); if(result) /* if Curl_once_resolved() returns failure, the connection struct is already freed and gone */ data->conn = NULL; /* no more connection */ else { /* call again please so that we get the next socket setup */ rc = CURLM_CALL_MULTI_PERFORM; if(protocol_connect) multistate(data, CURLM_STATE_DO); else { #ifndef CURL_DISABLE_HTTP if(Curl_connect_ongoing(data->conn)) multistate(data, CURLM_STATE_WAITPROXYCONNECT); else #endif multistate(data, CURLM_STATE_WAITCONNECT); |
︙ | ︙ | |||
1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 | } } break; #ifndef CURL_DISABLE_HTTP case CURLM_STATE_WAITPROXYCONNECT: /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */ result = Curl_http_connect(data->conn, &protocol_connect); if(data->conn->bits.proxy_connect_closed) { rc = CURLM_CALL_MULTI_PERFORM; /* connect back to proxy again */ result = CURLE_OK; multi_done(data, CURLE_OK, FALSE); | > | 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 | } } break; #ifndef CURL_DISABLE_HTTP case CURLM_STATE_WAITPROXYCONNECT: /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */ DEBUGASSERT(data->conn); result = Curl_http_connect(data->conn, &protocol_connect); if(data->conn->bits.proxy_connect_closed) { rc = CURLM_CALL_MULTI_PERFORM; /* connect back to proxy again */ result = CURLE_OK; multi_done(data, CURLE_OK, FALSE); |
︙ | ︙ | |||
1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 | else if(result) stream_error = TRUE; break; #endif case CURLM_STATE_WAITCONNECT: /* awaiting a completion of an asynch TCP connect */ result = Curl_is_connected(data->conn, FIRSTSOCKET, &connected); if(connected && !result) { #ifndef CURL_DISABLE_HTTP if((data->conn->http_proxy.proxytype == CURLPROXY_HTTPS && !data->conn->bits.proxy_ssl_connected[FIRSTSOCKET]) || Curl_connect_ongoing(data->conn)) { multistate(data, CURLM_STATE_WAITPROXYCONNECT); | > | 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 | else if(result) stream_error = TRUE; break; #endif case CURLM_STATE_WAITCONNECT: /* awaiting a completion of an asynch TCP connect */ DEBUGASSERT(data->conn); result = Curl_is_connected(data->conn, FIRSTSOCKET, &connected); if(connected && !result) { #ifndef CURL_DISABLE_HTTP if((data->conn->http_proxy.proxytype == CURLPROXY_HTTPS && !data->conn->bits.proxy_ssl_connected[FIRSTSOCKET]) || Curl_connect_ongoing(data->conn)) { multistate(data, CURLM_STATE_WAITPROXYCONNECT); |
︙ | ︙ | |||
1548 1549 1550 1551 1552 1553 1554 | case CURLM_STATE_SENDPROTOCONNECT: result = Curl_protocol_connect(data->conn, &protocol_connect); if(!result && !protocol_connect) /* switch to waiting state */ multistate(data, CURLM_STATE_PROTOCONNECT); else if(!result) { /* protocol connect has completed, go WAITDO or DO */ | | < | < < < < < < < < < < > > | 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 | case CURLM_STATE_SENDPROTOCONNECT: result = Curl_protocol_connect(data->conn, &protocol_connect); if(!result && !protocol_connect) /* switch to waiting state */ multistate(data, CURLM_STATE_PROTOCONNECT); else if(!result) { /* protocol connect has completed, go WAITDO or DO */ multistate(data, CURLM_STATE_DO); rc = CURLM_CALL_MULTI_PERFORM; } else if(result) { /* failure detected */ Curl_posttransfer(data); multi_done(data, result, TRUE); stream_error = TRUE; } break; case CURLM_STATE_PROTOCONNECT: /* protocol-specific connect phase */ result = Curl_protocol_connecting(data->conn, &protocol_connect); if(!result && protocol_connect) { /* after the connect has completed, go WAITDO or DO */ multistate(data, CURLM_STATE_DO); rc = CURLM_CALL_MULTI_PERFORM; } else if(result) { /* failure detected */ Curl_posttransfer(data); multi_done(data, result, TRUE); stream_error = TRUE; } break; case CURLM_STATE_DO: if(data->set.connect_only) { /* keep connection open for application to use the socket */ connkeep(data->conn, "CONNECT_ONLY"); multistate(data, CURLM_STATE_DONE); result = CURLE_OK; rc = CURLM_CALL_MULTI_PERFORM; } else { /* Perform the protocol's DO action */ result = multi_do(data, &dophase_done); /* When multi_do() returns failure, data->conn might be NULL! */ if(!result) { if(!dophase_done) { #ifndef CURL_DISABLE_FTP /* some steps needed for wildcard matching */ if(data->state.wildcardmatch) { struct WildcardData *wc = &data->wildcard; if(wc->state == CURLWC_DONE || wc->state == CURLWC_SKIP) { /* skip some states if it is important */ multi_done(data, CURLE_OK, FALSE); multistate(data, CURLM_STATE_DONE); rc = CURLM_CALL_MULTI_PERFORM; break; } } #endif /* DO was not completed in one function call, we must continue DOING... */ multistate(data, CURLM_STATE_DOING); rc = CURLM_OK; } /* after DO, go DO_DONE... or DO_MORE */ |
︙ | ︙ | |||
1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 | stream_error = TRUE; } } break; case CURLM_STATE_DOING: /* we continue DOING until the DO phase is complete */ result = Curl_protocol_doing(data->conn, &dophase_done); if(!result) { if(dophase_done) { /* after DO, go DO_DONE or DO_MORE */ multistate(data, data->conn->bits.do_more? CURLM_STATE_DO_MORE: | > | 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 | stream_error = TRUE; } } break; case CURLM_STATE_DOING: /* we continue DOING until the DO phase is complete */ DEBUGASSERT(data->conn); result = Curl_protocol_doing(data->conn, &dophase_done); if(!result) { if(dophase_done) { /* after DO, go DO_DONE or DO_MORE */ multistate(data, data->conn->bits.do_more? CURLM_STATE_DO_MORE: |
︙ | ︙ | |||
1715 1716 1717 1718 1719 1720 1721 1722 1723 | } break; case CURLM_STATE_DO_MORE: /* * When we are connected, DO MORE and then go DO_DONE */ result = multi_do_more(data->conn, &control); | > < < | 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 | } break; case CURLM_STATE_DO_MORE: /* * When we are connected, DO MORE and then go DO_DONE */ DEBUGASSERT(data->conn); result = multi_do_more(data->conn, &control); if(!result) { if(control) { /* if positive, advance to DO_DONE if negative, go back to DOING */ multistate(data, control == 1? CURLM_STATE_DO_DONE: CURLM_STATE_DOING); |
︙ | ︙ | |||
1741 1742 1743 1744 1745 1746 1747 | Curl_posttransfer(data); multi_done(data, result, FALSE); stream_error = TRUE; } break; case CURLM_STATE_DO_DONE: | < < | | | | > | > < < < < < < < < < > | 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 | Curl_posttransfer(data); multi_done(data, result, FALSE); stream_error = TRUE; } break; case CURLM_STATE_DO_DONE: DEBUGASSERT(data->conn); if(data->conn->bits.multiplex) /* Check if we can move pending requests to send pipe */ process_pending_handles(multi); /* multiplexed */ /* Only perform the transfer if there's a good socket to work with. Having both BAD is a signal to skip immediately to DONE */ if((data->conn->sockfd != CURL_SOCKET_BAD) || (data->conn->writesockfd != CURL_SOCKET_BAD)) multistate(data, CURLM_STATE_PERFORM); else { #ifndef CURL_DISABLE_FTP if(data->state.wildcardmatch && ((data->conn->handler->flags & PROTOPT_WILDCARD) == 0)) { data->wildcard.state = CURLWC_DONE; } #endif multistate(data, CURLM_STATE_DONE); } rc = CURLM_CALL_MULTI_PERFORM; break; case CURLM_STATE_TOOFAST: /* limit-rate exceeded in either direction */ DEBUGASSERT(data->conn); /* if both rates are within spec, resume transfer */ if(Curl_pgrsUpdate(data->conn)) result = CURLE_ABORTED_BY_CALLBACK; else result = Curl_speedcheck(data, now); if(!result) { |
︙ | ︙ | |||
1846 1847 1848 1849 1850 1851 1852 | Curl_expire(data, recv_timeout_ms, EXPIRE_TOOFAST); break; } /* read/write data if it is ready to do so */ result = Curl_readwrite(data->conn, data, &done, &comeback); | < < < < < < < < < < < < | > | | | > | < < | | < | | > > > | 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 | Curl_expire(data, recv_timeout_ms, EXPIRE_TOOFAST); break; } /* read/write data if it is ready to do so */ result = Curl_readwrite(data->conn, data, &done, &comeback); if(done || (result == CURLE_RECV_ERROR)) { /* If CURLE_RECV_ERROR happens early enough, we assume it was a race * condition and the server closed the re-used connection exactly when * we wanted to use it, so figure out if that is indeed the case. */ CURLcode ret = Curl_retry_request(data->conn, &newurl); if(!ret) retry = (newurl)?TRUE:FALSE; else if(!result) result = ret; if(retry) { /* if we are to retry, set the result to OK and consider the request as done */ result = CURLE_OK; done = TRUE; } } else if((CURLE_HTTP2_STREAM == result) && Curl_h2_http_1_1_error(data->conn)) { CURLcode ret = Curl_retry_request(data->conn, &newurl); if(!ret) { infof(data, "Downgrades to HTTP/1.1!\n"); data->set.httpversion = CURL_HTTP_VERSION_1_1; /* clear the error message bit too as we ignore the one we got */ data->state.errorbuf = FALSE; if(!newurl) /* typically for HTTP_1_1_REQUIRED error on first flight */ newurl = strdup(data->change.url); /* if we are to retry, set the result to OK and consider the request as done */ retry = TRUE; result = CURLE_OK; done = TRUE; } else result = ret; } if(result) { /* * The transfer phase returned error, we mark the connection to get * closed to prevent being re-used. This is because we can't possibly * know if the connection is in a good shape or not now. Unless it is |
︙ | ︙ | |||
1918 1919 1920 1921 1922 1923 1924 | } else if(done) { followtype follow = FOLLOW_NONE; /* call this even if the readwrite function returned error */ Curl_posttransfer(data); | < < < < < < < | | | | | | < | 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 | } else if(done) { followtype follow = FOLLOW_NONE; /* call this even if the readwrite function returned error */ Curl_posttransfer(data); /* When we follow redirects or is set to retry the connection, we must to go back to the CONNECT state */ if(data->req.newurl || retry) { if(!retry) { /* if the URL is a follow-location and not just a retried request then figure out the URL here */ free(newurl); newurl = data->req.newurl; data->req.newurl = NULL; follow = FOLLOW_REDIR; } else follow = FOLLOW_RETRY; (void)multi_done(data, CURLE_OK, FALSE); /* multi_done() might return CURLE_GOT_NOTHING */ result = Curl_follow(data, newurl, follow); if(!result) { multistate(data, CURLM_STATE_CONNECT); rc = CURLM_CALL_MULTI_PERFORM; } free(newurl); } else { /* after the transfer is done, go DONE */ /* but first check to see if we got a location info even though we're |
︙ | ︙ | |||
1983 1984 1985 1986 1987 1988 1989 | case CURLM_STATE_DONE: /* this state is highly transient, so run another loop after this */ rc = CURLM_CALL_MULTI_PERFORM; if(data->conn) { CURLcode res; | < < < | | | > | | 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 | case CURLM_STATE_DONE: /* this state is highly transient, so run another loop after this */ rc = CURLM_CALL_MULTI_PERFORM; if(data->conn) { CURLcode res; if(data->conn->bits.multiplex) /* Check if we can move pending requests to connection */ process_pending_handles(multi); /* multiplexing */ /* post-transfer command */ res = multi_done(data, result, FALSE); /* allow a previously set error code take precedence */ if(!result) result = res; /* * If there are other handles on the connection, multi_done won't set * conn to NULL. In such a case, curl_multi_remove_handle() can * access free'd data, if the connection is free'd and the handle * removed before we perform the processing in CURLM_STATE_COMPLETED */ if(data->conn) detach_connnection(data); } #ifndef CURL_DISABLE_FTP if(data->state.wildcardmatch) { if(data->wildcard.state != CURLWC_DONE) { /* if a wildcard is set and we are not ending -> lets start again with CURLM_STATE_INIT */ multistate(data, CURLM_STATE_INIT); break; } } #endif /* after we have DONE what we're supposed to do, go COMPLETED, and it doesn't matter what the multi_done() returned! */ multistate(data, CURLM_STATE_COMPLETED); break; case CURLM_STATE_COMPLETED: break; |
︙ | ︙ | |||
2047 2048 2049 2050 2051 2052 2053 | /* NOTE: no attempt to disconnect connections must be made in the case blocks above - cleanup happens only here */ /* Check if we can move pending requests to send pipe */ process_pending_handles(multi); /* connection */ if(data->conn) { | < < < < < < | 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 | /* NOTE: no attempt to disconnect connections must be made in the case blocks above - cleanup happens only here */ /* Check if we can move pending requests to send pipe */ process_pending_handles(multi); /* connection */ if(data->conn) { if(stream_error) { /* Don't attempt to send data over a connection that timed out */ bool dead_connection = result == CURLE_OPERATION_TIMEDOUT; /* disconnect properly */ Curl_disconnect(data, data->conn, dead_connection); /* This is where we make sure that the conn pointer is reset. |
︙ | ︙ | |||
2213 2214 2215 2216 2217 2218 2219 | Curl_hash_destroy(&multi->sockhash); Curl_conncache_destroy(&multi->conn_cache); Curl_llist_destroy(&multi->msglist, NULL); Curl_llist_destroy(&multi->pending, NULL); Curl_hash_destroy(&multi->hostcache); Curl_psl_destroy(&multi->psl); | < < < < < < | 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 | Curl_hash_destroy(&multi->sockhash); Curl_conncache_destroy(&multi->conn_cache); Curl_llist_destroy(&multi->msglist, NULL); Curl_llist_destroy(&multi->pending, NULL); Curl_hash_destroy(&multi->hostcache); Curl_psl_destroy(&multi->psl); free(multi); return CURLM_OK; } return CURLM_BAD_HANDLE; } |
︙ | ︙ | |||
2571 2572 2573 2574 2575 2576 2577 | for(e = list->head; e; e = e->next) { data = (struct Curl_easy *)e->ptr; if(data->magic != CURLEASY_MAGIC_NUMBER) /* bad bad bad bad bad bad bad */ return CURLM_INTERNAL_ERROR; | < < < < < < < < < < < < < | 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 | for(e = list->head; e; e = e->next) { data = (struct Curl_easy *)e->ptr; if(data->magic != CURLEASY_MAGIC_NUMBER) /* bad bad bad bad bad bad bad */ return CURLM_INTERNAL_ERROR; if(data->conn && !(data->conn->handler->flags & PROTOPT_DIRLOCK)) /* set socket event bitmask if they're not locked */ data->conn->cselect_bits = ev_bitmask; sigpipe_ignore(data, &pipe_st); result = multi_runsingle(multi, now, data); sigpipe_restore(&pipe_st); |
︙ | ︙ | |||
2690 2691 2692 2693 2694 2695 2696 | case CURLMOPT_PUSHFUNCTION: multi->push_cb = va_arg(param, curl_push_callback); break; case CURLMOPT_PUSHDATA: multi->push_userp = va_arg(param, void *); break; case CURLMOPT_PIPELINING: | | | | > > > < < < < < < < < < | 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 | case CURLMOPT_PUSHFUNCTION: multi->push_cb = va_arg(param, curl_push_callback); break; case CURLMOPT_PUSHDATA: multi->push_userp = va_arg(param, void *); break; case CURLMOPT_PIPELINING: multi->multiplexing = va_arg(param, long) & CURLPIPE_MULTIPLEX; break; case CURLMOPT_TIMERFUNCTION: multi->timer_cb = va_arg(param, curl_multi_timer_callback); break; case CURLMOPT_TIMERDATA: multi->timer_userp = va_arg(param, void *); break; case CURLMOPT_MAXCONNECTS: multi->maxconnects = va_arg(param, long); break; case CURLMOPT_MAX_HOST_CONNECTIONS: multi->max_host_connections = va_arg(param, long); break; case CURLMOPT_MAX_TOTAL_CONNECTIONS: multi->max_total_connections = va_arg(param, long); break; /* options formerly used for pipelining */ case CURLMOPT_MAX_PIPELINE_LENGTH: break; case CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE: break; case CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE: break; case CURLMOPT_PIPELINING_SITE_BL: break; case CURLMOPT_PIPELINING_SERVER_BL: break; default: res = CURLM_UNKNOWN_OPTION; break; } va_end(param); return res; |
︙ | ︙ | |||
3075 3076 3077 3078 3079 3080 3081 | } size_t Curl_multi_max_total_connections(struct Curl_multi *multi) { return multi ? multi->max_total_connections : 0; } | < > > > | | < | < | < | < < > | | | < < | > > > | 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 | } size_t Curl_multi_max_total_connections(struct Curl_multi *multi) { return multi ? multi->max_total_connections : 0; } /* * When information about a connection has appeared, call this! */ void Curl_multiuse_state(struct connectdata *conn, int bundlestate) /* use BUNDLE_* defines */ { DEBUGASSERT(conn); DEBUGASSERT(conn->bundle); DEBUGASSERT(conn->data); DEBUGASSERT(conn->data->multi); conn->bundle->multiuse = bundlestate; process_pending_handles(conn->data->multi); } static void process_pending_handles(struct Curl_multi *multi) { struct curl_llist_element *e = multi->pending.head; if(e) { struct Curl_easy *data = e->ptr; DEBUGASSERT(data->mstate == CURLM_STATE_CONNECT_PEND); multistate(data, CURLM_STATE_CONNECT); /* Remove this node from the list */ Curl_llist_remove(&multi->pending, e, NULL); /* Make sure that the handle will be processed soonish. */ Curl_expire(data, 0, EXPIRE_RUN_NOW); /* mark this as having been in the pending queue */ data->state.previouslypending = TRUE; } } void Curl_set_in_callback(struct Curl_easy *data, bool value) { /* might get called when there is no data pointer! */ if(data) { |
︙ | ︙ | |||
3153 3154 3155 3156 3157 3158 3159 | fprintf(stderr, "%d ", (int)s); if(!entry) { fprintf(stderr, "INTERNAL CONFUSION\n"); continue; } fprintf(stderr, "[%s %s] ", | | | | 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 | fprintf(stderr, "%d ", (int)s); if(!entry) { fprintf(stderr, "INTERNAL CONFUSION\n"); continue; } fprintf(stderr, "[%s %s] ", (entry->action&CURL_POLL_IN)?"RECVING":"", (entry->action&CURL_POLL_OUT)?"SENDING":""); } if(data->numsocks) fprintf(stderr, "\n"); } } } #endif |
Changes to jni/curl/lib/multihandle.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_MULTIHANDLE_H #define HEADER_CURL_MULTIHANDLE_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_MULTIHANDLE_H #define HEADER_CURL_MULTIHANDLE_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
42 43 44 45 46 47 48 | CURLM_STATE_WAITCONNECT, /* 4 - awaiting the TCP connect to finalize */ CURLM_STATE_WAITPROXYCONNECT, /* 5 - awaiting HTTPS proxy SSL initialization to complete and/or proxy CONNECT to finalize */ CURLM_STATE_SENDPROTOCONNECT, /* 6 - initiate protocol connect procedure */ CURLM_STATE_PROTOCONNECT, /* 7 - completing the protocol-specific connect phase */ | < | | | | < | | | | | | | | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | CURLM_STATE_WAITCONNECT, /* 4 - awaiting the TCP connect to finalize */ CURLM_STATE_WAITPROXYCONNECT, /* 5 - awaiting HTTPS proxy SSL initialization to complete and/or proxy CONNECT to finalize */ CURLM_STATE_SENDPROTOCONNECT, /* 6 - initiate protocol connect procedure */ CURLM_STATE_PROTOCONNECT, /* 7 - completing the protocol-specific connect phase */ CURLM_STATE_DO, /* 8 - start send off the request (part 1) */ CURLM_STATE_DOING, /* 9 - sending off the request (part 1) */ CURLM_STATE_DO_MORE, /* 10 - send off the request (part 2) */ CURLM_STATE_DO_DONE, /* 11 - done sending off request */ CURLM_STATE_PERFORM, /* 12 - transfer data */ CURLM_STATE_TOOFAST, /* 13 - wait because limit-rate exceeded */ CURLM_STATE_DONE, /* 14 - post data transfer operation */ CURLM_STATE_COMPLETED, /* 15 - operation complete */ CURLM_STATE_MSGSENT, /* 16 - the operation complete message is sent */ CURLM_STATE_LAST /* 17 - not a true state, never use this */ } CURLMstate; /* we support N sockets per easy handle. Set the corresponding bit to what action we should wait for */ #define MAX_SOCKSPEREASYHANDLE 5 #define GETSOCK_READABLE (0x00ff) #define GETSOCK_WRITABLE (0xff00) #define CURLPIPE_ANY (CURLPIPE_MULTIPLEX) /* This is the struct known as CURLM on the outside */ struct Curl_multi { /* First a simple identifier to easier detect if a user mix up this multi handle with an easy handle. Set this to CURL_MULTI_HANDLE. */ long type; |
︙ | ︙ | |||
108 109 110 111 112 113 114 | struct Curl_tree *timetree; /* 'sockhash' is the lookup hash for socket descriptor => easy handles (note the pluralis form, there can be more than one easy handle waiting on the same actual socket) */ struct curl_hash sockhash; | | | < < < < < < < < < < < < < < < < < < | 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 | struct Curl_tree *timetree; /* 'sockhash' is the lookup hash for socket descriptor => easy handles (note the pluralis form, there can be more than one easy handle waiting on the same actual socket) */ struct curl_hash sockhash; /* multiplexing wanted */ bool multiplexing; bool recheckstate; /* see Curl_multi_connchanged */ /* Shared connection cache (bundles)*/ struct conncache conn_cache; long maxconnects; /* if >0, a fixed limit of the maximum number of entries we're allowed to grow the connection cache to */ long max_host_connections; /* if >0, a fixed limit of the maximum number of connections per host */ long max_total_connections; /* if >0, a fixed limit of the maximum number of connections in total */ /* timer callback and user data pointer for the *socket() API */ curl_multi_timer_callback timer_cb; void *timer_userp; struct curltime timer_lastcall; /* the fixed time for the timeout for the previous callback */ bool in_callback; /* true while executing a callback */ }; #endif /* HEADER_CURL_MULTIHANDLE_H */ |
Changes to jni/curl/lib/multiif.h.
︙ | ︙ | |||
26 27 28 29 30 31 32 | * Prototypes for library-wide functions provided by multi.c */ void Curl_updatesocket(struct Curl_easy *data); void Curl_expire(struct Curl_easy *data, time_t milli, expire_id); void Curl_expire_clear(struct Curl_easy *data); void Curl_expire_done(struct Curl_easy *data, expire_id id); | < > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | * Prototypes for library-wide functions provided by multi.c */ void Curl_updatesocket(struct Curl_easy *data); void Curl_expire(struct Curl_easy *data, time_t milli, expire_id); void Curl_expire_clear(struct Curl_easy *data); void Curl_expire_done(struct Curl_easy *data, expire_id id); void Curl_detach_connnection(struct Curl_easy *data); void Curl_attach_connnection(struct Curl_easy *data, struct connectdata *conn); 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); /* 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); |
︙ | ︙ | |||
60 61 62 63 64 65 66 | */ void Curl_multi_dump(struct Curl_multi *multi); #endif /* Return the value of the CURLMOPT_MAX_HOST_CONNECTIONS option */ size_t Curl_multi_max_host_connections(struct Curl_multi *multi); | < < < < < < < < < < < < | > | 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | */ void Curl_multi_dump(struct Curl_multi *multi); #endif /* Return the value of the CURLMOPT_MAX_HOST_CONNECTIONS option */ size_t Curl_multi_max_host_connections(struct Curl_multi *multi); /* Return the value of the CURLMOPT_MAX_TOTAL_CONNECTIONS option */ size_t Curl_multi_max_total_connections(struct Curl_multi *multi); void Curl_multiuse_state(struct connectdata *conn, int bundlestate); /* use BUNDLE_* defines */ /* * Curl_multi_closed() * * Used by the connect code to tell the multi_socket code that one of the * sockets we were using is about to be closed. This function will then * remove it from the sockethash for this handle to make the multi_socket API |
︙ | ︙ |
Changes to jni/curl/lib/netrc.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_NETRC #ifdef HAVE_PWD_H #include <pwd.h> #endif #include <curl/curl.h> #include "netrc.h" |
︙ | ︙ | |||
236 237 238 239 240 241 242 | free(password); } fclose(file); } return retcode; } | > > | 237 238 239 240 241 242 243 244 245 | free(password); } fclose(file); } return retcode; } #endif |
Changes to jni/curl/lib/netrc.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_NETRC_H #define HEADER_CURL_NETRC_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #ifndef HEADER_CURL_NETRC_H #define HEADER_CURL_NETRC_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_NETRC /* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */ int Curl_parsenetrc(const char *host, char **loginp, char **passwordp, bool *login_changed, bool *password_changed, char *filename); /* Assume: (*passwordp)[0]=0, host[0] != 0. * If (*loginp)[0] = 0, search for login and password within a machine * section in the netrc. * If (*loginp)[0] != 0, search for password within machine and login. */ #else /* disabled */ #define Curl_parsenetrc(a,b,c,d,e,f) 1 #endif #endif /* HEADER_CURL_NETRC_H */ |
Changes to jni/curl/lib/openldap.c.
︙ | ︙ | |||
192 193 194 195 196 197 198 | li = calloc(1, sizeof(ldapconninfo)); if(!li) return CURLE_OUT_OF_MEMORY; li->proto = proto; conn->proto.generic = li; connkeep(conn, "OpenLDAP default"); | < < < | 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | li = calloc(1, sizeof(ldapconninfo)); if(!li) return CURLE_OUT_OF_MEMORY; li->proto = proto; conn->proto.generic = li; connkeep(conn, "OpenLDAP default"); return CURLE_OK; } #ifdef USE_SSL static Sockbuf_IO ldapsb_tls; #endif |
︙ | ︙ | |||
506 507 508 509 510 511 512 | } else if(msgtype != LDAP_RES_SEARCH_ENTRY) continue; lr->nument++; rc = ldap_get_dn_ber(li->ld, ent, &ber, &bv); if(rc < 0) { | < < | 503 504 505 506 507 508 509 510 511 512 513 514 515 516 | } else if(msgtype != LDAP_RES_SEARCH_ENTRY) continue; lr->nument++; rc = ldap_get_dn_ber(li->ld, ent, &ber, &bv); if(rc < 0) { *err = CURLE_RECV_ERROR; return -1; } writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4); if(writeerr) { *err = writeerr; return -1; |
︙ | ︙ |
Changes to jni/curl/lib/parsedate.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
78 79 80 81 82 83 84 | #include <limits.h> #include <curl/curl.h> #include "strcase.h" #include "warnless.h" #include "parsedate.h" | < < < < < < < < < < < < < < > > > > > > > > > > > > > > > > | 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 | #include <limits.h> #include <curl/curl.h> #include "strcase.h" #include "warnless.h" #include "parsedate.h" /* * parsedate() * * Returns: * * PARSEDATE_OK - a fine conversion * PARSEDATE_FAIL - failed to convert * PARSEDATE_LATER - time overflow at the far end of time_t * PARSEDATE_SOONER - time underflow at the low end of time_t */ static int parsedate(const char *date, time_t *output); #define PARSEDATE_OK 0 #define PARSEDATE_FAIL -1 #define PARSEDATE_LATER 1 #define PARSEDATE_SOONER 2 #ifndef CURL_DISABLE_PARSEDATE const char * const Curl_wkday[] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}; static const char * const weekday[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; const char * const Curl_month[]= { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; struct tzinfo { char name[5]; int offset; /* +/- in minutes */ }; /* Here's a bunch of frequently used time zone names. These were supported by the old getdate parser. */ #define tDAYZONE -60 /* offset for daylight savings time */ static const struct tzinfo tz[]= { {"GMT", 0}, /* Greenwich Mean */ {"UT", 0}, /* Universal Time */ |
︙ | ︙ | |||
551 552 553 554 555 556 557 558 559 560 561 562 563 564 | t += tzoff; *output = t; return PARSEDATE_OK; } time_t curl_getdate(const char *p, const time_t *now) { time_t parsed = -1; int rc = parsedate(p, &parsed); (void)now; /* legacy argument from the past that we ignore */ | > > > > > > > > > | 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 | t += tzoff; *output = t; return PARSEDATE_OK; } #else /* disabled */ static int parsedate(const char *date, time_t *output) { (void)date; *output = 0; return PARSEDATE_OK; /* a lie */ } #endif time_t curl_getdate(const char *p, const time_t *now) { time_t parsed = -1; int rc = parsedate(p, &parsed); (void)now; /* legacy argument from the past that we ignore */ |
︙ | ︙ |
Deleted jni/curl/lib/pipeline.c.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted jni/curl/lib/pipeline.h.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Changes to jni/curl/lib/pop3.c.
︙ | ︙ | |||
26 27 28 29 30 31 32 33 34 35 36 37 38 39 | * RFC2595 Using TLS with IMAP, POP3 and ACAP * RFC2831 DIGEST-MD5 authentication * RFC4422 Simple Authentication and Security Layer (SASL) * RFC4616 PLAIN authentication * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism * RFC5034 POP3 SASL Authentication Mechanism * RFC6749 OAuth 2.0 Authorization Framework * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_POP3 | > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | * RFC2595 Using TLS with IMAP, POP3 and ACAP * RFC2831 DIGEST-MD5 authentication * RFC4422 Simple Authentication and Security Layer (SASL) * RFC4616 PLAIN authentication * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism * RFC5034 POP3 SASL Authentication Mechanism * RFC6749 OAuth 2.0 Authorization Framework * RFC8314 Use of TLS for Email Submission and Access * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_POP3 |
︙ | ︙ |
Changes to jni/curl/lib/progress.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is |
︙ | ︙ | |||
27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include "multiif.h" #include "progress.h" #include "curl_printf.h" /* check rate limits within this many recent milliseconds, at minimum. */ #define MIN_RATE_LIMIT_PERIOD 3000 /* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero byte) */ static void time2str(char *r, curl_off_t seconds) { curl_off_t h; if(seconds <= 0) { strcpy(r, "--:--:--"); | > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include "multiif.h" #include "progress.h" #include "curl_printf.h" /* check rate limits within this many recent milliseconds, at minimum. */ #define MIN_RATE_LIMIT_PERIOD 3000 #ifndef CURL_DISABLE_PROGRESS_METER /* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero byte) */ static void time2str(char *r, curl_off_t seconds) { curl_off_t h; if(seconds <= 0) { strcpy(r, "--:--:--"); |
︙ | ︙ | |||
115 116 117 118 119 120 121 122 123 124 125 126 127 128 | else msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE); #endif return max5; } /* New proposed interface, 9th of February 2000: pgrsStartNow() - sets start time pgrsSetDownloadSize(x) - known expected download size | > | 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | else msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE); #endif return max5; } #endif /* New proposed interface, 9th of February 2000: pgrsStartNow() - sets start time pgrsSetDownloadSize(x) - known expected download size |
︙ | ︙ | |||
358 359 360 361 362 363 364 | } else { data->progress.size_ul = 0; data->progress.flags &= ~PGRS_UL_SIZE_KNOWN; } } | < < < < > | < | 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 | } else { data->progress.size_ul = 0; data->progress.flags &= ~PGRS_UL_SIZE_KNOWN; } } #ifndef CURL_DISABLE_PROGRESS_METER static void progress_meter(struct connectdata *conn) { struct curltime now; curl_off_t timespent; curl_off_t timespent_ms; /* milliseconds */ struct Curl_easy *data = conn->data; bool shownow = FALSE; curl_off_t dl = data->progress.downloaded; curl_off_t ul = data->progress.uploaded; now = Curl_now(); /* what time is it */ /* The time spent so far (from the start) */ |
︙ | ︙ | |||
395 396 397 398 399 400 401 | data->progress.ulspeed = (ul * 1000 / (timespent_ms>0?timespent_ms:1)); else data->progress.ulspeed = (ul / (timespent>0?timespent:1)); /* Calculations done at most once a second, unless end is reached */ if(data->progress.lastshow != now.tv_sec) { int countindex; /* amount of seconds stored in the speeder array */ | > > | | 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 | data->progress.ulspeed = (ul * 1000 / (timespent_ms>0?timespent_ms:1)); else data->progress.ulspeed = (ul / (timespent>0?timespent:1)); /* Calculations done at most once a second, unless end is reached */ if(data->progress.lastshow != now.tv_sec) { int countindex; /* amount of seconds stored in the speeder array */ int nowindex = data->progress.speeder_c% CURR_TIME; if(!(data->progress.flags & PGRS_HIDE)) shownow = TRUE; data->progress.lastshow = now.tv_sec; /* Let's do the "current speed" thing, with the dl + ul speeds combined. Store the speed at entry 'nowindex'. */ data->progress.speeder[ nowindex ] = data->progress.downloaded + data->progress.uploaded; |
︙ | ︙ | |||
457 458 459 460 461 462 463 | } else /* the first second we use the average */ data->progress.current_speed = data->progress.ulspeed + data->progress.dlspeed; } /* Calculations end */ | | > > > > | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 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 | } else /* the first second we use the average */ data->progress.current_speed = data->progress.ulspeed + data->progress.dlspeed; } /* Calculations end */ if(!shownow) /* only show the internal progress meter once per second */ return; else { /* If there's no external callback set, use internal code to show progress */ /* progress meter has not been shut off */ char max5[6][10]; curl_off_t dlpercen = 0; curl_off_t ulpercen = 0; curl_off_t total_percen = 0; curl_off_t total_transfer; curl_off_t total_expected_transfer; char time_left[10]; char time_total[10]; char time_spent[10]; curl_off_t ulestimate = 0; curl_off_t dlestimate = 0; curl_off_t total_estimate; if(!(data->progress.flags & PGRS_HEADERS_OUT)) { if(data->state.resume_from) { fprintf(data->set.err, "** Resuming transfer from byte position %" CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from); } fprintf(data->set.err, |
︙ | ︙ | |||
560 561 562 563 564 565 566 | /* create the three time strings */ time2str(time_left, total_estimate > 0?(total_estimate - timespent):0); time2str(time_total, total_estimate); time2str(time_spent, timespent); /* Get the total amount of data expected to get transferred */ total_expected_transfer = | | | | 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 | /* create the three time strings */ time2str(time_left, total_estimate > 0?(total_estimate - timespent):0); time2str(time_total, total_estimate); time2str(time_spent, timespent); /* Get the total amount of data expected to get transferred */ total_expected_transfer = ((data->progress.flags & PGRS_UL_SIZE_KNOWN)? data->progress.size_ul:data->progress.uploaded)+ ((data->progress.flags & PGRS_DL_SIZE_KNOWN)? data->progress.size_dl:data->progress.downloaded); /* We have transferred this much so far */ total_transfer = data->progress.downloaded + data->progress.uploaded; /* Get the percentage of data transferred so far */ if(total_expected_transfer > CURL_OFF_T_C(10000)) |
︙ | ︙ | |||
591 592 593 594 595 596 597 | ulpercen, /* 3 letters */ /* xfer % */ max5data(data->progress.uploaded, max5[1]), /* xfer size */ max5data(data->progress.dlspeed, max5[3]), /* avrg dl speed */ max5data(data->progress.ulspeed, max5[4]), /* avrg ul speed */ time_total, /* 8 letters */ /* total time */ time_spent, /* 8 letters */ /* time spent */ time_left, /* 8 letters */ /* time left */ | | | > | > > > > > > > > > > > > > | > > > > > > > > > > > > > | > > > > > > > > > > > > > > > > > | 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 | ulpercen, /* 3 letters */ /* xfer % */ max5data(data->progress.uploaded, max5[1]), /* xfer size */ max5data(data->progress.dlspeed, max5[3]), /* avrg dl speed */ max5data(data->progress.ulspeed, max5[4]), /* avrg ul speed */ time_total, /* 8 letters */ /* total time */ time_spent, /* 8 letters */ /* time spent */ time_left, /* 8 letters */ /* time left */ max5data(data->progress.current_speed, max5[5]) ); /* we flush the output stream to make it appear as soon as possible */ fflush(data->set.err); } /* don't show now */ } #else /* progress bar disabled */ #define progress_meter(x) #endif /* * Curl_pgrsUpdate() returns 0 for success or the value returned by the * progress callback! */ int Curl_pgrsUpdate(struct connectdata *conn) { struct Curl_easy *data = conn->data; if(!(data->progress.flags & PGRS_HIDE)) { if(data->set.fxferinfo) { int result; /* There's a callback set, call that */ Curl_set_in_callback(data, true); result = data->set.fxferinfo(data->set.progress_client, data->progress.size_dl, data->progress.downloaded, data->progress.size_ul, data->progress.uploaded); Curl_set_in_callback(data, false); if(result) failf(data, "Callback aborted"); return result; } if(data->set.fprogress) { int result; /* The older deprecated callback is set, call that */ Curl_set_in_callback(data, true); result = data->set.fprogress(data->set.progress_client, (double)data->progress.size_dl, (double)data->progress.downloaded, (double)data->progress.size_ul, (double)data->progress.uploaded); Curl_set_in_callback(data, false); if(result) failf(data, "Callback aborted"); return result; } } progress_meter(conn); return 0; } |
Changes to jni/curl/lib/rtsp.c.
︙ | ︙ | |||
37 38 39 40 41 42 43 | #include "select.h" #include "connect.h" #include "strdup.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" | < < < < < < < < < < | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include "select.h" #include "connect.h" #include "strdup.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" #define RTP_PKT_CHANNEL(p) ((int)((unsigned char)((p)[1]))) #define RTP_PKT_LENGTH(p) ((((int)((unsigned char)((p)[2]))) << 8) | \ ((int)((unsigned char)((p)[3])))) /* protocol-specific functions set up to be called by the main engine */ |
︙ | ︙ | |||
232 233 234 235 236 237 238 | "The CSeq of this request %ld did not match the response %ld", CSeq_sent, CSeq_recv); return CURLE_RTSP_CSEQ_ERROR; } if(data->set.rtspreq == RTSPREQ_RECEIVE && (conn->proto.rtspc.rtp_channel == -1)) { infof(data, "Got an RTP Receive with a CSeq of %ld\n", CSeq_recv); | < | 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | "The CSeq of this request %ld did not match the response %ld", CSeq_sent, CSeq_recv); return CURLE_RTSP_CSEQ_ERROR; } if(data->set.rtspreq == RTSPREQ_RECEIVE && (conn->proto.rtspc.rtp_channel == -1)) { infof(data, "Got an RTP Receive with a CSeq of %ld\n", CSeq_recv); } } return httpStatus; } static CURLcode rtsp_do(struct connectdata *conn, bool *done) |
︙ | ︙ | |||
332 333 334 335 336 337 338 | if(!p_session_id && (rtspreq & ~(RTSPREQ_OPTIONS | RTSPREQ_DESCRIBE | RTSPREQ_SETUP))) { failf(data, "Refusing to issue an RTSP request [%s] without a session ID.", p_request); return CURLE_BAD_FUNCTION_ARGUMENT; } | < < | 321 322 323 324 325 326 327 328 329 330 331 332 333 334 | if(!p_session_id && (rtspreq & ~(RTSPREQ_OPTIONS | RTSPREQ_DESCRIBE | RTSPREQ_SETUP))) { failf(data, "Refusing to issue an RTSP request [%s] without a session ID.", p_request); return CURLE_BAD_FUNCTION_ARGUMENT; } /* Stream URI. Default to server '*' if not specified */ if(data->set.str[STRING_RTSP_STREAM_URI]) { p_stream_uri = data->set.str[STRING_RTSP_STREAM_URI]; } else { p_stream_uri = "*"; } |
︙ | ︙ |
Changes to jni/curl/lib/security.c.
︙ | ︙ | |||
147 148 149 150 151 152 153 | while(len > 0) { result = Curl_read_plain(fd, to_p, len, &nread); if(!result) { len -= nread; to_p += nread; } else { | < | 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | while(len > 0) { result = Curl_read_plain(fd, to_p, len, &nread); if(!result) { len -= nread; to_p += nread; } else { if(result == CURLE_AGAIN) continue; return result; } } return CURLE_OK; } |
︙ | ︙ | |||
175 176 177 178 179 180 181 | while(len > 0) { result = Curl_write_plain(conn, fd, to_p, len, &written); if(!result) { len -= written; to_p += written; } else { | < | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | while(len > 0) { result = Curl_write_plain(conn, fd, to_p, len, &written); if(!result) { len -= written; to_p += written; } else { if(result == CURLE_AGAIN) continue; return result; } } return CURLE_OK; } |
︙ | ︙ | |||
261 262 263 264 265 266 267 | return bytes_read; } bytes_read = buffer_read(&conn->in_buffer, buffer, len); len -= bytes_read; total_read += bytes_read; buffer += bytes_read; } | < < | 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 | return bytes_read; } bytes_read = buffer_read(&conn->in_buffer, buffer, len); len -= bytes_read; total_read += bytes_read; buffer += bytes_read; } return total_read; } /* Send |length| bytes from |from| to the |fd| socket taking care of encoding and negociating with the server. |from| can be NULL. */ static void do_sec_send(struct connectdata *conn, curl_socket_t fd, const char *from, int length) { int bytes, htonl_bytes; /* 32-bit integers for htonl */ char *buffer = NULL; char *cmd_buffer; size_t cmd_size = 0; |
︙ | ︙ | |||
402 403 404 405 406 407 408 | if(buf[3] != '-') /* safe to ignore return code */ (void)sscanf(buf, "%d", &ret_code); if(buf[decoded_len - 1] == '\n') buf[decoded_len - 1] = '\0'; | < < < < > > > | 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 | if(buf[3] != '-') /* safe to ignore return code */ (void)sscanf(buf, "%d", &ret_code); if(buf[decoded_len - 1] == '\n') buf[decoded_len - 1] = '\0'; strcpy(buffer, buf); free(buf); return ret_code; } static int sec_set_protection_level(struct connectdata *conn) { int code; enum protection_level level = conn->request_data_prot; DEBUGASSERT(level > PROT_NONE && level < PROT_LAST); if(!conn->sec_complete) { infof(conn->data, "Trying to change the protection level after the" " completion of the data exchange.\n"); return -1; } /* Bail out if we try to set up the same level */ if(conn->data_prot == level) return 0; if(level) { char *pbsz; static unsigned int buffer_size = 1 << 20; /* 1048576 */ code = ftp_send_command(conn, "PBSZ %u", buffer_size); if(code < 0) return -1; if(code/100 != 2) { failf(conn->data, "Failed to set the protection's buffer size."); return -1; |
︙ | ︙ | |||
504 505 506 507 508 509 510 | return CURLE_FAILED_INIT; } } infof(data, "Trying mechanism %s...\n", mech->name); ret = ftp_send_command(conn, "AUTH %s", mech->name); if(ret < 0) | < | 499 500 501 502 503 504 505 506 507 508 509 510 511 512 | return CURLE_FAILED_INIT; } } infof(data, "Trying mechanism %s...\n", mech->name); ret = ftp_send_command(conn, "AUTH %s", mech->name); if(ret < 0) return CURLE_COULDNT_CONNECT; if(ret/100 != 3) { switch(ret) { case 504: infof(data, "Mechanism %s is not supported by the server (server " "returned ftp code: 504).\n", mech->name); |
︙ | ︙ | |||
571 572 573 574 575 576 577 | free(conn->app_data); conn->app_data = NULL; if(conn->in_buffer.data) { free(conn->in_buffer.data); conn->in_buffer.data = NULL; conn->in_buffer.size = 0; conn->in_buffer.index = 0; | < | 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 | free(conn->app_data); conn->app_data = NULL; if(conn->in_buffer.data) { free(conn->in_buffer.data); conn->in_buffer.data = NULL; conn->in_buffer.size = 0; conn->in_buffer.index = 0; conn->in_buffer.eof_flag = 0; } conn->sec_complete = 0; conn->data_prot = PROT_CLEAR; conn->mech = NULL; } #endif /* HAVE_GSSAPI */ #endif /* CURL_DISABLE_FTP */ |
Changes to jni/curl/lib/sendf.c.
︙ | ︙ | |||
591 592 593 594 595 596 597 | } /* Chop data, write chunks. */ while(len) { size_t chunklen = len <= CURL_MAX_WRITE_SIZE? len: CURL_MAX_WRITE_SIZE; if(writebody) { | > > | > | 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 | } /* Chop data, write chunks. */ while(len) { size_t chunklen = len <= CURL_MAX_WRITE_SIZE? len: CURL_MAX_WRITE_SIZE; if(writebody) { size_t wrote; Curl_set_in_callback(data, true); wrote = writebody(ptr, 1, chunklen, data->set.out); Curl_set_in_callback(data, false); if(CURL_WRITEFUNC_PAUSE == wrote) { if(conn->handler->flags & PROTOPT_NONETWORK) { /* Protocols that work without network cannot be paused. This is actually only FILE:// just now, and it can't pause since the transfer isn't done using the "normal" procedure. */ failf(data, "Write callback asked for PAUSE when not supported!"); |
︙ | ︙ | |||
720 721 722 723 724 725 726 | { CURLcode result = CURLE_RECV_ERROR; ssize_t nread = 0; size_t bytesfromsocket = 0; char *buffertofill = NULL; struct Curl_easy *data = conn->data; | < < < < < < < < < < < < < < < < < < < < < < < < | | < < < < < < < | 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 | { CURLcode result = CURLE_RECV_ERROR; ssize_t nread = 0; size_t bytesfromsocket = 0; char *buffertofill = NULL; struct Curl_easy *data = conn->data; /* Set 'num' to 0 or 1, depending on which socket that has been sent here. If it is the second socket, we set num to 1. Otherwise to 0. This lets us use the correct ssl handle. */ int num = (sockfd == conn->sock[SECONDARYSOCKET]); *n = 0; /* reset amount to zero */ bytesfromsocket = CURLMIN(sizerequested, (size_t)data->set.buffer_size); buffertofill = buf; nread = conn->recv[num](conn, num, buffertofill, bytesfromsocket, &result); if(nread < 0) return result; *n += nread; return CURLE_OK; } /* return 0 on success */ int Curl_debug(struct Curl_easy *data, curl_infotype type, |
︙ | ︙ |
Changes to jni/curl/lib/setopt.c.
︙ | ︙ | |||
57 58 59 60 61 62 63 64 65 66 67 68 69 70 | copy of `s'. Return CURLE_OK or CURLE_OUT_OF_MEMORY. */ Curl_safefree(*charp); if(s) { char *str = strdup(s); if(!str) return CURLE_OUT_OF_MEMORY; *charp = str; } return CURLE_OK; | > > > > > > > | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | copy of `s'. Return CURLE_OK or CURLE_OUT_OF_MEMORY. */ Curl_safefree(*charp); if(s) { char *str = strdup(s); if(str) { size_t len = strlen(str); if(len > CURL_MAX_INPUT_LENGTH) { free(str); return CURLE_BAD_FUNCTION_ARGUMENT; } } if(!str) return CURLE_OUT_OF_MEMORY; *charp = str; } return CURLE_OK; |
︙ | ︙ | |||
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | static CURLcode vsetopt(struct Curl_easy *data, CURLoption option, va_list param) { char *argptr; CURLcode result = CURLE_OK; long arg; 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: | > | < < < < > | > | | 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 | static CURLcode 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; data->set.dns_cache_timeout = arg; break; case CURLOPT_DNS_USE_GLOBAL_CACHE: /* deprecated */ break; case CURLOPT_SSL_CIPHER_LIST: /* set a list of cipher we want to use in the SSL connection */ result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER_LIST_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSL_CIPHER_LIST: /* set a list of cipher we want to use in the SSL connection for proxy */ result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER_LIST_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_TLS13_CIPHERS: if(Curl_ssl_tls13_ciphersuites()) { /* set preferred list of TLS 1.3 cipher suites */ result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER13_LIST_ORIG], va_arg(param, char *)); } else return CURLE_NOT_BUILT_IN; break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_TLS13_CIPHERS: if(Curl_ssl_tls13_ciphersuites()) { /* set preferred list of TLS 1.3 cipher suites for proxy */ result = Curl_setstropt(&data->set.str[STRING_SSL_CIPHER13_LIST_PROXY], va_arg(param, char *)); } else return CURLE_NOT_BUILT_IN; break; #endif case CURLOPT_RANDOM_FILE: /* * This is the path name to a file that contains random data to seed * the random SSL stuff with. The file is only used for reading. */ result = Curl_setstropt(&data->set.str[STRING_SSL_RANDOM_FILE], va_arg(param, char *)); |
︙ | ︙ | |||
266 267 268 269 270 271 272 | break; case CURLOPT_FILETIME: /* * Try to get the file time of the remote document. The time will * later (possibly) become available using curl_easy_getinfo(). */ data->set.get_filetime = (0 != va_arg(param, long)) ? TRUE : FALSE; | < < < < < < < < < < < < < < < < < < < < < > < < < < < < | | < < < < < < < < < < < < < < > | 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 | break; case CURLOPT_FILETIME: /* * Try to get the file time of the remote document. The time will * later (possibly) become available using curl_easy_getinfo(). */ data->set.get_filetime = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_SERVER_RESPONSE_TIMEOUT: /* * Option that specifies how quickly an 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 * server. */ data->set.tftp_no_options = va_arg(param, long) != 0; break; case CURLOPT_TFTP_BLKSIZE: /* * TFTP option that specifies the block size to use for data transmission. */ arg = va_arg(param, long); if(arg < 0) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.tftp_blksize = arg; break; #endif #ifndef CURL_DISABLE_NETRC case CURLOPT_NETRC: /* * Parse the $HOME/.netrc file */ arg = va_arg(param, long); if((arg < CURL_NETRC_IGNORED) || (arg > CURL_NETRC_REQUIRED)) 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 *)); break; #endif case CURLOPT_TRANSFERTEXT: /* * This option was previously named 'FTPASCII'. Renamed to work with * more protocols than merely FTP. * * Transfer using ASCII (instead of BINARY). */ |
︙ | ︙ | |||
660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 | /* * Set a list with HTTP headers to use (or replace internals with) */ data->set.headers = va_arg(param, struct curl_slist *); break; #ifndef CURL_DISABLE_HTTP case CURLOPT_PROXYHEADER: /* * Set a list with proxy headers to use (or replace internals with) * * Since CURLOPT_HTTPHEADER was the only way to set HTTP headers for a * long time we remain doing it this way until CURLOPT_PROXYHEADER is * used. As soon as this option has been used, if set to anything but * NULL, custom headers for proxies are only picked from this list. * * Set this option to NULL to restore the previous behavior. */ data->set.proxyheaders = va_arg(param, struct curl_slist *); break; | > | | 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 | /* * Set a list with HTTP headers to use (or replace internals with) */ data->set.headers = va_arg(param, struct curl_slist *); break; #ifndef CURL_DISABLE_HTTP #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXYHEADER: /* * Set a list with proxy headers to use (or replace internals with) * * Since CURLOPT_HTTPHEADER was the only way to set HTTP headers for a * long time we remain doing it this way until CURLOPT_PROXYHEADER is * used. As soon as this option has been used, if set to anything but * NULL, custom headers for proxies are only picked from this list. * * Set this option to NULL to restore the previous behavior. */ data->set.proxyheaders = va_arg(param, struct curl_slist *); break; #endif case CURLOPT_HEADEROPT: /* * Set header option. */ arg = va_arg(param, long); data->set.sep_headers = (bool)((arg & CURLHEADER_SEPARATE)? TRUE: FALSE); break; |
︙ | ︙ | |||
1068 1069 1070 1071 1072 1073 1074 | case CURLOPT_SOCKS5_GSSAPI_NEC: /* * Set flag for NEC SOCK5 support */ data->set.socks5_gssapi_nec = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #endif | | | | 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 | case CURLOPT_SOCKS5_GSSAPI_NEC: /* * Set flag for NEC SOCK5 support */ data->set.socks5_gssapi_nec = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #endif #ifndef CURL_DISABLE_PROXY case CURLOPT_SOCKS5_GSSAPI_SERVICE: case CURLOPT_PROXY_SERVICE_NAME: /* * Set proxy authentication service name for Kerberos 5 and SPNEGO */ result = Curl_setstropt(&data->set.str[STRING_PROXY_SERVICE_NAME], va_arg(param, char *)); break; #endif case CURLOPT_SERVICE_NAME: /* * Set authentication service name for DIGEST-MD5, Kerberos 5 and SPNEGO */ result = Curl_setstropt(&data->set.str[STRING_SERVICE_NAME], va_arg(param, char *)); break; |
︙ | ︙ | |||
1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 | case CURLOPT_WRITEDATA: /* * FILE pointer to write to. Or possibly * used as argument to the write callback. */ data->set.out = va_arg(param, void *); break; case CURLOPT_FTPPORT: /* * Use FTP PORT, this also specifies which IP address to use */ result = Curl_setstropt(&data->set.str[STRING_FTPPORT], va_arg(param, char *)); data->set.ftp_use_port = (data->set.str[STRING_FTPPORT]) ? TRUE : FALSE; | > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | case CURLOPT_WRITEDATA: /* * FILE pointer to write to. Or possibly * used as argument to the write callback. */ data->set.out = va_arg(param, void *); break; case CURLOPT_DIRLISTONLY: /* * An option that changes the command to one that asks for a list only, no * file info details. Used for FTP, POP3 and SFTP. */ data->set.ftp_list_only = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_APPEND: /* * We want to upload and append to an existing file. Used for FTP and * SFTP. */ data->set.ftp_append = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #ifndef CURL_DISABLE_FTP case CURLOPT_FTP_FILEMETHOD: /* * How do access files over FTP. */ arg = va_arg(param, long); if((arg < CURLFTPMETHOD_DEFAULT) || (arg > CURLFTPMETHOD_SINGLECWD)) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.ftp_filemethod = (curl_ftpfile)arg; break; case CURLOPT_FTPPORT: /* * Use FTP PORT, this also specifies which IP address to use */ result = Curl_setstropt(&data->set.str[STRING_FTPPORT], va_arg(param, char *)); data->set.ftp_use_port = (data->set.str[STRING_FTPPORT]) ? TRUE : FALSE; |
︙ | ︙ | |||
1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 | /* * Enable or disable FTP_SKIP_PASV_IP, which will disable/enable the * bypass of the IP address in PASV responses. */ data->set.ftp_skip_ip = (0 != va_arg(param, long)) ? TRUE : FALSE; 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 *); break; | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | /* * Enable or disable FTP_SKIP_PASV_IP, which will disable/enable the * bypass of the IP address in PASV responses. */ data->set.ftp_skip_ip = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_FTP_ACCOUNT: result = Curl_setstropt(&data->set.str[STRING_FTP_ACCOUNT], va_arg(param, char *)); break; case CURLOPT_FTP_ALTERNATIVE_TO_USER: result = Curl_setstropt(&data->set.str[STRING_FTP_ALTERNATIVE_TO_USER], va_arg(param, char *)); break; case CURLOPT_FTPSSLAUTH: /* * Set a specific auth for FTP-SSL transfers. */ arg = va_arg(param, long); if((arg < CURLFTPAUTH_DEFAULT) || (arg > CURLFTPAUTH_TLS)) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.ftpsslauth = (curl_ftpauth)arg; break; case CURLOPT_KRBLEVEL: /* * A string that defines the kerberos security level. */ result = Curl_setstropt(&data->set.str[STRING_KRB_LEVEL], va_arg(param, char *)); data->set.krb = (data->set.str[STRING_KRB_LEVEL]) ? TRUE : FALSE; break; #endif case CURLOPT_FTP_CREATE_MISSING_DIRS: /* * An FTP/SFTP option that modifies an upload to create missing * directories on the server. */ switch(va_arg(param, long)) { case 0: data->set.ftp_create_missing_dirs = 0; break; case 1: data->set.ftp_create_missing_dirs = 1; break; case 2: data->set.ftp_create_missing_dirs = 2; break; default: /* reserve other values for future use */ result = CURLE_UNKNOWN_OPTION; break; } 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 *); break; |
︙ | ︙ | |||
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 | case CURLOPT_SSLCERT: /* * String that holds file name of the SSL certificate to use */ result = Curl_setstropt(&data->set.str[STRING_CERT_ORIG], va_arg(param, char *)); break; case CURLOPT_PROXY_SSLCERT: /* * String that holds file name of the SSL certificate to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_CERT_PROXY], va_arg(param, char *)); break; case CURLOPT_SSLCERTTYPE: /* * String that holds file type of the SSL certificate to use */ result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_ORIG], va_arg(param, char *)); break; case CURLOPT_PROXY_SSLCERTTYPE: /* * String that holds file type of the SSL certificate to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_PROXY], va_arg(param, char *)); break; case CURLOPT_SSLKEY: /* * String that holds file name of the SSL key to use */ result = Curl_setstropt(&data->set.str[STRING_KEY_ORIG], va_arg(param, char *)); break; case CURLOPT_PROXY_SSLKEY: /* * String that holds file name of the SSL key to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_KEY_PROXY], va_arg(param, char *)); break; case CURLOPT_SSLKEYTYPE: /* * String that holds file type of the SSL key to use */ result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_ORIG], va_arg(param, char *)); break; case CURLOPT_PROXY_SSLKEYTYPE: /* * String that holds file type of the SSL key to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_PROXY], va_arg(param, char *)); break; case CURLOPT_KEYPASSWD: /* * String that holds the SSL or SSH private key password. */ result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD_ORIG], va_arg(param, char *)); break; case CURLOPT_PROXY_KEYPASSWD: /* * String that holds the SSL private key password for proxy. */ result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD_PROXY], va_arg(param, char *)); break; case CURLOPT_SSLENGINE: /* * String that holds the SSL crypto engine. */ argptr = va_arg(param, char *); if(argptr && argptr[0]) { result = Curl_setstropt(&data->set.str[STRING_SSL_ENGINE], argptr); | > > > > > > > > > > | 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 | case CURLOPT_SSLCERT: /* * String that holds file name of the SSL certificate to use */ result = Curl_setstropt(&data->set.str[STRING_CERT_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSLCERT: /* * String that holds file name of the SSL certificate to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_CERT_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_SSLCERTTYPE: /* * String that holds file type of the SSL certificate to use */ result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSLCERTTYPE: /* * String that holds file type of the SSL certificate to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_CERT_TYPE_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_SSLKEY: /* * String that holds file name of the SSL key to use */ result = Curl_setstropt(&data->set.str[STRING_KEY_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSLKEY: /* * String that holds file name of the SSL key to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_KEY_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_SSLKEYTYPE: /* * String that holds file type of the SSL key to use */ result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSLKEYTYPE: /* * String that holds file type of the SSL key to use for proxy */ result = Curl_setstropt(&data->set.str[STRING_KEY_TYPE_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_KEYPASSWD: /* * String that holds the SSL or SSH private key password. */ result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_KEYPASSWD: /* * String that holds the SSL private key password for proxy. */ result = Curl_setstropt(&data->set.str[STRING_KEY_PASSWD_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_SSLENGINE: /* * String that holds the SSL crypto engine. */ argptr = va_arg(param, char *); if(argptr && argptr[0]) { result = Curl_setstropt(&data->set.str[STRING_SSL_ENGINE], argptr); |
︙ | ︙ | |||
1639 1640 1641 1642 1643 1644 1645 | break; case CURLOPT_CRLF: /* * Kludgy option to enable CRLF conversions. Subject for removal. */ data->set.crlf = (0 != va_arg(param, long)) ? TRUE : FALSE; break; | | | | 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 | break; case CURLOPT_CRLF: /* * Kludgy option to enable CRLF conversions. Subject for removal. */ data->set.crlf = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #ifndef CURL_DISABLE_PROXY case CURLOPT_HAPROXYPROTOCOL: /* * Set to send the HAProxy Proxy Protocol header */ data->set.haproxyprotocol = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #endif case CURLOPT_INTERFACE: /* * Set what interface or address/hostname to bind the socket to when * performing an operation and thus what from-IP your connection will use. */ result = Curl_setstropt(&data->set.str[STRING_DEVICE], va_arg(param, char *)); |
︙ | ︙ | |||
1673 1674 1675 1676 1677 1678 1679 | * Set number of local ports to try, starting with CURLOPT_LOCALPORT. */ arg = va_arg(param, long); if((arg < 0) || (arg > 65535)) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.localportrange = curlx_sltosi(arg); break; | < < < < < < < < | 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 | * Set number of local ports to try, starting with CURLOPT_LOCALPORT. */ arg = va_arg(param, long); if((arg < 0) || (arg > 65535)) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.localportrange = curlx_sltosi(arg); break; case CURLOPT_GSSAPI_DELEGATION: /* * GSS-API credential delegation bitmask */ arg = va_arg(param, long); if(arg < CURLGSSAPI_DELEGATION_NONE) return CURLE_BAD_FUNCTION_ARGUMENT; |
︙ | ︙ | |||
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 | /* Update the current connection ssl_config. */ if(data->conn) { data->conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer; } break; case CURLOPT_PROXY_SSL_VERIFYPEER: /* * Enable peer SSL verifying for proxy. */ data->set.proxy_ssl.primary.verifypeer = (0 != va_arg(param, long))?TRUE:FALSE; /* Update the current connection proxy_ssl_config. */ if(data->conn) { data->conn->proxy_ssl_config.verifypeer = data->set.proxy_ssl.primary.verifypeer; } break; case CURLOPT_SSL_VERIFYHOST: /* * Enable verification of the host name in the peer certificate */ arg = va_arg(param, long); /* Obviously people are not reading documentation and too many thought | > > | 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 | /* Update the current connection ssl_config. */ if(data->conn) { data->conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer; } break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSL_VERIFYPEER: /* * Enable peer SSL verifying for proxy. */ data->set.proxy_ssl.primary.verifypeer = (0 != va_arg(param, long))?TRUE:FALSE; /* Update the current connection proxy_ssl_config. */ if(data->conn) { data->conn->proxy_ssl_config.verifypeer = data->set.proxy_ssl.primary.verifypeer; } break; #endif case CURLOPT_SSL_VERIFYHOST: /* * Enable verification of the host name in the peer certificate */ arg = va_arg(param, long); /* Obviously people are not reading documentation and too many thought |
︙ | ︙ | |||
1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 | /* Update the current connection ssl_config. */ if(data->conn) { data->conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost; } break; case CURLOPT_PROXY_SSL_VERIFYHOST: /* * Enable verification of the host name in the peer certificate for proxy */ arg = va_arg(param, long); /* Obviously people are not reading documentation and too many thought | > | 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 | /* Update the current connection ssl_config. */ if(data->conn) { data->conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost; } break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSL_VERIFYHOST: /* * Enable verification of the host name in the peer certificate for proxy */ arg = va_arg(param, long); /* Obviously people are not reading documentation and too many thought |
︙ | ︙ | |||
1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 | /* Update the current connection proxy_ssl_config. */ if(data->conn) { data->conn->proxy_ssl_config.verifyhost = data->set.proxy_ssl.primary.verifyhost; } break; case CURLOPT_SSL_VERIFYSTATUS: /* * Enable certificate status verifying. */ if(!Curl_ssl_cert_status_request()) { result = CURLE_NOT_BUILT_IN; break; | > | 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 | /* Update the current connection proxy_ssl_config. */ if(data->conn) { data->conn->proxy_ssl_config.verifyhost = data->set.proxy_ssl.primary.verifyhost; } break; #endif case CURLOPT_SSL_VERIFYSTATUS: /* * Enable certificate status verifying. */ if(!Curl_ssl_cert_status_request()) { result = CURLE_NOT_BUILT_IN; break; |
︙ | ︙ | |||
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 | if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY) result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; case CURLOPT_PROXY_PINNEDPUBLICKEY: /* * Set pinned public key for SSL connection. * Specify file name of the public key in DER format. */ #ifdef USE_SSL if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY) result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; case CURLOPT_CAINFO: /* * Set CA info for SSL connection. Specify file name of the CA certificate */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE_ORIG], va_arg(param, char *)); break; case CURLOPT_PROXY_CAINFO: /* * Set CA info SSL connection for proxy. Specify file name of the * CA certificate */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE_PROXY], va_arg(param, char *)); break; case CURLOPT_CAPATH: /* * Set CA path info for SSL connection. Specify directory name of the CA * certificates which have been prepared using openssl c_rehash utility. */ #ifdef USE_SSL if(Curl_ssl->supports & SSLSUPP_CA_PATH) /* This does not work on windows. */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_ORIG], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; case CURLOPT_PROXY_CAPATH: /* * Set CA path info for SSL connection proxy. Specify directory name of the * CA certificates which have been prepared using openssl c_rehash utility. */ #ifdef USE_SSL if(Curl_ssl->supports & SSLSUPP_CA_PATH) /* This does not work on windows. */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_PROXY], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; case CURLOPT_CRLFILE: /* * Set CRL file info for SSL connection. Specify file name of the CRL * to check certificates revocation */ result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE_ORIG], va_arg(param, char *)); break; case CURLOPT_PROXY_CRLFILE: /* * Set CRL file info for SSL connection for proxy. Specify file name of the * CRL to check certificates revocation */ result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE_PROXY], va_arg(param, char *)); break; case CURLOPT_ISSUERCERT: /* * Set Issuer certificate file * to check certificates issuer */ result = Curl_setstropt(&data->set.str[STRING_SSL_ISSUERCERT_ORIG], va_arg(param, char *)); break; case CURLOPT_TELNETOPTIONS: /* * Set a linked list of telnet options */ data->set.telnet_options = va_arg(param, struct curl_slist *); break; | > > > > > > > > > | | 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 | if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY) result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_PINNEDPUBLICKEY: /* * Set pinned public key for SSL connection. * Specify file name of the public key in DER format. */ #ifdef USE_SSL if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY) result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; #endif case CURLOPT_CAINFO: /* * Set CA info for SSL connection. Specify file name of the CA certificate */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_CAINFO: /* * Set CA info SSL connection for proxy. Specify file name of the * CA certificate */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAFILE_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_CAPATH: /* * Set CA path info for SSL connection. Specify directory name of the CA * certificates which have been prepared using openssl c_rehash utility. */ #ifdef USE_SSL if(Curl_ssl->supports & SSLSUPP_CA_PATH) /* This does not work on windows. */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_ORIG], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_CAPATH: /* * Set CA path info for SSL connection proxy. Specify directory name of the * CA certificates which have been prepared using openssl c_rehash utility. */ #ifdef USE_SSL if(Curl_ssl->supports & SSLSUPP_CA_PATH) /* This does not work on windows. */ result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_PROXY], va_arg(param, char *)); else #endif result = CURLE_NOT_BUILT_IN; break; #endif case CURLOPT_CRLFILE: /* * Set CRL file info for SSL connection. Specify file name of the CRL * to check certificates revocation */ result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_CRLFILE: /* * Set CRL file info for SSL connection for proxy. Specify file name of the * CRL to check certificates revocation */ result = Curl_setstropt(&data->set.str[STRING_SSL_CRLFILE_PROXY], va_arg(param, char *)); break; #endif case CURLOPT_ISSUERCERT: /* * Set Issuer certificate file * to check certificates issuer */ result = Curl_setstropt(&data->set.str[STRING_SSL_ISSUERCERT_ORIG], va_arg(param, char *)); break; #ifndef CURL_DISABLE_TELNET case CURLOPT_TELNETOPTIONS: /* * Set a linked list of telnet options */ data->set.telnet_options = va_arg(param, struct curl_slist *); break; #endif case CURLOPT_BUFFERSIZE: /* * The application kindly asks for a differently sized receive buffer. * If it seems reasonable, we'll use it. */ arg = va_arg(param, long); |
︙ | ︙ | |||
2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 | case CURLOPT_SSL_OPTIONS: arg = va_arg(param, long); data->set.ssl.enable_beast = (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE); data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE); break; case CURLOPT_PROXY_SSL_OPTIONS: arg = va_arg(param, long); data->set.proxy_ssl.enable_beast = (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE); data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE); break; | > < < < < < < < < < < > | 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 | case CURLOPT_SSL_OPTIONS: arg = va_arg(param, long); data->set.ssl.enable_beast = (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE); data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_SSL_OPTIONS: arg = va_arg(param, long); data->set.proxy_ssl.enable_beast = (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE); data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE); break; #endif #endif case CURLOPT_IPRESOLVE: arg = va_arg(param, long); if((arg < CURL_IPRESOLVE_WHATEVER) || (arg > CURL_IPRESOLVE_V6)) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.ipver = arg; break; |
︙ | ︙ | |||
2123 2124 2125 2126 2127 2128 2129 | /* * Enable or disable TCP_NODELAY, which will disable/enable the Nagle * algorithm */ data->set.tcp_nodelay = (0 != va_arg(param, long)) ? TRUE : FALSE; break; | < < < < < < < < < < | 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 | /* * Enable or disable TCP_NODELAY, which will disable/enable the Nagle * algorithm */ data->set.tcp_nodelay = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_IGNORE_CONTENT_LENGTH: data->set.ignorecl = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_CONNECT_ONLY: /* * No data transfer, set up connection and let application use the socket */ data->set.connect_only = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_SOCKOPTFUNCTION: /* * socket callback function: called after socket() but before connect() */ data->set.fsockopt = va_arg(param, curl_sockopt_callback); break; |
︙ | ︙ | |||
2209 2210 2211 2212 2213 2214 2215 | case CURLOPT_SSL_SESSIONID_CACHE: data->set.ssl.primary.sessionid = (0 != va_arg(param, long)) ? TRUE : FALSE; data->set.proxy_ssl.primary.sessionid = data->set.ssl.primary.sessionid; break; | | | 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 | case CURLOPT_SSL_SESSIONID_CACHE: data->set.ssl.primary.sessionid = (0 != va_arg(param, long)) ? TRUE : FALSE; data->set.proxy_ssl.primary.sessionid = data->set.ssl.primary.sessionid; break; #ifdef USE_SSH /* we only include SSH options if explicitly built to support SSH */ case CURLOPT_SSH_AUTH_TYPES: data->set.ssh_auth_types = va_arg(param, long); break; case CURLOPT_SSH_PUBLIC_KEYFILE: /* |
︙ | ︙ | |||
2259 2260 2261 2262 2263 2264 2265 | case CURLOPT_SSH_KEYDATA: /* * Custom client data to pass to the SSH keyfunc callback */ data->set.ssh_keyfunc_userp = va_arg(param, void *); break; | > > > > | > > > | | < | > | > | | 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 | case CURLOPT_SSH_KEYDATA: /* * Custom client data to pass to the SSH keyfunc callback */ data->set.ssh_keyfunc_userp = va_arg(param, void *); break; case CURLOPT_SSH_COMPRESSION: data->set.ssh_compression = (0 != va_arg(param, long))?TRUE:FALSE; break; #endif /* USE_SSH */ case CURLOPT_HTTP_TRANSFER_DECODING: /* * disable libcurl transfer encoding is used */ data->set.http_te_skip = (0 == va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_HTTP_CONTENT_DECODING: /* * raw data passed to the application when content encoding is used */ data->set.http_ce_skip = (0 == va_arg(param, long)) ? TRUE : FALSE; break; #if !defined(CURL_DISABLE_FTP) || defined(USE_SSH) case CURLOPT_NEW_FILE_PERMS: /* * Uses these permissions instead of 0644 */ arg = va_arg(param, long); if((arg < 0) || (arg > 0777)) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.new_file_perms = arg; break; case CURLOPT_NEW_DIRECTORY_PERMS: /* * Uses these permissions instead of 0755 */ arg = va_arg(param, long); if((arg < 0) || (arg > 0777)) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.new_directory_perms = arg; break; #endif case CURLOPT_ADDRESS_SCOPE: /* * Use this scope id when using IPv6 * We always get longs when passed plain numericals so we should check * that the value fits into an unsigned 32 bit integer. */ uarg = va_arg(param, unsigned long); #if SIZEOF_LONG > 4 if(uarg > UINT_MAX) return CURLE_BAD_FUNCTION_ARGUMENT; #endif data->set.scope_id = (unsigned int)uarg; break; 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. */ |
︙ | ︙ | |||
2328 2329 2330 2331 2332 2333 2334 | 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; | | > | | 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 | 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; #ifndef CURL_DISABLE_SMTP case CURLOPT_MAIL_FROM: /* Set the SMTP mail originator */ result = Curl_setstropt(&data->set.str[STRING_MAIL_FROM], va_arg(param, char *)); break; case CURLOPT_MAIL_AUTH: /* Set the SMTP auth originator */ result = Curl_setstropt(&data->set.str[STRING_MAIL_AUTH], va_arg(param, char *)); break; case CURLOPT_MAIL_RCPT: /* Set the list of mail recipients */ data->set.mail_rcpt = va_arg(param, struct curl_slist *); break; #endif case CURLOPT_SASL_IR: /* Enable/disable SASL initial response */ data->set.sasl_ir = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #ifndef CURL_DISABLE_RTSP case CURLOPT_RTSP_REQUEST: { /* * Set the RTSP request method (OPTIONS, SETUP, PLAY, etc...) * Would this be better if the RTSPREQ_* were just moved into here? */ long curl_rtspreq = va_arg(param, long); |
︙ | ︙ | |||
2459 2460 2461 2462 2463 2464 2465 | case CURLOPT_INTERLEAVEDATA: data->set.rtp_out = va_arg(param, void *); break; case CURLOPT_INTERLEAVEFUNCTION: /* Set the user defined RTP write function */ data->set.fwrite_rtp = va_arg(param, curl_write_callback); break; | | > > | 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 | case CURLOPT_INTERLEAVEDATA: data->set.rtp_out = va_arg(param, void *); break; case CURLOPT_INTERLEAVEFUNCTION: /* Set the user defined RTP write function */ data->set.fwrite_rtp = va_arg(param, curl_write_callback); break; #endif #ifndef CURL_DISABLE_FTP case CURLOPT_WILDCARDMATCH: data->set.wildcard_enabled = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_CHUNK_BGN_FUNCTION: data->set.chunk_bgn = va_arg(param, curl_chunk_bgn_callback); break; case CURLOPT_CHUNK_END_FUNCTION: data->set.chunk_end = va_arg(param, curl_chunk_end_callback); break; case CURLOPT_FNMATCH_FUNCTION: data->set.fnmatch = va_arg(param, curl_fnmatch_callback); break; case CURLOPT_CHUNK_DATA: data->wildcard.customptr = va_arg(param, void *); break; case CURLOPT_FNMATCH_DATA: data->set.fnmatch_data = va_arg(param, void *); break; #endif #ifdef USE_TLS_SRP case CURLOPT_TLSAUTH_USERNAME: result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_ORIG], va_arg(param, char *)); if(data->set.str[STRING_TLSAUTH_USERNAME_ORIG] && !data->set.ssl.authtype) data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */ break; |
︙ | ︙ | |||
2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 | if(!argptr || strncasecompare(argptr, "SRP", strlen("SRP"))) data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; else data->set.proxy_ssl.authtype = CURL_TLSAUTH_NONE; break; #endif case CURLOPT_DNS_SERVERS: result = Curl_set_dns_servers(data, va_arg(param, char *)); break; case CURLOPT_DNS_INTERFACE: result = Curl_set_dns_interface(data, va_arg(param, char *)); break; case CURLOPT_DNS_LOCAL_IP4: result = Curl_set_dns_local_ip4(data, va_arg(param, char *)); break; case CURLOPT_DNS_LOCAL_IP6: result = Curl_set_dns_local_ip6(data, va_arg(param, char *)); break; | > | | 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 | if(!argptr || strncasecompare(argptr, "SRP", strlen("SRP"))) data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; else data->set.proxy_ssl.authtype = CURL_TLSAUTH_NONE; break; #endif #ifdef USE_ARES case CURLOPT_DNS_SERVERS: result = Curl_set_dns_servers(data, va_arg(param, char *)); break; case CURLOPT_DNS_INTERFACE: result = Curl_set_dns_interface(data, va_arg(param, char *)); break; case CURLOPT_DNS_LOCAL_IP4: result = Curl_set_dns_local_ip4(data, va_arg(param, char *)); break; case CURLOPT_DNS_LOCAL_IP6: result = Curl_set_dns_local_ip6(data, va_arg(param, char *)); break; #endif case CURLOPT_TCP_KEEPALIVE: data->set.tcp_keepalive = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_TCP_KEEPIDLE: arg = va_arg(param, long); if(arg < 0) return CURLE_BAD_FUNCTION_ARGUMENT; |
︙ | ︙ | |||
2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 | #if defined(CONNECT_DATA_IDEMPOTENT) || defined(MSG_FASTOPEN) || \ defined(TCP_FASTOPEN_CONNECT) data->set.tcp_fastopen = (0 != va_arg(param, long))?TRUE:FALSE; #else result = CURLE_NOT_BUILT_IN; #endif break; case CURLOPT_SSL_ENABLE_NPN: data->set.ssl_enable_npn = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_SSL_ENABLE_ALPN: data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE; break; | > | | 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 | #if defined(CONNECT_DATA_IDEMPOTENT) || defined(MSG_FASTOPEN) || \ defined(TCP_FASTOPEN_CONNECT) data->set.tcp_fastopen = (0 != va_arg(param, long))?TRUE:FALSE; #else result = CURLE_NOT_BUILT_IN; #endif break; #ifdef USE_NGHTTP2 case CURLOPT_SSL_ENABLE_NPN: data->set.ssl_enable_npn = (0 != va_arg(param, long)) ? TRUE : FALSE; break; case CURLOPT_SSL_ENABLE_ALPN: data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #endif #ifdef USE_UNIX_SOCKETS case CURLOPT_UNIX_SOCKET_PATH: data->set.abstract_unix_socket = FALSE; result = Curl_setstropt(&data->set.str[STRING_UNIX_SOCKET_PATH], va_arg(param, char *)); break; case CURLOPT_ABSTRACT_UNIX_SOCKET: |
︙ | ︙ | |||
2615 2616 2617 2618 2619 2620 2621 | } 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; | < < < > > > > > > > > > > | 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 | } 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: data->set.disallow_username_in_url = (0 != va_arg(param, long)) ? TRUE : FALSE; break; #ifndef CURL_DISABLE_DOH case CURLOPT_DOH_URL: result = Curl_setstropt(&data->set.str[STRING_DOH], va_arg(param, char *)); data->set.doh = data->set.str[STRING_DOH]?TRUE:FALSE; break; #endif case CURLOPT_UPKEEP_INTERVAL_MS: arg = va_arg(param, long); if(arg < 0) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.upkeep_interval_ms = arg; break; case CURLOPT_MAXAGE_CONN: arg = va_arg(param, long); if(arg < 0) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.maxage_conn = arg; break; case CURLOPT_TRAILERFUNCTION: #ifndef CURL_DISABLE_HTTP data->set.trailer_callback = va_arg(param, curl_trailer_callback); #endif break; case CURLOPT_TRAILERDATA: #ifndef CURL_DISABLE_HTTP |
︙ | ︙ |
Changes to jni/curl/lib/smtp.c.
︙ | ︙ | |||
24 25 26 27 28 29 30 31 32 33 34 35 36 37 | * RFC3207 SMTP over TLS * RFC4422 Simple Authentication and Security Layer (SASL) * RFC4616 PLAIN authentication * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism * RFC4954 SMTP Authentication * RFC5321 SMTP protocol * RFC6749 OAuth 2.0 Authorization Framework * Draft SMTP URL Interface <draft-earhart-url-smtp-00.txt> * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" | > | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | * RFC3207 SMTP over TLS * RFC4422 Simple Authentication and Security Layer (SASL) * RFC4616 PLAIN authentication * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism * RFC4954 SMTP Authentication * RFC5321 SMTP protocol * RFC6749 OAuth 2.0 Authorization Framework * RFC8314 Use of TLS for Email Submission and Access * Draft SMTP URL Interface <draft-earhart-url-smtp-00.txt> * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" |
︙ | ︙ | |||
1214 1215 1216 1217 1218 1219 1220 | is "no mail data". RFC-5321, sect. 4.1.1.4. Note: As some SSL backends, such as OpenSSL, will cause Curl_write() to fail when using a different pointer following a previous write, that returned CURLE_AGAIN, we duplicate the EOB now rather than when the bytes written doesn't equal len. */ if(smtp->trailing_crlf || !conn->data->state.infilesize) { | | | 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 | is "no mail data". RFC-5321, sect. 4.1.1.4. Note: As some SSL backends, such as OpenSSL, will cause Curl_write() to fail when using a different pointer following a previous write, that returned CURLE_AGAIN, we duplicate the EOB now rather than when the bytes written doesn't equal len. */ if(smtp->trailing_crlf || !conn->data->state.infilesize) { eob = strdup(&SMTP_EOB[2]); len = SMTP_EOB_LEN - 2; } else { eob = strdup(SMTP_EOB); len = SMTP_EOB_LEN; } |
︙ | ︙ | |||
1248 1249 1250 1251 1252 1253 1254 | pp->response = Curl_now(); free(eob); } state(conn, SMTP_POSTDATA); | | < < < < < | 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 | pp->response = Curl_now(); free(eob); } state(conn, SMTP_POSTDATA); /* Run the state-machine */ result = smtp_block_statemach(conn, FALSE); } /* Clear the transfer mode for the next request */ smtp->transfer = FTPTRANSFER_BODY; return result; |
︙ | ︙ |
Changes to jni/curl/lib/socks.c.
︙ | ︙ | |||
151 152 153 154 155 156 157 | /* DNS resolve only for SOCKS4, not SOCKS4a */ if(!protocol4a) { struct Curl_dns_entry *dns; Curl_addrinfo *hp = NULL; int rc; | | | 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | /* DNS resolve only for SOCKS4, not SOCKS4a */ if(!protocol4a) { struct Curl_dns_entry *dns; Curl_addrinfo *hp = NULL; int rc; rc = Curl_resolv(conn, hostname, remote_port, FALSE, &dns); if(rc == CURLRESOLV_ERROR) return CURLE_COULDNT_RESOLVE_PROXY; if(rc == CURLRESOLV_PENDING) /* ignores the return code, but 'dns' remains NULL on failure */ (void)Curl_resolver_wait_resolv(conn, &dns); |
︙ | ︙ | |||
286 287 288 289 290 291 292 | * 93: request rejected because the client program and identd * report different user-ids */ /* wrong version ? */ if(socksreq[0] != 0) { failf(data, | | | 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 | * 93: request rejected because the client program and identd * report different user-ids */ /* wrong version ? */ if(socksreq[0] != 0) { failf(data, "SOCKS4 reply has wrong version, version should be 0."); return CURLE_COULDNT_CONNECT; } /* Result */ switch(socksreq[1]) { case 90: infof(data, "SOCKS4%s request granted.\n", protocol4a?"a":""); |
︙ | ︙ | |||
523 524 525 526 527 528 529 | * +----+------+----------+------+----------+ * | 1 | 1 | 1 to 255 | 1 | 1 to 255 | * +----+------+----------+------+----------+ */ len = 0; socksreq[len++] = 1; /* username/pw subnegotiation version */ socksreq[len++] = (unsigned char) proxy_user_len; | | > > > > > > | > > > > > > | 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 | * +----+------+----------+------+----------+ * | 1 | 1 | 1 to 255 | 1 | 1 to 255 | * +----+------+----------+------+----------+ */ len = 0; socksreq[len++] = 1; /* username/pw subnegotiation version */ socksreq[len++] = (unsigned char) proxy_user_len; if(proxy_user && proxy_user_len) { /* the length must fit in a single byte */ if(proxy_user_len >= 255) { failf(data, "Excessive user name length for proxy auth"); return CURLE_BAD_FUNCTION_ARGUMENT; } memcpy(socksreq + len, proxy_user, proxy_user_len); } len += proxy_user_len; socksreq[len++] = (unsigned char) proxy_password_len; if(proxy_password && proxy_password_len) { /* the length must fit in a single byte */ if(proxy_password_len > 255) { failf(data, "Excessive password length for proxy auth"); return CURLE_BAD_FUNCTION_ARGUMENT; } memcpy(socksreq + len, proxy_password, proxy_password_len); } len += proxy_password_len; code = Curl_write_plain(conn, sock, (char *)socksreq, len, &written); if(code || (len != written)) { failf(data, "Failed to send SOCKS5 sub-negotiation request."); return CURLE_COULDNT_CONNECT; } |
︙ | ︙ | |||
593 594 595 596 597 598 599 | socksreq[len++] = (char) hostname_len; /* address length */ memcpy(&socksreq[len], hostname, hostname_len); /* address str w/o NULL */ len += hostname_len; } else { struct Curl_dns_entry *dns; Curl_addrinfo *hp = NULL; | | | 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 | socksreq[len++] = (char) hostname_len; /* address length */ memcpy(&socksreq[len], hostname, hostname_len); /* address str w/o NULL */ len += hostname_len; } else { struct Curl_dns_entry *dns; Curl_addrinfo *hp = NULL; int rc = Curl_resolv(conn, hostname, remote_port, FALSE, &dns); if(rc == CURLRESOLV_ERROR) return CURLE_COULDNT_RESOLVE_HOST; if(rc == CURLRESOLV_PENDING) { /* this requires that we're in "wait for resolve" state */ code = Curl_resolver_wait_resolv(conn, &dns); |
︙ | ︙ |
Changes to jni/curl/lib/splay.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1997 - 2019, 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.haxx.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 |
︙ | ︙ | |||
194 195 196 197 198 199 200 | return x; } /* Deletes the very node we point out from the tree if it's there. Stores a * pointer to the new resulting tree in 'newroot'. * | | | 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | return x; } /* Deletes the very node we point out from the tree if it's there. Stores a * pointer to the new resulting tree in 'newroot'. * * Returns zero on success and non-zero on errors! * When returning error, it does not touch the 'newroot' pointer. * * NOTE: when the last node of the tree is removed, there's no tree left so * 'newroot' will be made to point to NULL. * * @unittest: 1309 */ |
︙ | ︙ |
Changes to jni/curl/lib/ssh-libssh.c.
︙ | ︙ | |||
1942 1943 1944 1945 1946 1947 1948 | for the protocol_connect and doing states */ return myssh_perform_getsock(conn, sock, numsocks); } static void myssh_block2waitfor(struct connectdata *conn, bool block) { struct ssh_conn *sshc = &conn->proto.sshc; | < | | 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 | for the protocol_connect and doing states */ return myssh_perform_getsock(conn, sock, numsocks); } static void myssh_block2waitfor(struct connectdata *conn, bool block) { struct ssh_conn *sshc = &conn->proto.sshc; /* If it didn't block, or nothing was returned by ssh_get_poll_flags * have the original set */ conn->waitfor = sshc->orig_waitfor; if(block) { int dir = ssh_get_poll_flags(sshc->ssh_session); if(dir & SSH_READ_PENDING) { /* translate the libssh define bits into our own bit defines */ conn->waitfor = KEEP_RECV; } else if(dir & SSH_WRITE_PENDING) { conn->waitfor = KEEP_SEND; } |
︙ | ︙ | |||
2008 2009 2010 2011 2012 2013 2014 | if(left < 0) { failf(data, "Operation timed out"); return CURLE_OPERATION_TIMEDOUT; } } if(!result && block) { | < | < | 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 | if(left < 0) { failf(data, "Operation timed out"); return CURLE_OPERATION_TIMEDOUT; } } if(!result && block) { curl_socket_t fd_read = conn->sock[FIRSTSOCKET]; /* wait for the socket to become ready */ (void) Curl_socket_check(fd_read, CURL_SOCKET_BAD, CURL_SOCKET_BAD, left > 1000 ? 1000 : left); } } |
︙ | ︙ | |||
2048 2049 2050 2051 2052 2053 2054 | */ static CURLcode myssh_connect(struct connectdata *conn, bool *done) { struct ssh_conn *ssh; CURLcode result; curl_socket_t sock = conn->sock[FIRSTSOCKET]; struct Curl_easy *data = conn->data; | < | 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 | */ static CURLcode myssh_connect(struct connectdata *conn, bool *done) { struct ssh_conn *ssh; CURLcode result; curl_socket_t sock = conn->sock[FIRSTSOCKET]; struct Curl_easy *data = conn->data; /* initialize per-handle data if not already */ if(!data->req.protop) myssh_setup_connection(conn); /* We default to persistent connections. We set this already in this connect function to make the re-use checks properly be able to check this bit. */ |
︙ | ︙ | |||
2102 2103 2104 2105 2106 2107 2108 | "zlib,zlib@openssh.com,none"); } ssh->privkey = NULL; ssh->pubkey = NULL; if(data->set.str[STRING_SSH_PUBLIC_KEY]) { | | | | 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 | "zlib,zlib@openssh.com,none"); } ssh->privkey = NULL; ssh->pubkey = NULL; if(data->set.str[STRING_SSH_PUBLIC_KEY]) { int rc = ssh_pki_import_pubkey_file(data->set.str[STRING_SSH_PUBLIC_KEY], &ssh->pubkey); if(rc != SSH_OK) { failf(data, "Could not load public key file"); /* ignore */ } } /* we do not verify here, we do it at the state machine, |
︙ | ︙ | |||
2223 2224 2225 2226 2227 2228 2229 | done functions */ static CURLcode myssh_done(struct connectdata *conn, CURLcode status) { CURLcode result = CURLE_OK; struct SSHPROTO *protop = conn->data->req.protop; if(!status) { | | < < < < < | 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 | done functions */ static CURLcode myssh_done(struct connectdata *conn, CURLcode status) { CURLcode result = CURLE_OK; struct SSHPROTO *protop = conn->data->req.protop; if(!status) { /* run the state-machine */ result = myssh_block_statemach(conn, FALSE); } else result = status; if(protop) Curl_safefree(protop->path); |
︙ | ︙ |
Changes to jni/curl/lib/ssh.c.
︙ | ︙ | |||
286 287 288 289 290 291 292 | case LIBSSH2_ERROR_TIMEOUT: return CURLE_OPERATION_TIMEDOUT; case LIBSSH2_ERROR_EAGAIN: return CURLE_AGAIN; } | < < < < | 286 287 288 289 290 291 292 293 294 295 296 297 298 299 | case LIBSSH2_ERROR_TIMEOUT: return CURLE_OPERATION_TIMEDOUT; case LIBSSH2_ERROR_EAGAIN: return CURLE_AGAIN; } return CURLE_SSH; } static LIBSSH2_ALLOC_FUNC(my_libssh2_malloc) { (void)abstract; /* arg not used */ return malloc(count); |
︙ | ︙ | |||
587 588 589 590 591 592 593 | static CURLcode ssh_check_fingerprint(struct connectdata *conn) { struct ssh_conn *sshc = &conn->proto.sshc; struct Curl_easy *data = conn->data; const char *pubkey_md5 = data->set.str[STRING_SSH_HOST_PUBLIC_KEY_MD5]; char md5buffer[33]; | < > | 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 | static CURLcode ssh_check_fingerprint(struct connectdata *conn) { struct ssh_conn *sshc = &conn->proto.sshc; struct Curl_easy *data = conn->data; const char *pubkey_md5 = data->set.str[STRING_SSH_HOST_PUBLIC_KEY_MD5]; char md5buffer[33]; const char *fingerprint = libssh2_hostkey_hash(sshc->ssh_session, LIBSSH2_HOSTKEY_HASH_MD5); if(fingerprint) { /* The fingerprint points to static storage (!), don't free() it. */ int i; for(i = 0; i < 16; i++) msnprintf(&md5buffer[i*2], 3, "%02x", (unsigned char) fingerprint[i]); infof(data, "SSH MD5 fingerprint: %s\n", md5buffer); } /* Before we authenticate we check the hostkey's MD5 fingerprint * against a known fingerprint, if available. |
︙ | ︙ | |||
733 734 735 736 737 738 739 | * Check the supported auth types in the order I feel is most secure * with the requested type of authentication */ sshc->authed = FALSE; if((data->set.ssh_auth_types & CURLSSH_AUTH_PUBLICKEY) && (strstr(sshc->authlist, "publickey") != NULL)) { | < < < < < > > > > > | 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 | * Check the supported auth types in the order I feel is most secure * with the requested type of authentication */ sshc->authed = FALSE; if((data->set.ssh_auth_types & CURLSSH_AUTH_PUBLICKEY) && (strstr(sshc->authlist, "publickey") != NULL)) { bool out_of_memory = FALSE; sshc->rsa_pub = sshc->rsa = NULL; if(data->set.str[STRING_SSH_PRIVATE_KEY]) sshc->rsa = strdup(data->set.str[STRING_SSH_PRIVATE_KEY]); else { /* To ponder about: should really the lib be messing about with the HOME environment variable etc? */ char *home = curl_getenv("HOME"); /* If no private key file is specified, try some common paths. */ if(home) { /* Try ~/.ssh first. */ sshc->rsa = aprintf("%s/.ssh/id_rsa", home); if(!sshc->rsa) out_of_memory = TRUE; else if(access(sshc->rsa, R_OK) != 0) { Curl_safefree(sshc->rsa); sshc->rsa = aprintf("%s/.ssh/id_dsa", home); if(!sshc->rsa) out_of_memory = TRUE; else if(access(sshc->rsa, R_OK) != 0) { Curl_safefree(sshc->rsa); } } free(home); } if(!out_of_memory && !sshc->rsa) { /* Nothing found; try the current dir. */ sshc->rsa = strdup("id_rsa"); if(sshc->rsa && access(sshc->rsa, R_OK) != 0) { Curl_safefree(sshc->rsa); sshc->rsa = strdup("id_dsa"); |
︙ | ︙ | |||
791 792 793 794 795 796 797 | && data->set.str[STRING_SSH_PUBLIC_KEY][0]) { sshc->rsa_pub = strdup(data->set.str[STRING_SSH_PUBLIC_KEY]); if(!sshc->rsa_pub) out_of_memory = TRUE; } if(out_of_memory || sshc->rsa == NULL) { | < < < | 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 | && data->set.str[STRING_SSH_PUBLIC_KEY][0]) { sshc->rsa_pub = strdup(data->set.str[STRING_SSH_PUBLIC_KEY]); if(!sshc->rsa_pub) out_of_memory = TRUE; } if(out_of_memory || sshc->rsa == NULL) { Curl_safefree(sshc->rsa); Curl_safefree(sshc->rsa_pub); state(conn, SSH_SESSION_FREE); sshc->actualcode = CURLE_OUT_OF_MEMORY; break; } sshc->passphrase = data->set.ssl.key_passwd; if(!sshc->passphrase) sshc->passphrase = ""; if(sshc->rsa_pub) infof(data, "Using SSH public key file '%s'\n", sshc->rsa_pub); infof(data, "Using SSH private key file '%s'\n", sshc->rsa); state(conn, SSH_AUTH_PKEY); } else { |
︙ | ︙ | |||
3061 3062 3063 3064 3065 3066 3067 | done functions */ static CURLcode ssh_done(struct connectdata *conn, CURLcode status) { CURLcode result = CURLE_OK; struct SSHPROTO *sftp_scp = conn->data->req.protop; if(!status) { | | < < < < < | 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 | done functions */ static CURLcode ssh_done(struct connectdata *conn, CURLcode status) { CURLcode result = CURLE_OK; struct SSHPROTO *sftp_scp = conn->data->req.protop; if(!status) { /* run the state-machine */ result = ssh_block_statemach(conn, FALSE); } else result = status; if(sftp_scp) Curl_safefree(sftp_scp->path); |
︙ | ︙ |
Changes to jni/curl/lib/tftp.c.
︙ | ︙ | |||
1005 1006 1007 1008 1009 1010 1011 | * little gain for UDP */ connclose(conn, "TFTP"); state->conn = conn; state->sockfd = state->conn->sock[FIRSTSOCKET]; state->state = TFTP_STATE_START; state->error = TFTP_ERR_NONE; | | | 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 | * little gain for UDP */ connclose(conn, "TFTP"); state->conn = conn; state->sockfd = state->conn->sock[FIRSTSOCKET]; state->state = TFTP_STATE_START; state->error = TFTP_ERR_NONE; state->blksize = blksize; state->requested_blksize = blksize; ((struct sockaddr *)&state->local_addr)->sa_family = (CURL_SA_FAMILY_T)(conn->ip_addr->ai_family); tftp_set_timeouts(state); |
︙ | ︙ |
Changes to jni/curl/lib/timeval.c.
︙ | ︙ | |||
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | /* ** clock_gettime() is granted to be increased monotonically when the ** monotonic clock is queried. Time starting point is unspecified, it ** could be the system start-up time, the Epoch, or something else, ** in any case the time starting point does not change once that the ** system has started up. */ struct timeval now; struct curltime cnow; struct timespec tsnow; /* ** clock_gettime() may be defined by Apple's SDK as weak symbol thus ** code compiles but fails during run-time if clock_gettime() is ** called on unsupported OS version. | > > | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | /* ** clock_gettime() is granted to be increased monotonically when the ** monotonic clock is queried. Time starting point is unspecified, it ** could be the system start-up time, the Epoch, or something else, ** in any case the time starting point does not change once that the ** system has started up. */ #ifdef HAVE_GETTIMEOFDAY struct timeval now; #endif struct curltime cnow; struct timespec tsnow; /* ** clock_gettime() may be defined by Apple's SDK as weak symbol thus ** code compiles but fails during run-time if clock_gettime() is ** called on unsupported OS version. |
︙ | ︙ |
Changes to jni/curl/lib/transfer.c.
︙ | ︙ | |||
153 154 155 156 157 158 159 | CURLcode Curl_fillreadbuffer(struct connectdata *conn, size_t bytes, size_t *nreadp) { struct Curl_easy *data = conn->data; size_t buffersize = bytes; size_t nread; | < < < < < < < > > > > | 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 | CURLcode Curl_fillreadbuffer(struct connectdata *conn, size_t bytes, size_t *nreadp) { struct Curl_easy *data = conn->data; size_t buffersize = bytes; size_t nread; curl_read_callback readfunc = NULL; void *extra_data = NULL; #ifdef CURL_DOES_CONVERSIONS bool sending_http_headers = FALSE; if(conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_RTSP)) { const struct HTTP *http = data->req.protop; if(http->sending == HTTPSEND_REQUEST) /* We're sending the HTTP request headers, not the data. Remember that so we don't re-translate them into garbage. */ sending_http_headers = TRUE; } #endif #ifndef CURL_DISABLE_HTTP if(data->state.trailers_state == TRAILERS_INITIALIZED) { struct curl_slist *trailers = NULL; CURLcode c; int trailers_ret_code; /* at this point we already verified that the callback exists so we compile and store the trailers buffer, then proceed */ infof(data, "Moving trailers state machine from initialized to sending.\n"); data->state.trailers_state = TRAILERS_SENDING; data->state.trailers_buf = Curl_add_buffer_init(); if(!data->state.trailers_buf) { |
︙ | ︙ | |||
292 293 294 295 296 297 298 | portion must always be translated to the network encoding. To further complicate matters, line end conversion might be done later on, so we need to prevent CRLFs from becoming CRCRLFs if that's the case. To do this we use bare LFs here, knowing they'll become CRLFs later on. */ | | > | 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 | portion must always be translated to the network encoding. To further complicate matters, line end conversion might be done later on, so we need to prevent CRLFs from becoming CRCRLFs if that's the case. To do this we use bare LFs here, knowing they'll become CRLFs later on. */ bool added_crlf = FALSE; int hexlen = 0; const char *endofline_native; const char *endofline_network; if( #ifdef CURL_DO_LINEEND_CONV (data->set.prefer_ascii) || #endif (data->set.crlf)) { /* \n will become \r\n later on */ endofline_native = "\n"; endofline_network = "\x0a"; } else { endofline_native = "\r\n"; endofline_network = "\x0d\x0a"; } /* if we're not handling trailing data, proceed as usual */ if(data->state.trailers_state != TRAILERS_SENDING) { char hexbuffer[11] = ""; hexlen = msnprintf(hexbuffer, sizeof(hexbuffer), "%zx%s", nread, endofline_native); /* move buffer pointer */ data->req.upload_fromhere -= hexlen; nread += hexlen; |
︙ | ︙ | |||
459 460 461 462 463 464 465 | Curl_set_in_callback(data, true); err = (data->set.ioctl_func)(data, CURLIOCMD_RESTARTREAD, data->set.ioctl_client); Curl_set_in_callback(data, false); infof(data, "the ioctl callback returned %d\n", (int)err); if(err) { | < | 457 458 459 460 461 462 463 464 465 466 467 468 469 470 | Curl_set_in_callback(data, true); err = (data->set.ioctl_func)(data, CURLIOCMD_RESTARTREAD, data->set.ioctl_client); Curl_set_in_callback(data, false); infof(data, "the ioctl callback returned %d\n", (int)err); if(err) { failf(data, "ioctl callback returned error %d", (int)err); return CURLE_SEND_FAIL_REWIND; } } else { /* If no CURLOPT_READFUNCTION is used, we know that we operate on a given FILE * stream and we can actually attempt to rewind that |
︙ | ︙ | |||
499 500 501 502 503 504 505 | close, which we emulate it using conn->proto.httpc.closed = TRUE. The thing is if we read everything, then http2_recv won't be called and we cannot signal the HTTP/2 stream has closed. As a workaround, we return nonzero here to call http2_recv. */ ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20); #else Curl_ssl_data_pending(conn, FIRSTSOCKET); | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 496 497 498 499 500 501 502 503 504 505 506 507 508 509 | close, which we emulate it using conn->proto.httpc.closed = TRUE. The thing is if we read everything, then http2_recv won't be called and we cannot signal the HTTP/2 stream has closed. As a workaround, we return nonzero here to call http2_recv. */ ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20); #else Curl_ssl_data_pending(conn, FIRSTSOCKET); #endif } /* * Check to see if CURLOPT_TIMECONDITION was met by comparing the time of the * remote document with the time provided by CURLOPT_TIMEVAL */ |
︙ | ︙ | |||
605 606 607 608 609 610 611 | call Curl_read to ensure that http2_handle_stream_close is called when we read all incoming bytes for a particular stream. */ !((conn->handler->protocol & PROTO_FAMILY_HTTP) && conn->httpversion == 20) && #endif k->size != -1 && !k->header) { | | < < | 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 | call Curl_read to ensure that http2_handle_stream_close is called when we read all incoming bytes for a particular stream. */ !((conn->handler->protocol & PROTO_FAMILY_HTTP) && conn->httpversion == 20) && #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; } if(bytestoread) { /* receive data from the network! */ |
︙ | ︙ | |||
646 647 648 649 650 651 652 | /* indicates data of zero size, i.e. empty file */ is_empty_data = ((nread == 0) && (k->bodywrites == 0)) ? TRUE : FALSE; /* NUL terminate, allowing string ops to be used */ if(0 < nread || is_empty_data) { k->buf[nread] = 0; } | | | 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 | /* indicates data of zero size, i.e. empty file */ is_empty_data = ((nread == 0) && (k->bodywrites == 0)) ? TRUE : FALSE; /* NUL terminate, allowing string ops to be used */ if(0 < nread || is_empty_data) { k->buf[nread] = 0; } else { /* if we receive 0 or less here, the server closed the connection and we bail out from this! */ DEBUGF(infof(data, "nread <= 0, server closed connection, bailing\n")); k->keepon &= ~KEEP_RECV; break; } |
︙ | ︙ | |||
689 690 691 692 693 694 695 | break; } if(stop_reading) { /* We've stopped dealing with input, get out of the do-while loop */ if(nread > 0) { | < | < < < < < < < | | | | < | 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 | break; } if(stop_reading) { /* We've stopped dealing with input, get out of the do-while loop */ if(nread > 0) { infof(data, "Excess found:" " excess = %zd" " url = %s (zero-length body)\n", nread, data->state.up.path); } break; } } #endif /* CURL_DISABLE_HTTP */ |
︙ | ︙ | |||
833 834 835 836 837 838 839 | if(CHUNKE_STOP == res) { size_t dataleft; /* we're done reading chunks! */ k->keepon &= ~KEEP_RECV; /* read no more */ /* There are now possibly N number of bytes at the end of the str buffer that weren't written to the client. | < < < < < < < < | < < < < < < < < < < | | | | | | < | 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 | if(CHUNKE_STOP == res) { size_t dataleft; /* we're done reading chunks! */ k->keepon &= ~KEEP_RECV; /* read no more */ /* There are now possibly N number of bytes at the end of the str buffer that weren't written to the client. Push it back to be read on the next pass. */ dataleft = conn->chunk.dataleft; if(dataleft != 0) { infof(conn->data, "Leftovers after chunking: %zu bytes\n", dataleft); } } /* If it returned OK, we just keep going */ } #endif /* CURL_DISABLE_HTTP */ /* Account for body content stored in the header buffer */ if((k->badheader == HEADER_PARTHEADER) && !k->ignorebody) { DEBUGF(infof(data, "Increasing bytecount by %zu from hbuflen\n", k->hbuflen)); k->bytecount += k->hbuflen; } if((-1 != k->maxdownload) && (k->bytecount + nread >= k->maxdownload)) { excess = (size_t)(k->bytecount + nread - k->maxdownload); if(excess > 0 && !k->ignorebody) { infof(data, "Excess found in a read:" " excess = %zu" ", size = %" CURL_FORMAT_CURL_OFF_T ", maxdownload = %" CURL_FORMAT_CURL_OFF_T ", bytecount = %" CURL_FORMAT_CURL_OFF_T "\n", excess, k->size, k->maxdownload, k->bytecount); } nread = (ssize_t) (k->maxdownload - k->bytecount); if(nread < 0) /* this should be unusual */ nread = 0; k->keepon &= ~KEEP_RECV; /* we're done reading */ |
︙ | ︙ | |||
1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 | /* In case the handle is re-used and an authentication method was picked in the session we need to make sure we only use the one(s) we now consider to be fine */ data->state.authhost.picked &= data->state.authhost.want; data->state.authproxy.picked &= data->state.authproxy.want; if(data->state.wildcardmatch) { struct WildcardData *wc = &data->wildcard; if(wc->state < CURLWC_INIT) { result = Curl_wildcard_init(wc); /* init wildcard structures */ if(result) return CURLE_OUT_OF_MEMORY; } } } return result; } /* * Curl_posttransfer() is called immediately after a transfer ends | > > | 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 | /* In case the handle is re-used and an authentication method was picked in the session we need to make sure we only use the one(s) we now consider to be fine */ data->state.authhost.picked &= data->state.authhost.want; data->state.authproxy.picked &= data->state.authproxy.want; #ifndef CURL_DISABLE_FTP if(data->state.wildcardmatch) { struct WildcardData *wc = &data->wildcard; if(wc->state < CURLWC_INIT) { result = Curl_wildcard_init(wc); /* init wildcard structures */ if(result) return CURLE_OUT_OF_MEMORY; } } #endif } return result; } /* * Curl_posttransfer() is called immediately after a transfer ends |
︙ | ︙ |
Changes to jni/curl/lib/url.c.
︙ | ︙ | |||
105 106 107 108 109 110 111 | #include "curl_ldap.h" #include "ssh.h" #include "imap.h" #include "url.h" #include "connect.h" #include "inet_ntop.h" #include "http_ntlm.h" | < < | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | #include "curl_ldap.h" #include "ssh.h" #include "imap.h" #include "url.h" #include "connect.h" #include "inet_ntop.h" #include "http_ntlm.h" #include "socks.h" #include "curl_rtmp.h" #include "gopher.h" #include "http_proxy.h" #include "conncache.h" #include "multihandle.h" #include "dotdot.h" #include "strdup.h" #include "setopt.h" #include "altsvc.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" |
︙ | ︙ | |||
183 184 185 186 187 188 189 | &Curl_handler_file, #endif #ifndef CURL_DISABLE_TFTP &Curl_handler_tftp, #endif | | | | 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | &Curl_handler_file, #endif #ifndef CURL_DISABLE_TFTP &Curl_handler_tftp, #endif #if defined(USE_SSH) &Curl_handler_scp, #endif #if defined(USE_SSH) &Curl_handler_sftp, #endif #ifndef CURL_DISABLE_IMAP &Curl_handler_imap, #ifdef USE_SSL &Curl_handler_imaps, |
︙ | ︙ | |||
300 301 302 303 304 305 306 | Curl_safefree(up->hostname); Curl_safefree(up->port); Curl_safefree(up->user); Curl_safefree(up->password); Curl_safefree(up->options); Curl_safefree(up->path); Curl_safefree(up->query); | < | | 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 | Curl_safefree(up->hostname); Curl_safefree(up->port); Curl_safefree(up->user); Curl_safefree(up->password); Curl_safefree(up->options); Curl_safefree(up->path); Curl_safefree(up->query); curl_url_cleanup(data->state.uh); data->state.uh = NULL; } /* * This is the internal function curl_easy_cleanup() calls. This should * cleanup and free all resources associated with this sessionhandle. * |
︙ | ︙ | |||
377 378 379 380 381 382 383 | Curl_safefree(data->state.ulbuf); Curl_flush_cookies(data, 1); #ifdef USE_ALTSVC Curl_altsvc_save(data->asi, data->set.str[STRING_ALTSVC]); Curl_altsvc_cleanup(data->asi); data->asi = NULL; #endif | > | > | 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 | Curl_safefree(data->state.ulbuf); Curl_flush_cookies(data, 1); #ifdef USE_ALTSVC Curl_altsvc_save(data->asi, data->set.str[STRING_ALTSVC]); Curl_altsvc_cleanup(data->asi); data->asi = NULL; #endif #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.resolver); Curl_http2_cleanup_dependencies(data); |
︙ | ︙ | |||
436 437 438 439 440 441 442 443 444 445 446 | set->filesize = -1; /* we don't know the size */ set->postfieldsize = -1; /* unknown size */ set->maxredirs = -1; /* allow any amount by default */ set->httpreq = HTTPREQ_GET; /* Default HTTP request */ set->rtspreq = RTSPREQ_OPTIONS; /* Default RTSP request */ set->ftp_use_epsv = TRUE; /* FTP defaults to EPSV operations */ set->ftp_use_eprt = TRUE; /* FTP defaults to EPRT operations */ set->ftp_use_pret = FALSE; /* mainly useful for drftpd servers */ set->ftp_filemethod = FTPFILE_MULTICWD; | > | | 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 | set->filesize = -1; /* we don't know the size */ set->postfieldsize = -1; /* unknown size */ set->maxredirs = -1; /* allow any amount by default */ set->httpreq = HTTPREQ_GET; /* Default HTTP request */ set->rtspreq = RTSPREQ_OPTIONS; /* Default RTSP request */ #ifndef CURL_DISABLE_FILE set->ftp_use_epsv = TRUE; /* FTP defaults to EPSV operations */ set->ftp_use_eprt = TRUE; /* FTP defaults to EPRT operations */ set->ftp_use_pret = FALSE; /* mainly useful for drftpd servers */ set->ftp_filemethod = FTPFILE_MULTICWD; #endif set->dns_cache_timeout = 60; /* Timeout every 60 seconds by default */ /* Set the default size of the SSL session ID cache */ set->general_ssl.max_ssl_sessions = 5; set->proxyport = 0; set->proxytype = CURLPROXY_HTTP; /* defaults to HTTP proxy */ |
︙ | ︙ | |||
539 540 541 542 543 544 545 546 547 548 549 550 551 552 | set->sep_headers = TRUE; /* separated header lists by default */ set->buffer_size = READBUFFER_SIZE; set->upload_buffer_size = UPLOADBUFFER_DEFAULT; set->happy_eyeballs_timeout = CURL_HET_DEFAULT; set->fnmatch = ZERO_NULL; set->upkeep_interval_ms = CURL_UPKEEP_INTERVAL_DEFAULT; set->maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */ set->http09_allowed = TRUE; set->httpversion = #ifdef USE_NGHTTP2 CURL_HTTP_VERSION_2TLS #else CURL_HTTP_VERSION_1_1 #endif | > | 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 | set->sep_headers = TRUE; /* separated header lists by default */ set->buffer_size = READBUFFER_SIZE; set->upload_buffer_size = UPLOADBUFFER_DEFAULT; set->happy_eyeballs_timeout = CURL_HET_DEFAULT; set->fnmatch = ZERO_NULL; set->upkeep_interval_ms = CURL_UPKEEP_INTERVAL_DEFAULT; set->maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */ set->maxage_conn = 118; set->http09_allowed = TRUE; set->httpversion = #ifdef USE_NGHTTP2 CURL_HTTP_VERSION_2TLS #else CURL_HTTP_VERSION_1_1 #endif |
︙ | ︙ | |||
690 691 692 693 694 695 696 | if(CURL_SOCKET_BAD != conn->sock[FIRSTSOCKET]) Curl_closesocket(conn, conn->sock[FIRSTSOCKET]); if(CURL_SOCKET_BAD != conn->tempsock[0]) Curl_closesocket(conn, conn->tempsock[0]); if(CURL_SOCKET_BAD != conn->tempsock[1]) Curl_closesocket(conn, conn->tempsock[1]); | < < < < < | 691 692 693 694 695 696 697 698 699 700 701 702 703 704 | if(CURL_SOCKET_BAD != conn->sock[FIRSTSOCKET]) Curl_closesocket(conn, conn->sock[FIRSTSOCKET]); if(CURL_SOCKET_BAD != conn->tempsock[0]) Curl_closesocket(conn, conn->tempsock[0]); if(CURL_SOCKET_BAD != conn->tempsock[1]) Curl_closesocket(conn, conn->tempsock[1]); /* unlink ourselves. this should be called last since other shutdown procedures need a valid conn->data and this may clear it. */ Curl_conncache_remove_conn(conn->data, conn, TRUE); } static void conn_free(struct connectdata *conn) { |
︙ | ︙ | |||
735 736 737 738 739 740 741 | Curl_safefree(conn->trailer); Curl_safefree(conn->host.rawalloc); /* host name buffer */ Curl_safefree(conn->conn_to_host.rawalloc); /* host name buffer */ Curl_safefree(conn->hostname_resolve); Curl_safefree(conn->secondaryhostname); Curl_safefree(conn->http_proxy.host.rawalloc); /* http proxy name buffer */ Curl_safefree(conn->socks_proxy.host.rawalloc); /* socks proxy name buffer */ | < < | < < | 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 | Curl_safefree(conn->trailer); Curl_safefree(conn->host.rawalloc); /* host name buffer */ Curl_safefree(conn->conn_to_host.rawalloc); /* host name buffer */ Curl_safefree(conn->hostname_resolve); Curl_safefree(conn->secondaryhostname); Curl_safefree(conn->http_proxy.host.rawalloc); /* http proxy name buffer */ Curl_safefree(conn->socks_proxy.host.rawalloc); /* socks proxy name buffer */ Curl_safefree(conn->connect_state); conn_reset_all_postponed_data(conn); Curl_llist_destroy(&conn->easyq, NULL); Curl_safefree(conn->localdev); Curl_free_primary_ssl_config(&conn->ssl_config); Curl_free_primary_ssl_config(&conn->proxy_ssl_config); #ifdef USE_UNIX_SOCKETS Curl_safefree(conn->unix_domain_socket); #endif |
︙ | ︙ | |||
800 801 802 803 804 805 806 | conn->dns_entry = NULL; } Curl_hostcache_prune(data); /* kill old DNS cache entries */ #if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) /* Cleanup NTLM connection-related data */ | | | > > > > | 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 | conn->dns_entry = NULL; } Curl_hostcache_prune(data); /* kill old DNS cache entries */ #if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) /* Cleanup NTLM connection-related data */ Curl_http_auth_cleanup_ntlm(conn); #endif #if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO) /* Cleanup NEGOTIATE connection-related data */ Curl_http_auth_cleanup_negotiate(conn); #endif /* the protocol specific disconnect handler and conn_shutdown need a transfer for the connection! */ conn->data = data; if(conn->bits.connect_only) /* treat the connection as dead in CONNECT_ONLY situations */ dead_connection = TRUE; if(conn->handler->disconnect) /* This is set if protocol-specific cleanups should be made */ conn->handler->disconnect(conn, dead_connection); conn_shutdown(conn); conn_free(conn); |
︙ | ︙ | |||
839 840 841 842 843 844 845 | /* timeout */ ret_val = FALSE; return ret_val; } /* | | | | | | | | < < < < < < < < < < < < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < > > > > < | | < | 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 | /* timeout */ ret_val = FALSE; return ret_val; } /* * IsMultiplexingPossible() * * Return a bitmask with the available multiplexing options for the given * requested connection. */ static int IsMultiplexingPossible(const struct Curl_easy *handle, const struct connectdata *conn) { int avail = 0; /* If a HTTP protocol and multiplexing is enabled */ if((conn->handler->protocol & PROTO_FAMILY_HTTP) && (!conn->bits.protoconnstart || !conn->bits.close)) { if(Curl_multiplex_wanted(handle->multi) && (handle->set.httpversion >= CURL_HTTP_VERSION_2)) /* allows HTTP/2 */ avail |= CURLPIPE_MULTIPLEX; } return avail; } #ifndef CURL_DISABLE_PROXY static bool proxy_info_matches(const struct proxy_info* data, const struct proxy_info* needle) { if((data->proxytype == needle->proxytype) && (data->port == needle->port) && Curl_safe_strcasecompare(data->host.name, needle->host.name)) return TRUE; return FALSE; } #else /* disabled, won't get called */ #define proxy_info_matches(x,y) FALSE #endif /* * This function checks if the given connection is dead and extracts it from * the connection cache if so. * * When this is called as a Curl_conncache_foreach() callback, the connection * cache lock is held! * * Returns TRUE if the connection was dead and extracted. */ static bool extract_if_dead(struct connectdata *conn, struct Curl_easy *data) { if(!CONN_INUSE(conn) && !conn->data) { /* The check for a dead socket makes sense only if the connection isn't in use */ bool dead; if(conn->handler->connection_check) { /* The protocol has a special method for checking the state of the connection. Use it to check if the connection is dead. */ unsigned int state; struct Curl_easy *olddata = conn->data; |
︙ | ︙ | |||
1043 1044 1045 1046 1047 1048 1049 1050 | /* disconnect it */ (void)Curl_disconnect(data, prune.extracted, /* dead_connection */TRUE); } data->state.conn_cache->last_cleanup = now; } } | > > | > > > > > > > > > | | | > | | < | > < < < < < < < < < < | | | | | | | | | | < | | | < | | | | | > | | < < < < < < < < < < < < < < < | | 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 | /* disconnect it */ (void)Curl_disconnect(data, prune.extracted, /* dead_connection */TRUE); } data->state.conn_cache->last_cleanup = now; } } /* A connection has to have been idle for a shorter time than 'maxage_conn' to be subject for reuse. The success rate is just too low after this. */ static bool conn_maxage(struct Curl_easy *data, struct connectdata *conn, struct curltime now) { if(!conn->data) { timediff_t idletime = Curl_timediff(now, conn->lastused); idletime /= 1000; /* integer seconds is fine */ if(idletime/1000 > data->set.maxage_conn) { infof(data, "Too old connection (%ld seconds), disconnect it\n", idletime); return TRUE; } } return FALSE; } /* * Given one filled in connection struct (named needle), this function should * detect if there already is one that has all the significant details * exactly the same and thus should be used instead. * * If there is a match, this function returns TRUE - and has marked the * connection as 'in-use'. It must later be called with ConnectionDone() to * return back to 'idle' (unused) state. * * The force_reuse flag is set if the connection must be used. */ static bool ConnectionExists(struct Curl_easy *data, struct connectdata *needle, struct connectdata **usethis, bool *force_reuse, bool *waitpipe) { struct connectdata *check; struct connectdata *chosen = 0; bool foundPendingCandidate = FALSE; bool canmultiplex = IsMultiplexingPossible(data, needle); struct connectbundle *bundle; struct curltime now = Curl_now(); #ifdef USE_NTLM bool wantNTLMhttp = ((data->state.authhost.want & (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) && (needle->handler->protocol & PROTO_FAMILY_HTTP)); bool wantProxyNTLMhttp = (needle->bits.proxy_user_passwd && ((data->state.authproxy.want & (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) && (needle->handler->protocol & PROTO_FAMILY_HTTP))); #endif *force_reuse = FALSE; *waitpipe = FALSE; /* Look up the bundle with all the connections to this particular host. Locks the connection cache, beware of early returns! */ bundle = Curl_conncache_find_bundle(needle, data->state.conn_cache); if(bundle) { /* Max pipe length is zero (unlimited) for multiplexed connections */ struct curl_llist_element *curr; infof(data, "Found bundle for host %s: %p [%s]\n", (needle->bits.conn_to_host ? needle->conn_to_host.name : needle->host.name), (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ? "can multiplex" : "serially")); /* We can't multiplex if we don't know anything about the server */ if(canmultiplex) { if(bundle->multiuse == BUNDLE_UNKNOWN) { if((bundle->multiuse == BUNDLE_UNKNOWN) && data->set.pipewait) { infof(data, "Server doesn't support multiplex yet, wait\n"); *waitpipe = TRUE; Curl_conncache_unlock(data); return FALSE; /* no re-use */ } infof(data, "Server doesn't support multiplex (yet)\n"); canmultiplex = FALSE; } if((bundle->multiuse == BUNDLE_MULTIPLEX) && !Curl_multiplex_wanted(data->multi)) { infof(data, "Could multiplex, but not asked to!\n"); canmultiplex = FALSE; } if(bundle->multiuse == BUNDLE_NO_MULTIUSE) { infof(data, "Can not multiplex, even if we wanted to!\n"); canmultiplex = FALSE; } } curr = bundle->conn_list.head; while(curr) { bool match = FALSE; size_t multiplexed; /* * Note that if we use a HTTP proxy in normal mode (no tunneling), we * check connections to that proxy and not to the actual remote server. */ check = curr->ptr; curr = curr->next; if(check->bits.connect_only) /* connect-only connections will not be reused */ continue; if(conn_maxage(data, check, now) || extract_if_dead(check, data)) { /* disconnect it */ (void)Curl_disconnect(data, check, /* dead_connection */TRUE); continue; } multiplexed = CONN_INUSE(check) && (bundle->multiuse == BUNDLE_MULTIPLEX); if(canmultiplex) { if(check->bits.protoconnstart && check->bits.close) continue; } else { if(multiplexed) { /* can only happen within multi handles, and means that another easy handle is using this connection */ continue; } if(Curl_resolver_asynch()) { /* ip_addr_str[0] is NUL only if the resolving of the name hasn't |
︙ | ︙ | |||
1206 1207 1208 1209 1210 1211 1212 | check->bits.close) { if(!check->bits.close) foundPendingCandidate = TRUE; /* Don't pick a connection that hasn't connected yet or that is going to get closed. */ infof(data, "Connection #%ld isn't open enough, can't reuse\n", check->connection_id); | < < < < < < < | 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 | check->bits.close) { if(!check->bits.close) foundPendingCandidate = TRUE; /* Don't pick a connection that hasn't connected yet or that is going to get closed. */ infof(data, "Connection #%ld isn't open enough, can't reuse\n", check->connection_id); continue; } } #ifdef USE_UNIX_SOCKETS if(needle->unix_domain_socket) { if(!check->unix_domain_socket) |
︙ | ︙ | |||
1283 1284 1285 1286 1287 1288 1289 | continue; if(check->ssl[FIRSTSOCKET].state != ssl_connection_complete) continue; } } } | | | | | | 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 | continue; if(check->ssl[FIRSTSOCKET].state != ssl_connection_complete) continue; } } } if(!canmultiplex && check->data) /* this request can't be multiplexed but the checked connection is already in use so we skip it */ continue; if(CONN_INUSE(check) && check->data && (check->data->multi != needle->data->multi)) /* this could be subject for multiplex use, but only if they belong to * the same multi handle */ continue; if(needle->localdev || needle->localport) { /* If we are bound to a specific local end (IP+port), we must not re-use a random other one, although if we didn't ask for a particular one we can reuse one that was bound. |
︙ | ︙ | |||
1382 1383 1384 1385 1386 1387 1388 | possible. (Especially we must not reuse the same connection if partway through a handshake!) */ if(wantNTLMhttp) { if(strcmp(needle->user, check->user) || strcmp(needle->passwd, check->passwd)) continue; } | | | | | | | | < | < < < < < | | < < < < < < < < < < < < < < < < | | | | < | 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 | possible. (Especially we must not reuse the same connection if partway through a handshake!) */ if(wantNTLMhttp) { if(strcmp(needle->user, check->user) || strcmp(needle->passwd, check->passwd)) continue; } else if(check->http_ntlm_state != NTLMSTATE_NONE) { /* Connection is using NTLM auth but we don't want NTLM */ continue; } /* Same for Proxy NTLM authentication */ if(wantProxyNTLMhttp) { /* Both check->http_proxy.user and check->http_proxy.passwd can be * NULL */ if(!check->http_proxy.user || !check->http_proxy.passwd) continue; if(strcmp(needle->http_proxy.user, check->http_proxy.user) || strcmp(needle->http_proxy.passwd, check->http_proxy.passwd)) continue; } else if(check->proxy_ntlm_state != NTLMSTATE_NONE) { /* Proxy connection is using NTLM auth but we don't want NTLM */ continue; } if(wantNTLMhttp || wantProxyNTLMhttp) { /* Credentials are already checked, we can use this connection */ chosen = check; if((wantNTLMhttp && (check->http_ntlm_state != NTLMSTATE_NONE)) || (wantProxyNTLMhttp && (check->proxy_ntlm_state != NTLMSTATE_NONE))) { /* We must use this connection, no other */ *force_reuse = TRUE; break; } /* Continue look up for a better connection */ continue; } #endif if(canmultiplex) { /* We can multiplex if we want to. Let's continue looking for the optimal connection to use. */ if(!multiplexed) { /* We have the optimal connection. Let's stop looking. */ chosen = check; break; } #ifdef USE_NGHTTP2 /* If multiplexed, make sure we don't go over concurrency limit */ if(check->bits.multiplex) { /* Multiplexed connections can only be HTTP/2 for now */ struct http_conn *httpc = &check->proto.httpc; if(multiplexed >= httpc->settings.max_concurrent_streams) { infof(data, "MAX_CONCURRENT_STREAMS reached, skip (%zu)\n", multiplexed); continue; } } #endif /* When not multiplexed, we have a match here! */ chosen = check; infof(data, "Multiplexed connection found!\n"); break; } else { /* We have found a connection. Let's stop searching. */ chosen = check; break; } } |
︙ | ︙ | |||
1870 1871 1872 1873 1874 1875 1876 | conn->data = data; /* Setup the association between this connection and the Curl_easy */ conn->http_proxy.proxytype = data->set.proxytype; conn->socks_proxy.proxytype = CURLPROXY_SOCKS4; | | < < < < < < < < < < > | < < < < < < < < < < < | | < | 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 | conn->data = data; /* Setup the association between this connection and the Curl_easy */ conn->http_proxy.proxytype = data->set.proxytype; conn->socks_proxy.proxytype = CURLPROXY_SOCKS4; #if !defined(CURL_DISABLE_PROXY) /* note that these two proxy bits are now just on what looks to be requested, they may be altered down the road */ conn->bits.proxy = (data->set.str[STRING_PROXY] && *data->set.str[STRING_PROXY]) ? TRUE : FALSE; conn->bits.httpproxy = (conn->bits.proxy && (conn->http_proxy.proxytype == CURLPROXY_HTTP || conn->http_proxy.proxytype == CURLPROXY_HTTP_1_0 || conn->http_proxy.proxytype == CURLPROXY_HTTPS)) ? TRUE : FALSE; conn->bits.socksproxy = (conn->bits.proxy && !conn->bits.httpproxy) ? TRUE : FALSE; if(data->set.str[STRING_PRE_PROXY] && *data->set.str[STRING_PRE_PROXY]) { conn->bits.proxy = TRUE; conn->bits.socksproxy = TRUE; } conn->bits.proxy_user_passwd = (data->set.str[STRING_PROXYUSERNAME]) ? TRUE : FALSE; conn->bits.tunnel_proxy = data->set.tunnel_thru_httpproxy; #endif /* CURL_DISABLE_PROXY */ conn->bits.user_passwd = (data->set.str[STRING_USERNAME]) ? TRUE : FALSE; #ifndef CURL_DISABLE_FTP conn->bits.ftp_use_epsv = data->set.ftp_use_epsv; conn->bits.ftp_use_eprt = data->set.ftp_use_eprt; #endif conn->ssl_config.verifystatus = data->set.ssl.primary.verifystatus; conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer; conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost; conn->proxy_ssl_config.verifystatus = data->set.proxy_ssl.primary.verifystatus; conn->proxy_ssl_config.verifypeer = data->set.proxy_ssl.primary.verifypeer; conn->proxy_ssl_config.verifyhost = data->set.proxy_ssl.primary.verifyhost; conn->ip_version = data->set.ipver; conn->bits.connect_only = data->set.connect_only; #if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \ defined(NTLM_WB_ENABLED) conn->ntlm_auth_hlpr_socket = CURL_SOCKET_BAD; #endif /* Initialize the easy handle list */ Curl_llist_init(&conn->easyq, (curl_llist_dtor) llist_dtor); #ifdef HAVE_GSSAPI conn->data_prot = PROT_CLEAR; #endif /* Store the local bind parameters that will be used for this connection */ if(data->set.str[STRING_DEVICE]) { |
︙ | ︙ | |||
1958 1959 1960 1961 1962 1963 1964 | it may live on without (this specific) Curl_easy */ conn->fclosesocket = data->set.fclosesocket; conn->closesocket_client = data->set.closesocket_client; return conn; error: | | < < < | 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 | it may live on without (this specific) Curl_easy */ conn->fclosesocket = data->set.fclosesocket; conn->closesocket_client = data->set.closesocket_client; return conn; error: Curl_llist_destroy(&conn->easyq, NULL); free(conn->localdev); #ifdef USE_SSL free(conn->ssl_extra); #endif free(conn); return NULL; } |
︙ | ︙ | |||
2048 2049 2050 2051 2052 2053 2054 | CURLUcode uc; char *hostname; up_free(data); /* cleanup previous leftovers first */ /* parse the URL */ if(data->set.uh) { | | | 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 | CURLUcode uc; char *hostname; up_free(data); /* cleanup previous leftovers first */ /* parse the URL */ if(data->set.uh) { uh = data->state.uh = curl_url_dup(data->set.uh); } else { uh = data->state.uh = curl_url(); } if(!uh) return CURLE_OUT_OF_MEMORY; |
︙ | ︙ | |||
2152 2153 2154 2155 2156 2157 2158 | hostname = data->state.up.hostname; if(!hostname) /* this is for file:// transfers, get a dummy made */ hostname = (char *)""; if(hostname[0] == '[') { | | | > > | | > > > > < < < < < | | < | < > < < < < < < < < < < | | | | < < < < | < < | < < < > > < < < < | 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 | hostname = data->state.up.hostname; if(!hostname) /* this is for file:// transfers, get a dummy made */ hostname = (char *)""; if(hostname[0] == '[') { /* This looks like an IPv6 address literal. See if there is an address scope. */ char *zoneid; size_t hlen; uc = curl_url_get(uh, CURLUPART_ZONEID, &zoneid, 0); conn->bits.ipv6_ip = TRUE; /* cut off the brackets! */ hostname++; hlen = strlen(hostname); hostname[hlen - 1] = 0; if(!uc && zoneid) { char *endp; unsigned long scope; scope = strtoul(zoneid, &endp, 10); if(!*endp && (scope < UINT_MAX)) { /* A plain number, use it direcly as a scope id. */ conn->scope_id = (unsigned int)scope; } #ifdef HAVE_IF_NAMETOINDEX else { /* Zone identifier is not numeric */ unsigned int scopeidx = 0; scopeidx = if_nametoindex(zoneid); if(!scopeidx) infof(data, "Invalid zoneid id: %s; %s\n", zoneid, strerror(errno)); else conn->scope_id = scopeidx; } #endif /* HAVE_IF_NAMETOINDEX */ free(zoneid); } } /* make sure the connect struct gets its own copy of the host name */ conn->host.rawalloc = strdup(hostname); if(!conn->host.rawalloc) return CURLE_OUT_OF_MEMORY; conn->host.name = conn->host.rawalloc; |
︙ | ︙ | |||
2469 2470 2471 2472 2473 2474 2475 | * host name, so that we can re-use an existing connection * that may exist registered to the same proxy host. */ static CURLcode parse_proxy(struct Curl_easy *data, struct connectdata *conn, char *proxy, curl_proxytype proxytype) { | < < < < < < > > > > > > | > > > > > > > > | < | | < < < | | | | > | | | > | < > > > > | > > | | | | > > > | < < < | < < | < | < | | < | | < < < < < < < < < < < < | < | < < | < < < < | | | < | < | < < < < < < < < < < < < < | < | | < | < < < > | < < | | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | | | | | > > > > > | | > > > > | | | < | | | < | | | 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 | * host name, so that we can re-use an existing connection * that may exist registered to the same proxy host. */ static CURLcode parse_proxy(struct Curl_easy *data, struct connectdata *conn, char *proxy, curl_proxytype proxytype) { char *portptr; long port = -1; char *proxyuser = NULL; char *proxypasswd = NULL; char *host; bool sockstype; CURLUcode uc; struct proxy_info *proxyinfo; CURLU *uhp = curl_url(); CURLcode result = CURLE_OK; char *scheme = NULL; /* When parsing the proxy, allowing non-supported schemes since we have these made up ones for proxies. Guess scheme for URLs without it. */ uc = curl_url_set(uhp, CURLUPART_URL, proxy, CURLU_NON_SUPPORT_SCHEME|CURLU_GUESS_SCHEME); if(!uc) { /* parsed okay as a URL */ uc = curl_url_get(uhp, CURLUPART_SCHEME, &scheme, 0); if(uc) { result = CURLE_OUT_OF_MEMORY; goto error; } if(strcasecompare("https", scheme)) proxytype = CURLPROXY_HTTPS; else if(strcasecompare("socks5h", scheme)) proxytype = CURLPROXY_SOCKS5_HOSTNAME; else if(strcasecompare("socks5", scheme)) proxytype = CURLPROXY_SOCKS5; else if(strcasecompare("socks4a", scheme)) proxytype = CURLPROXY_SOCKS4A; else if(strcasecompare("socks4", scheme) || strcasecompare("socks", scheme)) proxytype = CURLPROXY_SOCKS4; else if(strcasecompare("http", scheme)) ; /* leave it as HTTP or HTTP/1.0 */ else { /* Any other xxx:// reject! */ failf(data, "Unsupported proxy scheme for \'%s\'", proxy); result = CURLE_COULDNT_CONNECT; goto error; } } else { failf(data, "Unsupported proxy syntax in \'%s\'", proxy); result = CURLE_COULDNT_RESOLVE_PROXY; goto error; } #ifdef USE_SSL if(!(Curl_ssl->supports & SSLSUPP_HTTPS_PROXY)) #endif if(proxytype == CURLPROXY_HTTPS) { failf(data, "Unsupported proxy \'%s\', libcurl is built without the " "HTTPS-proxy support.", proxy); result = CURLE_NOT_BUILT_IN; goto error; } sockstype = proxytype == CURLPROXY_SOCKS5_HOSTNAME || proxytype == CURLPROXY_SOCKS5 || proxytype == CURLPROXY_SOCKS4A || proxytype == CURLPROXY_SOCKS4; proxyinfo = sockstype ? &conn->socks_proxy : &conn->http_proxy; proxyinfo->proxytype = proxytype; /* Is there a username and password given in this proxy url? */ curl_url_get(uhp, CURLUPART_USER, &proxyuser, CURLU_URLDECODE); curl_url_get(uhp, CURLUPART_PASSWORD, &proxypasswd, CURLU_URLDECODE); if(proxyuser || proxypasswd) { Curl_safefree(proxyinfo->user); proxyinfo->user = proxyuser; Curl_safefree(proxyinfo->passwd); if(!proxypasswd) { proxypasswd = strdup(""); if(!proxypasswd) { result = CURLE_OUT_OF_MEMORY; goto error; } } proxyinfo->passwd = proxypasswd; conn->bits.proxy_user_passwd = TRUE; /* enable it */ } curl_url_get(uhp, CURLUPART_PORT, &portptr, 0); if(portptr) { port = strtol(portptr, NULL, 10); free(portptr); } else { if(data->set.proxyport) /* None given in the proxy string, then get the default one if it is given */ port = data->set.proxyport; else { if(proxytype == CURLPROXY_HTTPS) port = CURL_DEFAULT_HTTPS_PROXY_PORT; else port = CURL_DEFAULT_PROXY_PORT; } } if(port >= 0) { proxyinfo->port = port; if(conn->port < 0 || sockstype || !conn->socks_proxy.host.rawalloc) conn->port = port; } /* now, clone the proxy host name */ uc = curl_url_get(uhp, CURLUPART_HOST, &host, CURLU_URLDECODE); if(uc) { result = CURLE_OUT_OF_MEMORY; goto error; } Curl_safefree(proxyinfo->host.rawalloc); proxyinfo->host.rawalloc = host; if(host[0] == '[') { /* this is a numerical IPv6, strip off the brackets */ size_t len = strlen(host); host[len-1] = 0; /* clear the trailing bracket */ host++; } proxyinfo->host.name = host; error: free(scheme); curl_url_cleanup(uhp); return result; } /* * Extract the user and password from the authentication string */ static CURLcode parse_proxy_auth(struct Curl_easy *data, struct connectdata *conn) |
︙ | ︙ | |||
3610 3611 3612 3613 3614 3615 3616 | Curl_safefree(old_conn->passwd); Curl_safefree(old_conn->options); Curl_safefree(old_conn->http_proxy.user); Curl_safefree(old_conn->socks_proxy.user); Curl_safefree(old_conn->http_proxy.passwd); Curl_safefree(old_conn->socks_proxy.passwd); Curl_safefree(old_conn->localdev); | < | < < < | 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 | Curl_safefree(old_conn->passwd); Curl_safefree(old_conn->options); Curl_safefree(old_conn->http_proxy.user); Curl_safefree(old_conn->socks_proxy.user); Curl_safefree(old_conn->http_proxy.passwd); Curl_safefree(old_conn->socks_proxy.passwd); Curl_safefree(old_conn->localdev); Curl_llist_destroy(&old_conn->easyq, NULL); #ifdef USE_UNIX_SOCKETS Curl_safefree(old_conn->unix_domain_socket); #endif } /** |
︙ | ︙ | |||
3929 3930 3931 3932 3933 3934 3935 | if((data->set.reuse_fresh && !data->state.this_is_a_follow) || data->set.connect_only) reuse = FALSE; else reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse, &waitpipe); /* If we found a reusable connection that is now marked as in use, we may | | | | | | | | 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 | if((data->set.reuse_fresh && !data->state.this_is_a_follow) || data->set.connect_only) reuse = FALSE; else reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse, &waitpipe); /* If we found a reusable connection that is now marked as in use, we may still want to open a new connection if we are multiplexing. */ if(reuse && !force_reuse && IsMultiplexingPossible(data, conn_temp)) { size_t multiplexed = CONN_INUSE(conn_temp); if(multiplexed > 0) { infof(data, "Found connection %ld, with %zu requests on it\n", conn_temp->connection_id, multiplexed); if(Curl_conncache_bundle_size(conn_temp) < max_host_connections && Curl_conncache_size(data) < max_total_connections) { /* We want a new connection anyway */ reuse = FALSE; infof(data, "We can reuse, but we want a new connection anyway\n"); |
︙ | ︙ | |||
3984 3985 3986 3987 3988 3989 3990 | if(data->set.ssl_enable_alpn) conn->bits.tls_enable_alpn = TRUE; if(data->set.ssl_enable_npn) conn->bits.tls_enable_npn = TRUE; } if(waitpipe) | | | 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 | if(data->set.ssl_enable_alpn) conn->bits.tls_enable_alpn = TRUE; if(data->set.ssl_enable_npn) conn->bits.tls_enable_npn = TRUE; } if(waitpipe) /* There is a connection that *might* become usable for multiplexing "soon", and we wait for that */ connections_available = FALSE; else { /* this gets a lock on the conncache */ struct connectbundle *bundle = Curl_conncache_find_bundle(conn, data->state.conn_cache); |
︙ | ︙ | |||
4197 4198 4199 4200 4201 4202 4203 | data->req.maxdownload = -1; /* call the stuff that needs to be called */ result = create_conn(data, &conn, asyncp); if(!result) { if(CONN_INUSE(conn)) | | | | 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 | data->req.maxdownload = -1; /* call the stuff that needs to be called */ result = create_conn(data, &conn, asyncp); if(!result) { if(CONN_INUSE(conn)) /* multiplexed */ *protocol_done = TRUE; else if(!*asyncp) { /* DNS resolution is done: that's either because this is a reused connection, in which case DNS was unnecessary, or because DNS really did finish already (synch resolver/fast async resolve) */ result = Curl_setup_conn(conn, protocol_done); } } if(result == CURLE_NO_CONNECTION_AVAILABLE) { return result; } else if(result && conn) { /* We're not allowed to return failure with memory left allocated in the connectdata struct, free those here */ Curl_disconnect(data, conn, TRUE); } else if(!result && !data->conn) /* FILE: transfers already have the connection attached */ Curl_attach_connnection(data, conn); return result; } /* |
︙ | ︙ |
Changes to jni/curl/lib/url.h.
︙ | ︙ | |||
67 68 69 70 71 72 73 | int numsocks); int Curl_doing_getsock(struct connectdata *conn, curl_socket_t *socks, int numsocks); CURLcode Curl_parse_login_details(const char *login, const size_t len, char **userptr, char **passwdptr, char **optionsptr); | < < < < < | < < | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | int numsocks); int Curl_doing_getsock(struct connectdata *conn, curl_socket_t *socks, int numsocks); CURLcode Curl_parse_login_details(const char *login, const size_t len, char **userptr, char **passwdptr, char **optionsptr); void Curl_close_connections(struct Curl_easy *data); CURLcode Curl_upkeep(struct conncache *conn_cache, void *data); const struct Curl_handler *Curl_builtin_scheme(const char *scheme); #define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */ #define CURL_DEFAULT_HTTPS_PROXY_PORT 443 /* default https proxy port unless specified */ |
︙ | ︙ |
Changes to jni/curl/lib/urlapi-int.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_URLAPI_INT_H #define HEADER_CURL_URLAPI_INT_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | < | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #ifndef HEADER_CURL_URLAPI_INT_H #define HEADER_CURL_URLAPI_INT_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" /* scheme is not URL encoded, the longest libcurl supported ones are... */ #define MAX_SCHEME_LEN 40 bool Curl_is_absolute_url(const char *url, char *scheme, size_t buflen); char *Curl_concat_url(const char *base, const char *relurl); size_t Curl_strlen_url(const char *url, bool relative); void Curl_strcpy_url(char *output, const char *url, bool relative); #ifdef DEBUGBUILD CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname); #endif #endif /* HEADER_CURL_URLAPI_INT_H */ |
Changes to jni/curl/lib/urlapi.c.
︙ | ︙ | |||
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | /* Internal representation of CURLU. Point to URL-encoded strings. */ struct Curl_URL { char *scheme; char *user; char *password; char *options; /* IMAP only? */ char *host; char *port; char *path; char *query; char *fragment; char *scratch; /* temporary scratch area */ long portnum; /* the numerical version */ }; #define DEFAULT_SCHEME "https" static void free_urlhandle(struct Curl_URL *u) { free(u->scheme); free(u->user); free(u->password); free(u->options); free(u->host); free(u->port); free(u->path); free(u->query); free(u->fragment); free(u->scratch); } | > > | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | /* Internal representation of CURLU. Point to URL-encoded strings. */ struct Curl_URL { char *scheme; char *user; char *password; char *options; /* IMAP only? */ char *host; char *zoneid; /* for numerical IPv6 addresses */ char *port; char *path; char *query; char *fragment; char *scratch; /* temporary scratch area */ long portnum; /* the numerical version */ }; #define DEFAULT_SCHEME "https" static void free_urlhandle(struct Curl_URL *u) { free(u->scheme); free(u->user); free(u->password); free(u->options); free(u->host); free(u->zoneid); free(u->port); free(u->path); free(u->query); free(u->fragment); free(u->scratch); } |
︙ | ︙ | |||
500 501 502 503 504 505 506 | */ if(1 == sscanf(hostname, "[%*45[0123456789abcdefABCDEF:.]%c%n", &endbracket, &len)) { if(']' == endbracket) portptr = &hostname[len]; else if('%' == endbracket) { int zonelen = len; | | | 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 | */ if(1 == sscanf(hostname, "[%*45[0123456789abcdefABCDEF:.]%c%n", &endbracket, &len)) { if(']' == endbracket) portptr = &hostname[len]; else if('%' == endbracket) { int zonelen = len; if(1 == sscanf(hostname + zonelen, "%*[^]]%c%n", &endbracket, &len)) { if(']' != endbracket) return CURLUE_MALFORMED_INPUT; portptr = &hostname[--zonelen + len + 1]; } else return CURLUE_MALFORMED_INPUT; } |
︙ | ︙ | |||
583 584 585 586 587 588 589 | /* since we don't know which part is scanned, return a generic error code */ return CURLUE_MALFORMED_INPUT; } return CURLUE_OK; } | | < | | | > > > > > > > > > > | > > > > > > > > > > > > > | > > > > | 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 | /* since we don't know which part is scanned, return a generic error code */ return CURLUE_MALFORMED_INPUT; } return CURLUE_OK; } static CURLUcode hostname_check(struct Curl_URL *u, char *hostname) { const char *l = NULL; /* accepted characters */ size_t len; size_t hlen = strlen(hostname); if(hostname[0] == '[') { hostname++; l = "0123456789abcdefABCDEF::."; hlen -= 2; } if(l) { /* only valid letters are ok */ len = strspn(hostname, l); if(hlen != len) { if(hostname[len] == '%') { /* this could now be '%[zone id]' */ char zoneid[16]; int i = 0; char *h = &hostname[len + 1]; /* pass '25' if present and is a url encoded percent sign */ if(!strncmp(h, "25", 2) && h[2] && (h[2] != ']')) h += 2; while(*h && (*h != ']') && (i < 15)) zoneid[i++] = *h++; if(!i || (']' != *h)) return CURLUE_MALFORMED_INPUT; zoneid[i] = 0; u->zoneid = strdup(zoneid); if(!u->zoneid) return CURLUE_OUT_OF_MEMORY; hostname[len] = ']'; /* insert end bracket */ hostname[len + 1] = 0; /* terminate the hostname */ } else return CURLUE_MALFORMED_INPUT; /* hostname is fine */ } } else { /* letters from the second string is not ok */ len = strcspn(hostname, " "); if(hlen != len) /* hostname with bad content */ return CURLUE_MALFORMED_INPUT; } if(!hostname[0]) return CURLUE_NO_HOST; return CURLUE_OK; } #define HOSTNAME_END(x) (((x) == '/') || ((x) == '?') || ((x) == '#')) static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags) { char *path; bool path_alloced = FALSE; char *hostname; char *query = NULL; char *fragment = NULL; CURLUcode result; bool url_has_scheme = FALSE; char schemebuf[MAX_SCHEME_LEN + 1]; char *schemep = NULL; size_t schemelen = 0; size_t urllen; const struct Curl_handler *h = NULL; if(!url) return CURLUE_MALFORMED_INPUT; /************************************************************* * Parse the URL. ************************************************************/ /* allocate scratch area */ urllen = strlen(url); if(urllen > CURL_MAX_INPUT_LENGTH) /* excessive input length */ return CURLUE_MALFORMED_INPUT; path = u->scratch = malloc(urllen * 2 + 2); if(!path) return CURLUE_OUT_OF_MEMORY; hostname = &path[urllen + 1]; hostname[0] = 0; |
︙ | ︙ | |||
848 849 850 851 852 853 854 | if(result) return result; result = Curl_parse_port(u, hostname); if(result) return result; | | | 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 | if(result) return result; result = Curl_parse_port(u, hostname); if(result) return result; result = hostname_check(u, hostname); if(result) return result; u->host = strdup(hostname); if(!u->host) return CURLUE_OUT_OF_MEMORY; } |
︙ | ︙ | |||
966 967 968 969 970 971 972 973 974 975 976 977 978 979 | case CURLUPART_OPTIONS: ptr = u->options; ifmissing = CURLUE_NO_OPTIONS; break; case CURLUPART_HOST: ptr = u->host; ifmissing = CURLUE_NO_HOST; break; case CURLUPART_PORT: ptr = u->port; ifmissing = CURLUE_NO_PORT; urldecode = FALSE; /* never for port */ if(!ptr && (flags & CURLU_DEFAULT_PORT) && u->scheme) { /* there's no stored port number, but asked to deliver | > > > | 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 | case CURLUPART_OPTIONS: ptr = u->options; ifmissing = CURLUE_NO_OPTIONS; break; case CURLUPART_HOST: ptr = u->host; ifmissing = CURLUE_NO_HOST; break; case CURLUPART_ZONEID: ptr = u->zoneid; break; case CURLUPART_PORT: ptr = u->port; ifmissing = CURLUE_NO_PORT; urldecode = FALSE; /* never for port */ if(!ptr && (flags & CURLU_DEFAULT_PORT) && u->scheme) { /* there's no stored port number, but asked to deliver |
︙ | ︙ | |||
1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 | ifmissing = CURLUE_NO_FRAGMENT; break; case CURLUPART_URL: { char *url; char *scheme; char *options = u->options; char *port = u->port; if(u->scheme && strcasecompare("file", u->scheme)) { url = aprintf("file://%s%s%s", u->path, u->fragment? "#": "", u->fragment? u->fragment : ""); } else if(!u->host) | > | 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 | ifmissing = CURLUE_NO_FRAGMENT; break; case CURLUPART_URL: { char *url; char *scheme; char *options = u->options; char *port = u->port; char *allochost = NULL; if(u->scheme && strcasecompare("file", u->scheme)) { url = aprintf("file://%s%s%s", u->path, u->fragment? "#": "", u->fragment? u->fragment : ""); } else if(!u->host) |
︙ | ︙ | |||
1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 | if(h && (h->defport == u->portnum) && (flags & CURLU_NO_DEFAULT_PORT)) port = NULL; } } if(h && !(h->flags & PROTOPT_URLOPTIONS)) options = NULL; url = aprintf("%s://%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", scheme, u->user ? u->user : "", u->password ? ":": "", u->password ? u->password : "", options ? ";" : "", options ? options : "", (u->user || u->password || options) ? "@": "", | > > > > > > > > > > > > | > | 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 | if(h && (h->defport == u->portnum) && (flags & CURLU_NO_DEFAULT_PORT)) port = NULL; } } if(h && !(h->flags & PROTOPT_URLOPTIONS)) options = NULL; if((u->host[0] == '[') && u->zoneid) { /* make it '[ host %25 zoneid ]' */ size_t hostlen = strlen(u->host); size_t alen = hostlen + 3 + strlen(u->zoneid) + 1; allochost = malloc(alen); if(!allochost) return CURLUE_OUT_OF_MEMORY; memcpy(allochost, u->host, hostlen - 1); msnprintf(&allochost[hostlen - 1], alen - hostlen + 1, "%%25%s]", u->zoneid); } url = aprintf("%s://%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", scheme, u->user ? u->user : "", u->password ? ":": "", u->password ? u->password : "", options ? ";" : "", options ? options : "", (u->user || u->password || options) ? "@": "", allochost ? allochost : u->host, port ? ":": "", port ? port : "", (u->path && (u->path[0] != '/')) ? "/": "", u->path ? u->path : "/", (u->query && u->query[0]) ? "?": "", (u->query && u->query[0]) ? u->query : "", u->fragment? "#": "", u->fragment? u->fragment : ""); free(allochost); } if(!url) return CURLUE_OUT_OF_MEMORY; *part = url; return CURLUE_OK; } default: |
︙ | ︙ | |||
1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 | break; case CURLUPART_OPTIONS: storep = &u->options; break; case CURLUPART_HOST: storep = &u->host; break; case CURLUPART_PORT: storep = &u->port; break; case CURLUPART_PATH: storep = &u->path; break; case CURLUPART_QUERY: storep = &u->query; | > > > > | 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 | break; case CURLUPART_OPTIONS: storep = &u->options; break; case CURLUPART_HOST: storep = &u->host; break; case CURLUPART_ZONEID: storep = &u->zoneid; break; case CURLUPART_PORT: u->portnum = 0; storep = &u->port; break; case CURLUPART_PATH: storep = &u->path; break; case CURLUPART_QUERY: storep = &u->query; |
︙ | ︙ | |||
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 | *storep = NULL; } return CURLUE_OK; } switch(what) { case CURLUPART_SCHEME: if(!(flags & CURLU_NON_SUPPORT_SCHEME) && /* verify that it is a fine scheme */ !Curl_builtin_scheme(part)) return CURLUE_UNSUPPORTED_SCHEME; storep = &u->scheme; urlencode = FALSE; /* never */ break; case CURLUPART_USER: storep = &u->user; break; case CURLUPART_PASSWORD: storep = &u->password; break; case CURLUPART_OPTIONS: storep = &u->options; break; case CURLUPART_HOST: storep = &u->host; break; case CURLUPART_PORT: urlencode = FALSE; /* never */ | > > > > > > > > > > | > > > > | | 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 | *storep = NULL; } return CURLUE_OK; } switch(what) { case CURLUPART_SCHEME: if(strlen(part) > MAX_SCHEME_LEN) /* too long */ return CURLUE_MALFORMED_INPUT; if(!(flags & CURLU_NON_SUPPORT_SCHEME) && /* verify that it is a fine scheme */ !Curl_builtin_scheme(part)) return CURLUE_UNSUPPORTED_SCHEME; storep = &u->scheme; urlencode = FALSE; /* never */ break; case CURLUPART_USER: storep = &u->user; break; case CURLUPART_PASSWORD: storep = &u->password; break; case CURLUPART_OPTIONS: storep = &u->options; break; case CURLUPART_HOST: storep = &u->host; free(u->zoneid); u->zoneid = NULL; break; case CURLUPART_ZONEID: storep = &u->zoneid; break; case CURLUPART_PORT: { char *endp; urlencode = FALSE; /* never */ port = strtol(part, &endp, 10); /* Port number must be decimal */ if((port <= 0) || (port > 0xffff)) return CURLUE_BAD_PORT_NUMBER; if(*endp) /* weirdly provided number, not good! */ return CURLUE_MALFORMED_INPUT; storep = &u->port; } break; case CURLUPART_PATH: urlskipslash = TRUE; storep = &u->path; break; case CURLUPART_QUERY: plusencode = urlencode; appendquery = (flags & CURLU_APPENDQUERY)?1:0; |
︙ | ︙ | |||
1215 1216 1217 1218 1219 1220 1221 | * replace it. */ CURLUcode result; char *oldurl; char *redired_url; CURLU *handle2; | | | 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 | * replace it. */ CURLUcode result; char *oldurl; char *redired_url; CURLU *handle2; if(Curl_is_absolute_url(part, NULL, MAX_SCHEME_LEN + 1)) { handle2 = curl_url(); if(!handle2) return CURLUE_OUT_OF_MEMORY; result = parseurl(part, handle2, flags); if(!result) mv_urlhandle(handle2, u); else |
︙ | ︙ | |||
1268 1269 1270 1271 1272 1273 1274 1275 | default: return CURLUE_UNKNOWN_PART; } if(storep) { const char *newp = part; size_t nalloc = strlen(part); if(urlencode) { | > > > > | | | | 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 | default: return CURLUE_UNKNOWN_PART; } if(storep) { const char *newp = part; size_t nalloc = strlen(part); if(nalloc > CURL_MAX_INPUT_LENGTH) /* excessive input length */ return CURLUE_MALFORMED_INPUT; if(urlencode) { const unsigned char *i; char *o; bool free_part = FALSE; char *enc = malloc(nalloc * 3 + 1); /* for worst case! */ if(!enc) return CURLUE_OUT_OF_MEMORY; if(plusencode) { /* space to plus */ i = (const unsigned char *)part; for(o = enc; *i; ++o, ++i) *o = (*i == ' ') ? '+' : *i; *o = 0; /* zero terminate */ part = strdup(enc); if(!part) { free(enc); return CURLUE_OUT_OF_MEMORY; } free_part = TRUE; } for(i = (const unsigned char *)part, o = enc; *i; i++) { if(Curl_isunreserved(*i) || ((*i == '/') && urlskipslash) || ((*i == '=') && equalsencode) || ((*i == '+') && plusencode)) { if((*i == '=') && equalsencode) /* only skip the first equals sign */ equalsencode = FALSE; |
︙ | ︙ | |||
1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 | strcpy(&p[querylen + addamperand], newp); /* new suffix */ free((char *)newp); free(*storep); *storep = p; return CURLUE_OK; } } free(*storep); *storep = (char *)newp; } /* set after the string, to make it not assigned if the allocation above fails */ if(port) u->portnum = port; return CURLUE_OK; } | > > > > > > > | 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 | strcpy(&p[querylen + addamperand], newp); /* new suffix */ free((char *)newp); free(*storep); *storep = p; return CURLUE_OK; } } if(what == CURLUPART_HOST) { if(hostname_check(u, (char *)newp)) { free((char *)newp); return CURLUE_MALFORMED_INPUT; } } free(*storep); *storep = (char *)newp; } /* set after the string, to make it not assigned if the allocation above fails */ if(port) u->portnum = port; return CURLUE_OK; } |
Changes to jni/curl/lib/urldata.h.
︙ | ︙ | |||
75 76 77 78 79 80 81 82 83 84 85 86 87 88 | #define MAX_IPADR_LEN sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") /* Default FTP/IMAP etc response timeout in milliseconds. Symbian OS panics when given a timeout much greater than 1/2 hour. */ #define RESP_TIMEOUT (120*1000) #include "cookie.h" #include "psl.h" #include "formdata.h" #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif | > > > > | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | #define MAX_IPADR_LEN sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") /* Default FTP/IMAP etc response timeout in milliseconds. Symbian OS panics when given a timeout much greater than 1/2 hour. */ #define RESP_TIMEOUT (120*1000) /* Max string intput length is a precaution against abuse and to detect junk input easier and better. */ #define CURL_MAX_INPUT_LENGTH 8000000 #include "cookie.h" #include "psl.h" #include "formdata.h" #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif |
︙ | ︙ | |||
140 141 142 143 144 145 146 | #endif #ifdef HAVE_LIBSSH2_H #include <libssh2.h> #include <libssh2_sftp.h> #endif /* HAVE_LIBSSH2_H */ | < < < < | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | #endif #ifdef HAVE_LIBSSH2_H #include <libssh2.h> #include <libssh2_sftp.h> #endif /* HAVE_LIBSSH2_H */ /* Initial size of the buffer to store headers in, it'll be enlarged in case of need. */ #define HEADERSIZE 256 #define CURLEASY_MAGIC_NUMBER 0xc0dedbadU #define GOOD_EASY_HANDLE(x) \ ((x) && ((x)->magic == CURLEASY_MAGIC_NUMBER)) |
︙ | ︙ | |||
299 300 301 302 303 304 305 306 307 308 309 310 311 312 | NTLMSTATE_NONE, NTLMSTATE_TYPE1, NTLMSTATE_TYPE2, NTLMSTATE_TYPE3, NTLMSTATE_LAST } curlntlm; #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) #include <iconv.h> #endif /* Struct used for GSSAPI (Kerberos V5) authentication */ #if defined(USE_KERBEROS5) struct kerberos5data { | > > > > > > > > | 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 | NTLMSTATE_NONE, NTLMSTATE_TYPE1, NTLMSTATE_TYPE2, NTLMSTATE_TYPE3, NTLMSTATE_LAST } curlntlm; typedef enum { GSS_AUTHNONE, GSS_AUTHRECV, GSS_AUTHSENT, GSS_AUTHDONE, GSS_AUTHSUCC } curlnegotiate; #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) #include <iconv.h> #endif /* Struct used for GSSAPI (Kerberos V5) authentication */ #if defined(USE_KERBEROS5) struct kerberos5data { |
︙ | ︙ | |||
324 325 326 327 328 329 330 | #endif }; #endif /* Struct used for NTLM challenge-response authentication */ #if defined(USE_NTLM) struct ntlmdata { | < | 332 333 334 335 336 337 338 339 340 341 342 343 344 345 | #endif }; #endif /* Struct used for NTLM challenge-response authentication */ #if defined(USE_NTLM) struct ntlmdata { #ifdef USE_WINDOWS_SSPI /* The sslContext is used for the Schannel bindings. The * api is available on the Windows 7 SDK and later. */ #ifdef SECPKG_ATTR_ENDPOINT_BINDINGS CtxtHandle *sslContext; #endif |
︙ | ︙ | |||
350 351 352 353 354 355 356 357 358 | unsigned char nonce[8]; void *target_info; /* TargetInfo received in the ntlm type-2 message */ unsigned int target_info_len; #endif }; #endif #ifdef USE_SPNEGO struct negotiatedata { | > < < < < < | 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | unsigned char nonce[8]; void *target_info; /* TargetInfo received in the ntlm type-2 message */ unsigned int target_info_len; #endif }; #endif /* Struct used for Negotiate (SPNEGO) authentication */ #ifdef USE_SPNEGO struct negotiatedata { #ifdef HAVE_GSSAPI OM_uint32 status; gss_ctx_id_t context; gss_name_t spn; gss_buffer_desc output_token; #else #ifdef USE_WINDOWS_SSPI |
︙ | ︙ | |||
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 | that we are creating a request with an auth header, but it is not the final request in the auth negotiation. */ bit rewindaftersend:1;/* TRUE when the sending couldn't be stopped even though it will be discarded. When the whole send operation is done, we must call the data rewind callback. */ bit ftp_use_epsv:1; /* As set with CURLOPT_FTP_USE_EPSV, but if we find out EPSV doesn't work we disable it for the forthcoming requests */ bit ftp_use_eprt:1; /* As set with CURLOPT_FTP_USE_EPRT, but if we find out EPRT doesn't work we disable it for the forthcoming requests */ bit ftp_use_data_ssl:1; /* Enabled SSL for the data connection */ bit netrc:1; /* name+password provided by netrc */ bit userpwd_in_url:1; /* name+password found in url */ bit stream_was_rewound:1; /* The stream was rewound after a request read past the end of its response byte boundary */ bit proxy_connect_closed:1; /* TRUE if a proxy disconnected the connection in a CONNECT request with auth, so that libcurl should reconnect and continue. */ | > > | 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 | that we are creating a request with an auth header, but it is not the final request in the auth negotiation. */ bit rewindaftersend:1;/* TRUE when the sending couldn't be stopped even though it will be discarded. When the whole send operation is done, we must call the data rewind callback. */ #ifndef CURL_DISABLE_FTP bit ftp_use_epsv:1; /* As set with CURLOPT_FTP_USE_EPSV, but if we find out EPSV doesn't work we disable it for the forthcoming requests */ bit ftp_use_eprt:1; /* As set with CURLOPT_FTP_USE_EPRT, but if we find out EPRT doesn't work we disable it for the forthcoming requests */ bit ftp_use_data_ssl:1; /* Enabled SSL for the data connection */ #endif bit netrc:1; /* name+password provided by netrc */ bit userpwd_in_url:1; /* name+password found in url */ bit stream_was_rewound:1; /* The stream was rewound after a request read past the end of its response byte boundary */ bit proxy_connect_closed:1; /* TRUE if a proxy disconnected the connection in a CONNECT request with auth, so that libcurl should reconnect and continue. */ |
︙ | ︙ | |||
600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 | /* 'upload_fromhere' is used as a read-pointer when we uploaded parts of a buffer, so the next read should read from where this pointer points to, and the 'upload_present' contains the number of bytes available at this position */ char *upload_fromhere; void *protop; /* Allocated protocol-specific data. Each protocol handler makes sure this points to data it needs. */ struct dohdata doh; /* DoH specific data for this request */ bit header:1; /* incoming data has HTTP header */ bit content_range:1; /* set TRUE if Content-Range: was found */ bit upload_done:1; /* set to TRUE when doing chunked transfer-encoding upload and we're uploading the last chunk */ bit ignorebody:1; /* we read a response-body but we ignore it! */ bit ignorecl:1; /* This HTTP response has no body so we ignore the Content-Length: header */ | > > | 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 | /* 'upload_fromhere' is used as a read-pointer when we uploaded parts of a buffer, so the next read should read from where this pointer points to, and the 'upload_present' contains the number of bytes available at this position */ char *upload_fromhere; void *protop; /* Allocated protocol-specific data. Each protocol handler makes sure this points to data it needs. */ #ifndef CURL_DISABLE_DOH struct dohdata doh; /* DoH specific data for this request */ #endif bit header:1; /* incoming data has HTTP header */ bit content_range:1; /* set TRUE if Content-Range: was found */ bit upload_done:1; /* set to TRUE when doing chunked transfer-encoding upload and we're uploading the last chunk */ bit ignorebody:1; /* we read a response-body but we ignore it! */ bit ignorecl:1; /* This HTTP response has no body so we ignore the Content-Length: header */ |
︙ | ︙ | |||
792 793 794 795 796 797 798 | and a HTTP proxy may in fact respond using chunked encoding */ struct Curl_chunker chunk; curl_closesocket_callback fclosesocket; /* function closing the socket(s) */ void *closesocket_client; /* This is used by the connection cache logic. If this returns TRUE, this | | | < | | 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 | and a HTTP proxy may in fact respond using chunked encoding */ struct Curl_chunker chunk; curl_closesocket_callback fclosesocket; /* function closing the socket(s) */ void *closesocket_client; /* This is used by the connection cache logic. If this returns TRUE, this handle is still used by one or more easy handles and can only used by any other easy handle without careful consideration (== only for multiplexing) and it cannot be used by another multi handle! */ #define CONN_INUSE(c) ((c)->easyq.size) /**** Fields set when inited and not modified again */ long connection_id; /* Contains a unique number to make it easier to track the connections in the log output */ /* 'dns_entry' is the particular host we use. This points to an entry in the DNS cache and it will not get pruned while locked. It gets unlocked in |
︙ | ︙ | |||
867 868 869 870 871 872 873 874 875 876 877 878 879 880 | char *oauth_bearer; /* bearer token for OAuth 2.0, allocated */ int httpversion; /* the HTTP version*10 reported by the server */ int rtspversion; /* the RTSP version*10 reported by the server */ struct curltime now; /* "current" time */ struct curltime created; /* creation time */ 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 */ bool sock_accepted[2]; /* TRUE if the socket on this index was created with accept() */ Curl_recv *recv[2]; Curl_send *send[2]; | > | 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 | char *oauth_bearer; /* bearer token for OAuth 2.0, allocated */ int httpversion; /* the HTTP version*10 reported by the server */ int rtspversion; /* the RTSP version*10 reported by the server */ struct curltime now; /* "current" time */ struct curltime created; /* creation time */ struct curltime lastused; /* when returned to the connection cache */ curl_socket_t sock[2]; /* two sockets, the second is used for the data transfer when doing FTP */ curl_socket_t tempsock[2]; /* temporary sockets for happy eyeballs */ bool sock_accepted[2]; /* TRUE if the socket on this index was created with accept() */ Curl_recv *recv[2]; Curl_send *send[2]; |
︙ | ︙ | |||
946 947 948 949 950 951 952 | struct sockaddr_in local_addr; #endif #if defined(USE_KERBEROS5) /* Consider moving some of the above GSS-API */ struct kerberos5data krb5; /* variables into the structure definition, */ #endif /* however, some of them are ftp specific. */ | < < < < < < < < | < > > > > > > | 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 | struct sockaddr_in local_addr; #endif #if defined(USE_KERBEROS5) /* Consider moving some of the above GSS-API */ struct kerberos5data krb5; /* variables into the structure definition, */ #endif /* however, some of them are ftp specific. */ struct curl_llist easyq; /* List of easy handles using this connection */ curl_seek_callback seek_func; /* function that seeks the input */ void *seek_client; /* pointer to pass to the seek() above */ /*************** Request - specific items ************/ #if defined(USE_WINDOWS_SSPI) && defined(SECPKG_ATTR_ENDPOINT_BINDINGS) CtxtHandle *sslContext; #endif #if defined(USE_NTLM) curlntlm http_ntlm_state; curlntlm proxy_ntlm_state; struct ntlmdata ntlm; /* NTLM differs from other authentication schemes because it authenticates connections, not single requests! */ struct ntlmdata proxyntlm; /* NTLM data for proxy */ #if defined(NTLM_WB_ENABLED) /* used for communication with Samba's winbind daemon helper ntlm_auth */ curl_socket_t ntlm_auth_hlpr_socket; pid_t ntlm_auth_hlpr_pid; char *challenge_header; char *response_header; #endif #endif #ifdef USE_SPNEGO curlnegotiate http_negotiate_state; curlnegotiate proxy_negotiate_state; struct negotiatedata negotiate; /* state data for host Negotiate auth */ struct negotiatedata proxyneg; /* state data for proxy Negotiate auth */ #endif /* data used for the asynch name resolve callback */ struct Curl_async async; |
︙ | ︙ | |||
1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 | /* Timers */ typedef enum { EXPIRE_100_TIMEOUT, EXPIRE_ASYNC_NAME, EXPIRE_CONNECTTIMEOUT, EXPIRE_DNS_PER_NAME, EXPIRE_HAPPY_EYEBALLS, EXPIRE_MULTI_PENDING, EXPIRE_RUN_NOW, EXPIRE_SPEEDCHECK, EXPIRE_TIMEOUT, EXPIRE_TOOFAST, EXPIRE_LAST /* not an actual timer, used as a marker only */ | > | 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 | /* Timers */ typedef enum { EXPIRE_100_TIMEOUT, EXPIRE_ASYNC_NAME, EXPIRE_CONNECTTIMEOUT, EXPIRE_DNS_PER_NAME, EXPIRE_HAPPY_EYEBALLS_DNS, /* See asyn-ares.c */ EXPIRE_HAPPY_EYEBALLS, EXPIRE_MULTI_PENDING, EXPIRE_RUN_NOW, EXPIRE_SPEEDCHECK, EXPIRE_TIMEOUT, EXPIRE_TOOFAST, EXPIRE_LAST /* not an actual timer, used as a marker only */ |
︙ | ︙ | |||
1283 1284 1285 1286 1287 1288 1289 | void (*prev_signal)(int sig); #endif struct digestdata digest; /* state data for host Digest auth */ struct digestdata proxydigest; /* state data for proxy Digest auth */ struct auth authhost; /* auth details for host */ struct auth authproxy; /* auth details for proxy */ | < | 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 | void (*prev_signal)(int sig); #endif struct digestdata digest; /* state data for host Digest auth */ struct digestdata proxydigest; /* state data for proxy Digest auth */ struct auth authhost; /* auth details for host */ struct auth authproxy; /* auth details for proxy */ void *resolver; /* resolver state, if it is used in the URL state - ares_channel f.e. */ #if defined(USE_OPENSSL) /* void instead of ENGINE to avoid bleeding OpenSSL into this header */ void *engine; #endif /* USE_OPENSSL */ |
︙ | ︙ | |||
1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 | bit expect100header:1; /* TRUE if we added Expect: 100-continue */ bit use_range:1; bit rangestringalloc:1; /* the range string is malloc()'ed */ bit done:1; /* set to FALSE when Curl_init_do() is called and set to TRUE when multi_done() is called, to prevent multi_done() to get invoked twice when the multi interface is used. */ bit stream_depends_e:1; /* set or don't set the Exclusive bit */ }; /* * This 'DynamicStatic' struct defines dynamic states that actually change * values in the 'UserDefined' area, which MUST be taken into consideration * if the UserDefined struct is cloned or similar. You can probably just | > | 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 | bit expect100header:1; /* TRUE if we added Expect: 100-continue */ bit use_range:1; bit rangestringalloc:1; /* the range string is malloc()'ed */ bit done:1; /* set to FALSE when Curl_init_do() is called and set to TRUE when multi_done() is called, to prevent multi_done() to get invoked twice when the multi interface is used. */ bit stream_depends_e:1; /* set or don't set the Exclusive bit */ bit previouslypending:1; /* this transfer WAS in the multi->pending queue */ }; /* * This 'DynamicStatic' struct defines dynamic states that actually change * values in the 'UserDefined' area, which MUST be taken into consideration * if the UserDefined struct is cloned or similar. You can probably just |
︙ | ︙ | |||
1457 1458 1459 1460 1461 1462 1463 | STRING_PROXYUSERNAME, /* Proxy <username>, if used */ STRING_PROXYPASSWORD, /* Proxy <password>, if used */ STRING_NOPROXY, /* List of hosts which should not use the proxy, if used */ STRING_RTSP_SESSION_ID, /* Session ID to use */ STRING_RTSP_STREAM_URI, /* Stream URI for this request */ STRING_RTSP_TRANSPORT, /* Transport for this session */ | | | 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 | STRING_PROXYUSERNAME, /* Proxy <username>, if used */ STRING_PROXYPASSWORD, /* Proxy <password>, if used */ STRING_NOPROXY, /* List of hosts which should not use the proxy, if used */ STRING_RTSP_SESSION_ID, /* Session ID to use */ STRING_RTSP_STREAM_URI, /* Stream URI for this request */ STRING_RTSP_TRANSPORT, /* Transport for this session */ #ifdef USE_SSH STRING_SSH_PRIVATE_KEY, /* path to the private key file for auth */ STRING_SSH_PUBLIC_KEY, /* path to the public key file for auth */ STRING_SSH_HOST_PUBLIC_KEY_MD5, /* md5 of host public key in ascii hex */ STRING_SSH_KNOWNHOSTS, /* file name of knownhosts file */ #endif STRING_PROXY_SERVICE_NAME, /* Proxy service name */ STRING_SERVICE_NAME, /* Service name */ |
︙ | ︙ | |||
1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 | 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 accepttimeout; /* 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 tftp_blksize; /* in bytes, 0 means use default */ curl_off_t filesize; /* size of file to upload, -1 means unknown */ long low_speed_limit; /* bytes/second */ long low_speed_time; /* number of seconds */ curl_off_t max_send_speed; /* high speed limit in bytes/second for upload */ curl_off_t max_recv_speed; /* high speed limit in bytes/second for download */ | > > | 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 | 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 accepttimeout; /* 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 tftp_blksize; /* in bytes, 0 means use default */ curl_off_t filesize; /* size of file to upload, -1 means unknown */ long low_speed_limit; /* bytes/second */ long low_speed_time; /* number of seconds */ curl_off_t max_send_speed; /* high speed limit in bytes/second for upload */ curl_off_t max_recv_speed; /* high speed limit in bytes/second for download */ |
︙ | ︙ | |||
1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 | size_t 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 */ long 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 */ curl_ftpfile ftp_filemethod; /* how to get to a file when FTP is used */ int ftp_create_missing_dirs; /* 1 - create directories that don't exist 2 - the same but also allow MKD to fail once */ curl_sshkeycallback ssh_keyfunc; /* key matching callback */ void *ssh_keyfunc_userp; /* custom pointer to callback */ enum CURL_NETRC_OPTION use_netrc; /* defined in include/curl.h */ curl_usessl use_ssl; /* if AUTH TLS is to be attempted etc, for FTP or IMAP or POP3 or others! */ | > > > > < < | 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 | size_t 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 */ long 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 */ #endif int ftp_create_missing_dirs; /* 1 - create directories that don't exist 2 - the same but also allow MKD to fail once */ curl_sshkeycallback ssh_keyfunc; /* key matching callback */ void *ssh_keyfunc_userp; /* custom pointer to callback */ enum CURL_NETRC_OPTION use_netrc; /* defined in include/curl.h */ curl_usessl use_ssl; /* if AUTH TLS is to be attempted etc, for FTP or IMAP or POP3 or others! */ long new_file_perms; /* Permissions to use when creating remote files */ long new_directory_perms; /* Permissions to use when creating remote dirs */ long ssh_auth_types; /* allowed SSH auth types */ char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */ unsigned int scope_id; /* Scope id for IPv6 */ long allowed_protocols; long redir_protocols; |
︙ | ︙ | |||
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 | this session. They are STATIC, set by libcurl users or at least initially and they don't change during operations. */ bit get_filetime:1; /* get the time and get of the remote file */ bit tunnel_thru_httpproxy:1; /* use CONNECT through a HTTP proxy */ bit prefer_ascii:1; /* ASCII rather than binary */ bit ftp_append:1; /* append, not overwrite, on upload */ bit ftp_list_only:1; /* switch FTP command for listing directories */ bit ftp_use_port:1; /* use the FTP PORT command */ bit hide_progress:1; /* don't use the progress meter */ bit http_fail_on_error:1; /* fail on HTTP error codes >= 400 */ bit http_keep_sending_on_error:1; /* for HTTP status codes >= 300 */ bit http_follow_location:1; /* follow HTTP redirects */ bit http_transfer_encoding:1; /* request compressed HTTP transfer-encoding */ bit allow_auth_to_other_hosts:1; bit include_header:1; /* include received protocol headers in data output */ bit http_set_referer:1; /* is a custom referer used */ bit http_auto_referer:1; /* set "correct" referer when following location: */ bit opt_no_body:1; /* as set with CURLOPT_NOBODY */ bit upload:1; /* upload request */ bit verbose:1; /* output verbosity */ bit krb:1; /* Kerberos connection requested */ bit reuse_forbid:1; /* forbidden to be reused, close after use */ bit reuse_fresh:1; /* do not re-use an existing connection */ | > > > > > > > < < < < < < | | < | 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 | this session. They are STATIC, set by libcurl users or at least initially and they don't change during operations. */ bit get_filetime:1; /* get the time and get of the remote file */ bit tunnel_thru_httpproxy:1; /* use CONNECT through a HTTP proxy */ bit prefer_ascii:1; /* ASCII rather than binary */ bit ftp_append:1; /* append, not overwrite, on upload */ bit ftp_list_only:1; /* switch FTP command for listing directories */ #ifndef CURL_DISABLE_FTP bit ftp_use_port:1; /* use the FTP PORT command */ bit ftp_use_epsv:1; /* if EPSV is to be attempted or not */ bit ftp_use_eprt:1; /* if EPRT is to be attempted or not */ bit ftp_use_pret:1; /* if PRET is to be used before PASV or not */ bit ftp_skip_ip:1; /* skip the IP address the FTP server passes on to us */ #endif bit hide_progress:1; /* don't use the progress meter */ bit http_fail_on_error:1; /* fail on HTTP error codes >= 400 */ bit http_keep_sending_on_error:1; /* for HTTP status codes >= 300 */ bit http_follow_location:1; /* follow HTTP redirects */ bit http_transfer_encoding:1; /* request compressed HTTP transfer-encoding */ bit allow_auth_to_other_hosts:1; bit include_header:1; /* include received protocol headers in data output */ bit http_set_referer:1; /* is a custom referer used */ bit http_auto_referer:1; /* set "correct" referer when following location: */ bit opt_no_body:1; /* as set with CURLOPT_NOBODY */ bit upload:1; /* upload request */ bit verbose:1; /* output verbosity */ bit krb:1; /* Kerberos connection requested */ bit reuse_forbid:1; /* forbidden to be reused, close after use */ bit reuse_fresh:1; /* do not re-use an existing connection */ bit no_signal:1; /* do not use any signal/alarm handler */ bit tcp_nodelay:1; /* whether to enable TCP_NODELAY or not */ bit ignorecl:1; /* ignore content length */ bit connect_only:1; /* make connection, let application use the socket */ bit http_te_skip:1; /* pass the raw body data to the user, even when transfer-encoded (chunked, compressed) */ bit http_ce_skip:1; /* pass the raw body data to the user, even when content-encoded (chunked, compressed) */ bit proxy_transfer_mode:1; /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */ #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) bit socks5_gssapi_nec:1; /* Flag to support NEC SOCKS5 server */ #endif bit sasl_ir:1; /* Enable/disable SASL initial response */ bit wildcard_enabled:1; /* enable wildcard matching */ bit tcp_keepalive:1; /* use TCP keepalives */ bit tcp_fastopen:1; /* use TCP Fast Open */ bit ssl_enable_npn:1; /* TLS NPN extension? */ bit ssl_enable_alpn:1;/* TLS ALPN extension? */ bit path_as_is:1; /* allow dotdots? */ bit pipewait:1; /* wait for multiplex status before starting a new connection */ bit suppress_connect_headers:1; /* suppress proxy CONNECT response headers from user callbacks */ bit dns_shuffle_addresses:1; /* whether to shuffle addresses before use */ bit stream_depends_e:1; /* set or don't set the Exclusive bit */ bit haproxyprotocol:1; /* whether to send HAProxy PROXY protocol v1 header */ bit abstract_unix_socket:1; bit disallow_username_in_url:1; /* disallow username in url */ bit doh:1; /* DNS-over-HTTPS enabled */ bit doh_get:1; /* use GET for DoH requests, instead of POST */ bit http09_allowed:1; /* allow HTTP/0.9 responses */ }; struct Names { struct curl_hash *hostcache; enum { HCACHE_NONE, /* not pointing to anything */ HCACHE_MULTI, /* points to a shared one in the multi handle */ HCACHE_SHARED /* points to a shared one in a shared object */ } hostcachetype; }; /* * The 'connectdata' struct MUST have all the connection oriented stuff as we |
︙ | ︙ | |||
1764 1765 1766 1767 1768 1769 1770 | struct Curl_easy { /* first, two fields for the linked list of these */ struct Curl_easy *next; struct Curl_easy *prev; struct connectdata *conn; struct curl_llist_element connect_queue; | | | | 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 | struct Curl_easy { /* first, two fields for the linked list of these */ struct Curl_easy *next; struct Curl_easy *prev; struct connectdata *conn; struct curl_llist_element connect_queue; struct curl_llist_element sh_queue; /* list per Curl_sh_entry */ struct curl_llist_element conn_queue; /* list per connectdata */ CURLMstate mstate; /* the handle's state */ CURLcode result; /* previous result */ struct Curl_message msg; /* A single posted message. */ /* Array with the plain socket numbers this handle takes care of, in no |
︙ | ︙ | |||
1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 | is to be used or not. */ #ifdef USE_ALTSVC struct altsvcinfo *asi; /* the alt-svc cache */ #endif struct Progress progress; /* for all the progress meter data */ struct UrlState state; /* struct for fields used for state info and other dynamic purposes */ struct WildcardData wildcard; /* wildcard download state info */ struct PureInfo info; /* stats, reports and info data */ struct curl_tlssessioninfo tsi; /* Information about the TLS session, only valid after a client has asked for it */ #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) iconv_t outbound_cd; /* for translating to the network encoding */ iconv_t inbound_cd; /* for translating from the network encoding */ iconv_t utf8_cd; /* for translating to UTF8 */ | > > | 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 | is to be used or not. */ #ifdef USE_ALTSVC struct altsvcinfo *asi; /* the alt-svc cache */ #endif struct Progress progress; /* for all the progress meter data */ struct UrlState state; /* struct for fields used for state info and other dynamic purposes */ #ifndef CURL_DISABLE_FTP struct WildcardData wildcard; /* wildcard download state info */ #endif struct PureInfo info; /* stats, reports and info data */ struct curl_tlssessioninfo tsi; /* Information about the TLS session, only valid after a client has asked for it */ #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) iconv_t outbound_cd; /* for translating to the network encoding */ iconv_t inbound_cd; /* for translating from the network encoding */ iconv_t utf8_cd; /* for translating to UTF8 */ |
︙ | ︙ |
Changes to jni/curl/lib/vauth/cleartext.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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. * * RFC4616 PLAIN authentication * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt> * ***************************************************************************/ #include "curl_setup.h" #if !defined(CURL_DISABLE_IMAP) || !defined(CURL_DISABLE_SMTP) || \ !defined(CURL_DISABLE_POP3) #include <curl/curl.h> #include "urldata.h" #include "vauth/vauth.h" #include "curl_base64.h" #include "curl_md5.h" |
︙ | ︙ | |||
45 46 47 48 49 50 51 | * * This is used to generate an already encoded PLAIN message ready * for sending to the recipient. * * Parameters: * * data [in] - The session handle. | | > | | > | | > > | | | | > | | | | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | * * This is used to generate an already encoded PLAIN message ready * for sending to the recipient. * * Parameters: * * data [in] - The session handle. * authzid [in] - The authorization identity. * authcid [in] - The authentication identity. * passwd [in] - The password. * outptr [in/out] - The address where a pointer to newly allocated memory * holding the result will be stored upon completion. * outlen [out] - The length of the output message. * * Returns CURLE_OK on success. */ CURLcode Curl_auth_create_plain_message(struct Curl_easy *data, const char *authzid, const char *authcid, const char *passwd, char **outptr, size_t *outlen) { CURLcode result; char *plainauth; size_t zlen; size_t clen; size_t plen; size_t plainlen; *outlen = 0; *outptr = NULL; zlen = (authzid == NULL ? 0 : strlen(authzid)); clen = strlen(authcid); plen = strlen(passwd); /* Compute binary message length. Check for overflows. */ if(((zlen + clen) > SIZE_T_MAX/4) || (plen > (SIZE_T_MAX/2 - 2))) return CURLE_OUT_OF_MEMORY; plainlen = zlen + clen + plen + 2; plainauth = malloc(plainlen); if(!plainauth) return CURLE_OUT_OF_MEMORY; /* Calculate the reply */ if(zlen != 0) memcpy(plainauth, authzid, zlen); plainauth[zlen] = '\0'; memcpy(plainauth + zlen + 1, authcid, clen); plainauth[zlen + clen + 1] = '\0'; memcpy(plainauth + zlen + clen + 2, passwd, plen); /* Base64 encode the reply */ result = Curl_base64_encode(data, plainauth, plainlen, outptr, outlen); free(plainauth); return result; } |
︙ | ︙ | |||
153 154 155 156 157 158 159 | CURLcode Curl_auth_create_external_message(struct Curl_easy *data, const char *user, char **outptr, size_t *outlen) { /* This is the same formatting as the login message */ return Curl_auth_create_login_message(data, user, outptr, outlen); } | > > | 161 162 163 164 165 166 167 168 169 | CURLcode Curl_auth_create_external_message(struct Curl_easy *data, const char *user, char **outptr, size_t *outlen) { /* This is the same formatting as the login message */ return Curl_auth_create_login_message(data, user, outptr, outlen); } #endif /* if no users */ |
Changes to jni/curl/lib/vauth/digest.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
781 782 783 784 785 786 787 | */ hashthis = (unsigned char *) aprintf("%s:%s", request, uripath); if(!hashthis) return CURLE_OUT_OF_MEMORY; if(digest->qop && strcasecompare(digest->qop, "auth-int")) { | | < | 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 | */ hashthis = (unsigned char *) aprintf("%s:%s", request, uripath); if(!hashthis) return CURLE_OUT_OF_MEMORY; if(digest->qop && strcasecompare(digest->qop, "auth-int")) { /* We don't support auth-int for PUT or POST */ char hashed[65]; unsigned char *hashthis2; hash(hashbuf, (const unsigned char *)""); convert_to_ascii(hashbuf, (unsigned char *)hashed); hashthis2 = (unsigned char *)aprintf("%s:%s", hashthis, hashed); |
︙ | ︙ |
Changes to jni/curl/lib/vauth/krb5_gssapi.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2014 - 2019, Steve Holme, <steve_holme@hotmail.com>. * Copyright (C) 2015, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
︙ | ︙ | |||
368 369 370 371 372 373 374 | /* Free the message buffer */ free(message); return result; } /* | | | | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 | /* Free the message buffer */ free(message); return result; } /* * Curl_auth_cleanup_gssapi() * * This is used to clean up the GSSAPI (Kerberos V5) specific data. * * Parameters: * * krb5 [in/out] - The Kerberos 5 data struct being cleaned up. * */ void Curl_auth_cleanup_gssapi(struct kerberos5data *krb5) { OM_uint32 minor_status; /* Free our security context */ if(krb5->context != GSS_C_NO_CONTEXT) { gss_delete_sec_context(&minor_status, &krb5->context, GSS_C_NO_BUFFER); krb5->context = GSS_C_NO_CONTEXT; |
︙ | ︙ |
Changes to jni/curl/lib/vauth/krb5_sspi.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2014 - 2019, Steve Holme, <steve_holme@hotmail.com>. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at https://curl.haxx.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 |
︙ | ︙ | |||
470 471 472 473 474 475 476 | free(message); free(trailer); return result; } /* | | | | 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 | free(message); free(trailer); return result; } /* * Curl_auth_cleanup_gssapi() * * This is used to clean up the GSSAPI (Kerberos V5) specific data. * * Parameters: * * krb5 [in/out] - The Kerberos 5 data struct being cleaned up. * */ void Curl_auth_cleanup_gssapi(struct kerberos5data *krb5) { /* Free our security context */ if(krb5->context) { s_pSecFn->DeleteSecurityContext(krb5->context); free(krb5->context); krb5->context = NULL; } |
︙ | ︙ |
Changes to jni/curl/lib/vauth/ntlm.c.
︙ | ︙ | |||
399 400 401 402 403 404 405 | domain are empty */ (void)userp; (void)passwdp; (void)service, (void)hostname, /* Clean up any former leftovers and initialise to defaults */ | | | 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 | domain are empty */ (void)userp; (void)passwdp; (void)service, (void)hostname, /* Clean up any former leftovers and initialise to defaults */ Curl_auth_cleanup_ntlm(ntlm); #if defined(USE_NTRESPONSES) && defined(USE_NTLM2SESSION) #define NTLM2FLAG NTLMFLAG_NEGOTIATE_NTLM2_KEY #else #define NTLM2FLAG 0 #endif msnprintf((char *)ntlmbuf, NTLM_BUFSIZE, |
︙ | ︙ | |||
840 841 842 843 844 845 846 | size - domoff); if(result) return CURLE_CONV_FAILED; /* Return with binary blob encoded into base64 */ result = Curl_base64_encode(data, (char *)ntlmbuf, size, outptr, outlen); | | | | | | | | | | | | | 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 | size - domoff); if(result) return CURLE_CONV_FAILED; /* Return with binary blob encoded into base64 */ result = Curl_base64_encode(data, (char *)ntlmbuf, size, outptr, outlen); Curl_auth_cleanup_ntlm(ntlm); return result; } /* * Curl_auth_cleanup_ntlm() * * This is used to clean up the NTLM specific data. * * Parameters: * * ntlm [in/out] - The NTLM data struct being cleaned up. * */ void Curl_auth_cleanup_ntlm(struct ntlmdata *ntlm) { /* Free the target info */ Curl_safefree(ntlm->target_info); /* Reset any variables */ ntlm->target_info_len = 0; } #endif /* USE_NTLM && !USE_WINDOWS_SSPI */ |
Changes to jni/curl/lib/vauth/ntlm_sspi.c.
︙ | ︙ | |||
91 92 93 94 95 96 97 | SecBuffer type_1_buf; SecBufferDesc type_1_desc; SECURITY_STATUS status; unsigned long attrs; TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */ /* Clean up any former leftovers and initialise to defaults */ | | | 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | SecBuffer type_1_buf; SecBufferDesc type_1_desc; SECURITY_STATUS status; unsigned long attrs; TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */ /* Clean up any former leftovers and initialise to defaults */ Curl_auth_cleanup_ntlm(ntlm); /* Query the security package for NTLM */ status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NTLM), &SecurityPackage); if(status != SEC_E_OK) return CURLE_NOT_BUILT_IN; |
︙ | ︙ | |||
319 320 321 322 323 324 325 | return CURLE_RECV_ERROR; } /* Base64 encode the response */ result = Curl_base64_encode(data, (char *) ntlm->output_token, type_3_buf.cbBuffer, outptr, outlen); | | | | | 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 | return CURLE_RECV_ERROR; } /* Base64 encode the response */ result = Curl_base64_encode(data, (char *) ntlm->output_token, type_3_buf.cbBuffer, outptr, outlen); Curl_auth_cleanup_ntlm(ntlm); return result; } /* * Curl_auth_cleanup_ntlm() * * This is used to clean up the NTLM specific data. * * Parameters: * * ntlm [in/out] - The NTLM data struct being cleaned up. * */ void Curl_auth_cleanup_ntlm(struct ntlmdata *ntlm) { /* Free our security context */ if(ntlm->context) { s_pSecFn->DeleteSecurityContext(ntlm->context); free(ntlm->context); ntlm->context = NULL; } |
︙ | ︙ |
Changes to jni/curl/lib/vauth/oauth2.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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. * * RFC6749 OAuth 2.0 Authorization Framework * ***************************************************************************/ #include "curl_setup.h" #if !defined(CURL_DISABLE_IMAP) || !defined(CURL_DISABLE_SMTP) || \ !defined(CURL_DISABLE_POP3) #include <curl/curl.h> #include "urldata.h" #include "vauth/vauth.h" #include "curl_base64.h" #include "warnless.h" |
︙ | ︙ | |||
42 43 44 45 46 47 48 | * This is used to generate an already encoded OAuth 2.0 message ready for * sending to the recipient. * * Parameters: * * data[in] - The session handle. * user[in] - The user name. | | | < < | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | * This is used to generate an already encoded OAuth 2.0 message ready for * sending to the recipient. * * Parameters: * * data[in] - The session handle. * user[in] - The user name. * host[in] - The host name. * port[in] - The port(when not Port 80). * bearer[in] - The bearer token. * outptr[in / out] - The address where a pointer to newly allocated memory * holding the result will be stored upon completion. * outlen[out] - The length of the output message. * * Returns CURLE_OK on success. */ CURLcode Curl_auth_create_oauth_bearer_message(struct Curl_easy *data, const char *user, const char *host, const long port, const char *bearer, char **outptr, size_t *outlen) { CURLcode result = CURLE_OK; char *oauth = NULL; /* Generate the message */ if(port == 0 || port == 80) oauth = aprintf("n,a=%s,\1host=%s\1auth=Bearer %s\1\1", user, host, bearer); else oauth = aprintf("n,a=%s,\1host=%s\1port=%ld\1auth=Bearer %s\1\1", user, host, port, bearer); if(!oauth) return CURLE_OUT_OF_MEMORY; /* Base64 encode the reply */ result = Curl_base64_encode(data, oauth, strlen(oauth), outptr, outlen); free(oauth); return result; } /* * Curl_auth_create_xoauth_bearer_message() * * This is used to generate an already encoded XOAuth 2.0 message ready for * sending to the recipient. * * Parameters: * * data[in] - The session handle. * user[in] - The user name. * bearer[in] - The bearer token. * outptr[in / out] - The address where a pointer to newly allocated memory * holding the result will be stored upon completion. * outlen[out] - The length of the output message. * * Returns CURLE_OK on success. */ CURLcode Curl_auth_create_xoauth_bearer_message(struct Curl_easy *data, const char *user, const char *bearer, char **outptr, size_t *outlen) { CURLcode result = CURLE_OK; /* Generate the message */ char *xoauth = aprintf("user=%s\1auth=Bearer %s\1\1", user, bearer); if(!xoauth) return CURLE_OUT_OF_MEMORY; /* Base64 encode the reply */ result = Curl_base64_encode(data, xoauth, strlen(xoauth), outptr, outlen); free(xoauth); return result; } #endif /* disabled, no users */ |
Changes to jni/curl/lib/vauth/spnego_gssapi.c.
︙ | ︙ | |||
93 94 95 96 97 98 99 | (void) user; (void) password; if(nego->context && nego->status == GSS_S_COMPLETE) { /* We finished successfully our part of authentication, but server * rejected it (since we're again here). Exit with an error since we * can't invent anything better */ | | | 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | (void) user; (void) password; if(nego->context && nego->status == GSS_S_COMPLETE) { /* We finished successfully our part of authentication, but server * rejected it (since we're again here). Exit with an error since we * can't invent anything better */ Curl_auth_cleanup_spnego(nego); return CURLE_LOGIN_DENIED; } if(!nego->spn) { /* Generate our SPN */ char *spn = Curl_auth_build_spn(service, NULL, host); if(!spn) |
︙ | ︙ | |||
166 167 168 169 170 171 172 | if(GSS_ERROR(major_status)) { if(output_token.value) gss_release_buffer(&unused_status, &output_token); Curl_gss_log_error(data, "gss_init_sec_context() failed: ", major_status, minor_status); | | | 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | if(GSS_ERROR(major_status)) { if(output_token.value) gss_release_buffer(&unused_status, &output_token); Curl_gss_log_error(data, "gss_init_sec_context() failed: ", major_status, minor_status); return CURLE_LOGIN_DENIED; } if(!output_token.value || !output_token.length) { if(output_token.value) gss_release_buffer(&unused_status, &output_token); return CURLE_OUT_OF_MEMORY; |
︙ | ︙ | |||
234 235 236 237 238 239 240 | return CURLE_REMOTE_ACCESS_DENIED; } return CURLE_OK; } /* | | | | 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 CURLE_REMOTE_ACCESS_DENIED; } return CURLE_OK; } /* * Curl_auth_cleanup_spnego() * * This is used to clean up the SPNEGO (Negotiate) specific data. * * Parameters: * * nego [in/out] - The Negotiate data struct being cleaned up. * */ void Curl_auth_cleanup_spnego(struct negotiatedata *nego) { OM_uint32 minor_status; /* Free our security context */ if(nego->context != GSS_C_NO_CONTEXT) { gss_delete_sec_context(&minor_status, &nego->context, GSS_C_NO_BUFFER); nego->context = GSS_C_NO_CONTEXT; |
︙ | ︙ | |||
269 270 271 272 273 274 275 | if(nego->spn != GSS_C_NO_NAME) { gss_release_name(&minor_status, &nego->spn); nego->spn = GSS_C_NO_NAME; } /* Reset any variables */ nego->status = 0; | < | 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | if(nego->spn != GSS_C_NO_NAME) { gss_release_name(&minor_status, &nego->spn); nego->spn = GSS_C_NO_NAME; } /* Reset any variables */ nego->status = 0; nego->noauthpersist = FALSE; nego->havenoauthpersist = FALSE; nego->havenegdata = FALSE; nego->havemultiplerequests = FALSE; } #endif /* HAVE_GSSAPI && USE_SPNEGO */ |
Changes to jni/curl/lib/vauth/spnego_sspi.c.
︙ | ︙ | |||
103 104 105 106 107 108 109 | (void) data; #endif if(nego->context && nego->status == SEC_E_OK) { /* We finished successfully our part of authentication, but server * rejected it (since we're again here). Exit with an error since we * can't invent anything better */ | | | 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | (void) data; #endif if(nego->context && nego->status == SEC_E_OK) { /* We finished successfully our part of authentication, but server * rejected it (since we're again here). Exit with an error since we * can't invent anything better */ Curl_auth_cleanup_spnego(nego); return CURLE_LOGIN_DENIED; } if(!nego->spn) { /* Generate our SPN */ nego->spn = Curl_auth_build_spn(service, host, NULL); if(!nego->spn) |
︙ | ︙ | |||
303 304 305 306 307 308 309 | return CURLE_REMOTE_ACCESS_DENIED; } return CURLE_OK; } /* | | | | 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 | return CURLE_REMOTE_ACCESS_DENIED; } return CURLE_OK; } /* * Curl_auth_cleanup_spnego() * * This is used to clean up the SPNEGO (Negotiate) specific data. * * Parameters: * * nego [in/out] - The Negotiate data struct being cleaned up. * */ void Curl_auth_cleanup_spnego(struct negotiatedata *nego) { /* Free our security context */ if(nego->context) { s_pSecFn->DeleteSecurityContext(nego->context); free(nego->context); nego->context = NULL; } |
︙ | ︙ | |||
339 340 341 342 343 344 345 | /* Free the SPN and output token */ Curl_safefree(nego->spn); Curl_safefree(nego->output_token); /* Reset any variables */ nego->status = 0; nego->token_max = 0; | < | 339 340 341 342 343 344 345 346 347 348 349 350 351 352 | /* Free the SPN and output token */ Curl_safefree(nego->spn); Curl_safefree(nego->output_token); /* Reset any variables */ nego->status = 0; nego->token_max = 0; nego->noauthpersist = FALSE; nego->havenoauthpersist = FALSE; nego->havenegdata = FALSE; nego->havemultiplerequests = FALSE; } #endif /* USE_WINDOWS_SSPI && USE_SPNEGO */ |
Changes to jni/curl/lib/vauth/vauth.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2014 - 2019, Steve Holme, <steve_holme@hotmail.com>. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at https://curl.haxx.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 |
︙ | ︙ | |||
101 102 103 104 105 106 107 | /* Return our newly allocated SPN */ return tchar_spn; } #endif /* USE_WINDOWS_SSPI */ /* | | | | | | | | | | | | | | | | | | | | | | 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 | /* Return our newly allocated SPN */ return tchar_spn; } #endif /* USE_WINDOWS_SSPI */ /* * Curl_auth_user_contains_domain() * * This is used to test if the specified user contains a Windows domain name as * follows: * * Domain\User (Down-level Logon Name) * Domain/User (curl Down-level format - for compatibility with existing code) * User@Domain (User Principal Name) * * Note: The user name may be empty when using a GSS-API library or Windows * SSPI as the user and domain are either obtained from the credentials cache * when using GSS-API or via the currently logged in user's credentials when * using Windows SSPI. * * Parameters: * * user [in] - The user name. * * Returns TRUE on success; otherwise FALSE. */ bool Curl_auth_user_contains_domain(const char *user) { bool valid = FALSE; if(user && *user) { /* Check we have a domain name or UPN present */ char *p = strpbrk(user, "\\/@"); |
︙ | ︙ |
Changes to jni/curl/lib/vauth/vauth.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_VAUTH_H #define HEADER_CURL_VAUTH_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_VAUTH_H #define HEADER_CURL_VAUTH_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2014 - 2019, Steve Holme, <steve_holme@hotmail.com>. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at https://curl.haxx.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 |
︙ | ︙ | |||
56 57 58 59 60 61 62 | #endif /* This is used to test if the user contains a Windows domain name */ bool Curl_auth_user_contains_domain(const char *user); /* This is used to generate a base64 encoded PLAIN cleartext message */ CURLcode Curl_auth_create_plain_message(struct Curl_easy *data, | | > | | 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #endif /* This is used to test if the user contains a Windows domain name */ bool Curl_auth_user_contains_domain(const char *user); /* This is used to generate a base64 encoded PLAIN cleartext message */ CURLcode Curl_auth_create_plain_message(struct Curl_easy *data, const char *authzid, const char *authcid, const char *passwd, char **outptr, size_t *outlen); /* This is used to generate a base64 encoded LOGIN cleartext message */ CURLcode Curl_auth_create_login_message(struct Curl_easy *data, const char *valuep, char **outptr, size_t *outlen); |
︙ | ︙ | |||
137 138 139 140 141 142 143 | CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data, const char *userp, const char *passwdp, struct ntlmdata *ntlm, char **outptr, size_t *outlen); /* This is used to clean up the NTLM specific data */ | | > > > > > > > | 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 | CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data, const char *userp, const char *passwdp, struct ntlmdata *ntlm, char **outptr, size_t *outlen); /* This is used to clean up the NTLM specific data */ void Curl_auth_cleanup_ntlm(struct ntlmdata *ntlm); #endif /* USE_NTLM */ /* This is used to generate a base64 encoded OAuth 2.0 message */ CURLcode Curl_auth_create_oauth_bearer_message(struct Curl_easy *data, const char *user, const char *host, const long port, const char *bearer, char **outptr, size_t *outlen); /* This is used to generate a base64 encoded XOAuth 2.0 message */ CURLcode Curl_auth_create_xoauth_bearer_message(struct Curl_easy *data, const char *user, const char *bearer, char **outptr, size_t *outlen); #if defined(USE_KERBEROS5) /* This is used to evaluate if GSSAPI (Kerberos V5) is supported */ bool Curl_auth_is_gssapi_supported(void); /* This is used to generate a base64 encoded GSSAPI (Kerberos V5) user token message */ CURLcode Curl_auth_create_gssapi_user_message(struct Curl_easy *data, |
︙ | ︙ | |||
172 173 174 175 176 177 178 | CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data, const char *input, struct kerberos5data *krb5, char **outptr, size_t *outlen); /* This is used to clean up the GSSAPI specific data */ | | | 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data, const char *input, struct kerberos5data *krb5, char **outptr, size_t *outlen); /* This is used to clean up the GSSAPI specific data */ void Curl_auth_cleanup_gssapi(struct kerberos5data *krb5); #endif /* USE_KERBEROS5 */ #if defined(USE_SPNEGO) /* This is used to evaluate if SPNEGO (Negotiate) is supported */ bool Curl_auth_is_spnego_supported(void); /* This is used to decode a base64 encoded SPNEGO (Negotiate) challenge |
︙ | ︙ | |||
196 197 198 199 200 201 202 | /* This is used to generate a base64 encoded SPNEGO (Negotiate) response message */ CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data, struct negotiatedata *nego, char **outptr, size_t *outlen); /* This is used to clean up the SPNEGO specifiec data */ | | | 204 205 206 207 208 209 210 211 212 213 214 215 | /* This is used to generate a base64 encoded SPNEGO (Negotiate) response message */ CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data, struct negotiatedata *nego, char **outptr, size_t *outlen); /* This is used to clean up the SPNEGO specifiec data */ void Curl_auth_cleanup_spnego(struct negotiatedata *nego); #endif /* USE_SPNEGO */ #endif /* HEADER_CURL_VAUTH_H */ |
Changes to jni/curl/lib/version.c.
︙ | ︙ | |||
27 28 29 30 31 32 33 | #include "vtls/vtls.h" #include "http2.h" #include "ssh.h" #include "curl_printf.h" #ifdef USE_ARES # if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \ | | | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include "vtls/vtls.h" #include "http2.h" #include "ssh.h" #include "curl_printf.h" #ifdef USE_ARES # if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \ (defined(WIN32) || defined(__SYMBIAN32__)) # define CARES_STATICLIB # endif # include <ares.h> #endif #ifdef USE_LIBIDN2 #include <idn2.h> |
︙ | ︙ | |||
270 271 272 273 274 275 276 | #endif #ifdef USE_LIBRTMP "rtmp", #endif #ifndef CURL_DISABLE_RTSP "rtsp", #endif | | | 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | #endif #ifdef USE_LIBRTMP "rtmp", #endif #ifndef CURL_DISABLE_RTSP "rtsp", #endif #if defined(USE_SSH) "scp", "sftp", #endif #if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \ (CURL_SIZEOF_CURL_OFF_T > 4) && \ (!defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)) "smb", |
︙ | ︙ | |||
386 387 388 389 390 391 392 | 0, /* brotli_ver_num */ NULL, /* brotli version */ }; curl_version_info_data *curl_version_info(CURLversion stamp) { static bool initialized; | | > > > > | 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 | 0, /* brotli_ver_num */ NULL, /* brotli version */ }; curl_version_info_data *curl_version_info(CURLversion stamp) { static bool initialized; #if defined(USE_SSH) static char ssh_buffer[80]; #endif #ifdef USE_SSL #ifdef CURL_WITH_MULTI_SSL static char ssl_buffer[200]; #else static char ssl_buffer[80]; #endif #endif #ifdef HAVE_BROTLI static char brotli_buffer[80]; #endif if(initialized) return &version_info; |
︙ | ︙ |
Changes to jni/curl/lib/vtls/cyassl.c.
︙ | ︙ | |||
75 76 77 78 79 80 81 82 83 84 85 86 87 88 | #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "strcase.h" #include "x509asn1.h" #include "curl_printf.h" #include <cyassl/openssl/ssl.h> #include <cyassl/ssl.h> #ifdef HAVE_CYASSL_ERROR_SSL_H #include <cyassl/error-ssl.h> #else #include <cyassl/error.h> | > | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "strcase.h" #include "x509asn1.h" #include "curl_printf.h" #include "multiif.h" #include <cyassl/openssl/ssl.h> #include <cyassl/ssl.h> #ifdef HAVE_CYASSL_ERROR_SSL_H #include <cyassl/error-ssl.h> #else #include <cyassl/error.h> |
︙ | ︙ | |||
138 139 140 141 142 143 144 | * This function loads all the client/CA certificates and CRLs. Setup the TLS * layer and do all necessary magic. */ static CURLcode cyassl_connect_step1(struct connectdata *conn, int sockindex) { | < | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | * This function loads all the client/CA certificates and CRLs. Setup the TLS * layer and do all necessary magic. */ static CURLcode cyassl_connect_step1(struct connectdata *conn, int sockindex) { char *ciphers; struct Curl_easy *data = conn->data; struct ssl_connect_data* connssl = &conn->ssl[sockindex]; SSL_METHOD* req_method = NULL; curl_socket_t sockfd = conn->sock[sockindex]; #ifdef HAVE_SNI bool sni = FALSE; |
︙ | ︙ | |||
415 416 417 418 419 420 421 422 423 424 425 426 427 428 | if(SSL_SET_OPTION(primary.sessionid)) { void *ssl_sessionid = NULL; Curl_ssl_sessionid_lock(conn); if(!Curl_ssl_getsessionid(conn, &ssl_sessionid, NULL, sockindex)) { /* we got a session id, use it! */ if(!SSL_set_session(BACKEND->handle, ssl_sessionid)) { Curl_ssl_sessionid_unlock(conn); failf(data, "SSL: SSL_set_session failed: %s", ERR_error_string(SSL_get_error(BACKEND->handle, 0), error_buffer)); return CURLE_SSL_CONNECT_ERROR; } /* Informational message */ | > | 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 | if(SSL_SET_OPTION(primary.sessionid)) { void *ssl_sessionid = NULL; Curl_ssl_sessionid_lock(conn); if(!Curl_ssl_getsessionid(conn, &ssl_sessionid, NULL, sockindex)) { /* we got a session id, use it! */ if(!SSL_set_session(BACKEND->handle, ssl_sessionid)) { char error_buffer[CYASSL_MAX_ERROR_SZ]; Curl_ssl_sessionid_unlock(conn); failf(data, "SSL: SSL_set_session failed: %s", ERR_error_string(SSL_get_error(BACKEND->handle, 0), error_buffer)); return CURLE_SSL_CONNECT_ERROR; } /* Informational message */ |
︙ | ︙ | |||
595 596 597 598 599 600 601 602 603 604 605 606 607 608 | !memcmp(protocol, NGHTTP2_PROTO_VERSION_ID, NGHTTP2_PROTO_VERSION_ID_LEN)) conn->negnpn = CURL_HTTP_VERSION_2; #endif else infof(data, "ALPN, unrecognized protocol %.*s\n", protocol_len, protocol); } else if(rc == SSL_ALPN_NOT_FOUND) infof(data, "ALPN, server did not agree to a protocol\n"); else { failf(data, "ALPN, failure getting protocol, error %d", rc); return CURLE_SSL_CONNECT_ERROR; } | > > | 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 | !memcmp(protocol, NGHTTP2_PROTO_VERSION_ID, NGHTTP2_PROTO_VERSION_ID_LEN)) conn->negnpn = CURL_HTTP_VERSION_2; #endif else infof(data, "ALPN, unrecognized protocol %.*s\n", protocol_len, protocol); Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); } else if(rc == SSL_ALPN_NOT_FOUND) infof(data, "ALPN, server did not agree to a protocol\n"); else { failf(data, "ALPN, failure getting protocol, error %d", rc); return CURLE_SSL_CONNECT_ERROR; } |
︙ | ︙ |
Changes to jni/curl/lib/vtls/gskit.c.
︙ | ︙ | |||
730 731 732 733 734 735 736 | static ssize_t gskit_recv(struct connectdata *conn, int num, char *buf, size_t buffersize, CURLcode *curlcode) { struct ssl_connect_data *connssl = &conn->ssl[num]; struct Curl_easy *data = conn->data; | < | | 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 | static ssize_t gskit_recv(struct connectdata *conn, int num, char *buf, size_t buffersize, CURLcode *curlcode) { struct ssl_connect_data *connssl = &conn->ssl[num]; struct Curl_easy *data = conn->data; int nread; CURLcode cc = CURLE_RECV_ERROR; if(pipe_ssloverssl(conn, num, SOS_READ) >= 0) { int buffsize = buffersize > (size_t) INT_MAX? INT_MAX: (int) buffersize; cc = gskit_status(data, gsk_secure_soc_read(BACKEND->handle, buf, buffsize, &nread), "gsk_secure_soc_read()", CURLE_RECV_ERROR); } switch(cc) { case CURLE_OK: break; |
︙ | ︙ | |||
802 803 804 805 806 807 808 | const char * const keyringlabel = SSL_SET_OPTION(cert); const long int ssl_version = SSL_CONN_CONFIG(version); const bool verifypeer = SSL_CONN_CONFIG(verifypeer); const char * const hostname = SSL_IS_PROXY()? conn->http_proxy.host.name: conn->host.name; const char *sni; unsigned int protoflags = 0; | < | 801 802 803 804 805 806 807 808 809 810 811 812 813 814 | const char * const keyringlabel = SSL_SET_OPTION(cert); const long int ssl_version = SSL_CONN_CONFIG(version); const bool verifypeer = SSL_CONN_CONFIG(verifypeer); const char * const hostname = SSL_IS_PROXY()? conn->http_proxy.host.name: conn->host.name; const char *sni; unsigned int protoflags = 0; Qso_OverlappedIO_t commarea; int sockpair[2]; static const int sobufsize = CURL_MAX_WRITE_SIZE; /* Create SSL environment, start (preferably asynchronous) handshake. */ BACKEND->handle = (gsk_handle) NULL; |
︙ | ︙ | |||
910 911 912 913 914 915 916 | result = CURLE_OK; } /* Set session parameters. */ if(!result) { /* Compute the handshake timeout. Since GSKit granularity is 1 second, we round up the required value. */ | | | 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 | result = CURLE_OK; } /* Set session parameters. */ if(!result) { /* Compute the handshake timeout. Since GSKit granularity is 1 second, we round up the required value. */ long timeout = Curl_timeleft(data, NULL, TRUE); if(timeout < 0) result = CURLE_OPERATION_TIMEDOUT; else result = set_numeric(data, BACKEND->handle, GSK_HANDSHAKE_TIMEOUT, (timeout + 999) / 1000); } if(!result) |
︙ | ︙ | |||
1017 1018 1019 1020 1021 1022 1023 | static CURLcode gskit_connect_step2(struct connectdata *conn, int sockindex, bool nonblocking) { struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; Qso_OverlappedIO_t cstat; | < | | 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 | static CURLcode gskit_connect_step2(struct connectdata *conn, int sockindex, bool nonblocking) { struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; Qso_OverlappedIO_t cstat; struct timeval stmv; CURLcode result; /* Poll or wait for end of SSL asynchronous handshake. */ for(;;) { long timeout_ms = nonblocking? 0: Curl_timeleft(data, NULL, TRUE); if(timeout_ms < 0) timeout_ms = 0; stmv.tv_sec = timeout_ms / 1000; stmv.tv_usec = (timeout_ms - stmv.tv_sec * 1000) * 1000; switch(QsoWaitForIOCompletion(BACKEND->iocport, &cstat, &stmv)) { case 1: /* Operation complete. */ break; |
︙ | ︙ | |||
1073 1074 1075 1076 1077 1078 1079 | struct ssl_connect_data *connssl = &conn->ssl[sockindex]; const gsk_cert_data_elem *cdev; int cdec; const gsk_cert_data_elem *p; const char *cert = (const char *) NULL; const char *certend; const char *ptr; | < > > | 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 | struct ssl_connect_data *connssl = &conn->ssl[sockindex]; const gsk_cert_data_elem *cdev; int cdec; const gsk_cert_data_elem *p; const char *cert = (const char *) NULL; const char *certend; const char *ptr; CURLcode result; /* SSL handshake done: gather certificate info and verify host. */ if(gskit_status(data, gsk_attribute_get_cert_info(BACKEND->handle, GSK_PARTNER_CERT_INFO, &cdev, &cdec), "gsk_attribute_get_cert_info()", CURLE_SSL_CONNECT_ERROR) == CURLE_OK) { int i; infof(data, "Server certificate:\n"); p = cdev; for(i = 0; i++ < cdec; p++) switch(p->cert_data_id) { case CERT_BODY_DER: cert = p->cert_data_p; certend = cert + cdev->cert_data_l; |
︙ | ︙ | |||
1156 1157 1158 1159 1160 1161 1162 | static CURLcode gskit_connect_common(struct connectdata *conn, int sockindex, bool nonblocking, bool *done) { struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; long timeout_ms; | < | 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 | static CURLcode gskit_connect_common(struct connectdata *conn, int sockindex, bool nonblocking, bool *done) { struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; long timeout_ms; CURLcode result = CURLE_OK; *done = connssl->state == ssl_connection_complete; if(*done) return CURLE_OK; /* Step 1: create session, start handshake. */ |
︙ | ︙ | |||
1258 1259 1260 1261 1262 1263 1264 | } static int Curl_gskit_shutdown(struct connectdata *conn, int sockindex) { struct ssl_connect_data *connssl = &conn->ssl[sockindex]; struct Curl_easy *data = conn->data; | < > > > > | 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 | } static int Curl_gskit_shutdown(struct connectdata *conn, int sockindex) { struct ssl_connect_data *connssl = &conn->ssl[sockindex]; struct Curl_easy *data = conn->data; int what; int rc; char buf[120]; if(!BACKEND->handle) return 0; #ifndef CURL_DISABLE_FTP if(data->set.ftp_ccc != CURLFTPSSL_CCC_ACTIVE) return 0; #endif close_one(connssl, conn, sockindex); rc = 0; what = SOCKET_READABLE(conn->sock[sockindex], SSL_SHUTDOWN_TIMEOUT); for(;;) { ssize_t nread; if(what < 0) { /* anything that gets here is fatally bad */ failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO); rc = -1; break; } |
︙ | ︙ |
Changes to jni/curl/lib/vtls/gtls.c.
︙ | ︙ | |||
51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "strcase.h" #include "warnless.h" #include "x509asn1.h" #include "curl_printf.h" #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" /* Enable GnuTLS debugging by defining GTLSDEBUG */ /*#define GTLSDEBUG */ | > | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "strcase.h" #include "warnless.h" #include "x509asn1.h" #include "multiif.h" #include "curl_printf.h" #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" /* Enable GnuTLS debugging by defining GTLSDEBUG */ /*#define GTLSDEBUG */ |
︙ | ︙ | |||
281 282 283 284 285 286 287 | bool duringconnect, bool nonblocking) { struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; gnutls_session_t session = BACKEND->session; curl_socket_t sockfd = conn->sock[sockindex]; | > > | | < < | | 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 | bool duringconnect, bool nonblocking) { struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; gnutls_session_t session = BACKEND->session; curl_socket_t sockfd = conn->sock[sockindex]; for(;;) { time_t timeout_ms; int rc; /* check allowed time left */ timeout_ms = Curl_timeleft(data, NULL, duringconnect); if(timeout_ms < 0) { /* no need to continue if time already is up */ failf(data, "SSL connection timeout"); return CURLE_OPERATION_TIMEDOUT; } /* if ssl is expecting something, check if it's available. */ if(connssl->connecting_state == ssl_connect_2_reading || connssl->connecting_state == ssl_connect_2_writing) { int what; curl_socket_t writefd = ssl_connect_2_writing == connssl->connecting_state?sockfd:CURL_SOCKET_BAD; curl_socket_t readfd = ssl_connect_2_reading == connssl->connecting_state?sockfd:CURL_SOCKET_BAD; what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd, nonblocking?0: |
︙ | ︙ | |||
952 953 954 955 956 957 958 | /* Scratch */ size_t len1 = 0, len2 = 0; unsigned char *buff1 = NULL; gnutls_pubkey_t key = NULL; /* Result is returned to caller */ | < > > | 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 | /* Scratch */ size_t len1 = 0, len2 = 0; unsigned char *buff1 = NULL; gnutls_pubkey_t key = NULL; /* Result is returned to caller */ CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH; /* if a path wasn't specified, don't pin */ if(NULL == pinnedpubkey) return CURLE_OK; if(NULL == cert) return result; do { int ret; /* Begin Gyrations to get the public key */ gnutls_pubkey_init(&key); ret = gnutls_pubkey_import_x509(key, cert, 0); if(ret < 0) break; /* failed */ |
︙ | ︙ | |||
1274 1275 1276 1277 1278 1279 1280 | if(!rc) { #ifdef ENABLE_IPV6 #define use_addr in6_addr #else #define use_addr in_addr #endif unsigned char addrbuf[sizeof(struct use_addr)]; | < | < < > > > | | | | 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 | if(!rc) { #ifdef ENABLE_IPV6 #define use_addr in6_addr #else #define use_addr in_addr #endif unsigned char addrbuf[sizeof(struct use_addr)]; size_t addrlen = 0; if(Curl_inet_pton(AF_INET, hostname, addrbuf) > 0) addrlen = 4; #ifdef ENABLE_IPV6 else if(Curl_inet_pton(AF_INET6, hostname, addrbuf) > 0) addrlen = 16; #endif if(addrlen) { unsigned char certaddr[sizeof(struct use_addr)]; int i; for(i = 0; ; i++) { size_t certaddrlen = sizeof(certaddr); int ret = gnutls_x509_crt_get_subject_alt_name(x509_cert, i, certaddr, &certaddrlen, NULL); /* If this happens, it wasn't an IP address. */ if(ret == GNUTLS_E_SHORT_MEMORY_BUFFER) continue; if(ret < 0) break; if(ret != GNUTLS_SAN_IPADDRESS) continue; |
︙ | ︙ | |||
1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 | if(proto.size == ALPN_HTTP_1_1_LENGTH && !memcmp(ALPN_HTTP_1_1, proto.data, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); } #endif conn->ssl[sockindex].state = ssl_connection_complete; conn->recv[sockindex] = gtls_recv; conn->send[sockindex] = gtls_send; if(SSL_SET_OPTION(primary.sessionid)) { /* we always unconditionally get the session id here, as even if we already got it from the cache and asked to use it in the connection, it might've been rejected and then a new one is in use now and we need to detect that. */ | > > > < < > > > | 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 | if(proto.size == ALPN_HTTP_1_1_LENGTH && !memcmp(ALPN_HTTP_1_1, proto.data, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); } #endif conn->ssl[sockindex].state = ssl_connection_complete; conn->recv[sockindex] = gtls_recv; conn->send[sockindex] = gtls_send; if(SSL_SET_OPTION(primary.sessionid)) { /* we always unconditionally get the session id here, as even if we already got it from the cache and asked to use it in the connection, it might've been rejected and then a new one is in use now and we need to detect that. */ void *connect_sessionid; size_t connect_idsize = 0; /* get the session ID data size */ gnutls_session_get_data(session, NULL, &connect_idsize); connect_sessionid = malloc(connect_idsize); /* get a buffer for it */ if(connect_sessionid) { bool incache; void *ssl_sessionid; /* extract session ID to the allocated buffer */ gnutls_session_get_data(session, connect_sessionid, &connect_idsize); Curl_ssl_sessionid_lock(conn); incache = !(Curl_ssl_getsessionid(conn, &ssl_sessionid, NULL, sockindex)); if(incache) { |
︙ | ︙ | |||
1627 1628 1629 1630 1631 1632 1633 | /* * This function is called to shut down the SSL layer but keep the * socket open (CCC - Clear Command Channel) */ static int Curl_gtls_shutdown(struct connectdata *conn, int sockindex) { struct ssl_connect_data *connssl = &conn->ssl[sockindex]; | < < < > > > > > > | 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 | /* * This function is called to shut down the SSL layer but keep the * socket open (CCC - Clear Command Channel) */ static int Curl_gtls_shutdown(struct connectdata *conn, int sockindex) { struct ssl_connect_data *connssl = &conn->ssl[sockindex]; int retval = 0; struct Curl_easy *data = conn->data; #ifndef CURL_DISABLE_FTP /* This has only been tested on the proftpd server, and the mod_tls code sends a close notify alert without waiting for a close notify alert in response. Thus we wait for a close notify alert from the server, but we do not send one. Let's hope other servers do the same... */ if(data->set.ftp_ccc == CURLFTPSSL_CCC_ACTIVE) gnutls_bye(BACKEND->session, GNUTLS_SHUT_WR); #endif if(BACKEND->session) { ssize_t result; bool done = FALSE; char buf[120]; while(!done) { int what = SOCKET_READABLE(conn->sock[sockindex], SSL_SHUTDOWN_TIMEOUT); if(what > 0) { /* Something to read, let's do it and hope that it is the close notify alert from the server */ result = gnutls_record_recv(BACKEND->session, |
︙ | ︙ | |||
1754 1755 1756 1757 1758 1759 1760 | static bool ssl_seeded = FALSE; /* Quickly add a bit of entropy */ gcry_fast_random_poll(); if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] || data->set.str[STRING_SSL_EGDSOCKET]) { | < < < < < < | 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 | static bool ssl_seeded = FALSE; /* Quickly add a bit of entropy */ gcry_fast_random_poll(); if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] || data->set.str[STRING_SSL_EGDSOCKET]) { ssl_seeded = TRUE; } return 0; } #endif /* data might be NULL! */ |
︙ | ︙ |
Changes to jni/curl/lib/vtls/mbedtls.c.
︙ | ︙ | |||
50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include "sendf.h" #include "inet_pton.h" #include "mbedtls.h" #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "polarssl_threadlock.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" | > | 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include "sendf.h" #include "inet_pton.h" #include "mbedtls.h" #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "multiif.h" #include "polarssl_threadlock.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" |
︙ | ︙ | |||
338 339 340 341 342 343 344 | /* Load the client private key */ mbedtls_pk_init(&BACKEND->pk); if(SSL_SET_OPTION(key)) { ret = mbedtls_pk_parse_keyfile(&BACKEND->pk, SSL_SET_OPTION(key), SSL_SET_OPTION(key_passwd)); | > | | 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 | /* Load the client private key */ mbedtls_pk_init(&BACKEND->pk); if(SSL_SET_OPTION(key)) { ret = mbedtls_pk_parse_keyfile(&BACKEND->pk, SSL_SET_OPTION(key), SSL_SET_OPTION(key_passwd)); if(ret == 0 && !(mbedtls_pk_can_do(&BACKEND->pk, MBEDTLS_PK_RSA) || mbedtls_pk_can_do(&BACKEND->pk, MBEDTLS_PK_ECKEY))) ret = MBEDTLS_ERR_PK_TYPE_MISMATCH; if(ret) { #ifdef MBEDTLS_ERROR_C mbedtls_strerror(ret, errorbuf, sizeof(errorbuf)); #endif /* MBEDTLS_ERROR_C */ failf(data, "Error reading private key %s - mbedTLS: (-0x%04X) %s", |
︙ | ︙ | |||
535 536 537 538 539 540 541 | struct Curl_easy *data = conn->data; struct ssl_connect_data* connssl = &conn->ssl[sockindex]; const mbedtls_x509_crt *peercert; const char * const pinnedpubkey = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] : data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]; | < < < < < < < > > | 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 | struct Curl_easy *data = conn->data; struct ssl_connect_data* connssl = &conn->ssl[sockindex]; const mbedtls_x509_crt *peercert; const char * const pinnedpubkey = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] : data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]; conn->recv[sockindex] = mbed_recv; conn->send[sockindex] = mbed_send; ret = mbedtls_ssl_handshake(&BACKEND->ssl); if(ret == MBEDTLS_ERR_SSL_WANT_READ) { connssl->connecting_state = ssl_connect_2_reading; return CURLE_OK; } else if(ret == MBEDTLS_ERR_SSL_WANT_WRITE) { connssl->connecting_state = ssl_connect_2_writing; return CURLE_OK; } else if(ret) { char errorbuf[128]; errorbuf[0] = 0; #ifdef MBEDTLS_ERROR_C mbedtls_strerror(ret, errorbuf, sizeof(errorbuf)); #endif /* MBEDTLS_ERROR_C */ failf(data, "ssl_handshake returned - mbedTLS: (-0x%04X) %s", -ret, errorbuf); return CURLE_SSL_CONNECT_ERROR; } |
︙ | ︙ | |||
660 661 662 663 664 665 666 | mbedtls_x509_crt_free(p); free(p); } #ifdef HAS_ALPN if(conn->bits.tls_enable_alpn) { | | > > | 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 | mbedtls_x509_crt_free(p); free(p); } #ifdef HAS_ALPN if(conn->bits.tls_enable_alpn) { const char *next_protocol = mbedtls_ssl_get_alpn_protocol(&BACKEND->ssl); if(next_protocol) { infof(data, "ALPN, server accepted to use %s\n", next_protocol); #ifdef USE_NGHTTP2 if(!strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID, NGHTTP2_PROTO_VERSION_ID_LEN) && !next_protocol[NGHTTP2_PROTO_VERSION_ID_LEN]) { conn->negnpn = CURL_HTTP_VERSION_2; } else #endif if(!strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH) && !next_protocol[ALPN_HTTP_1_1_LENGTH]) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else { infof(data, "ALPN, server did not agree to a protocol\n"); } Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); } #endif connssl->connecting_state = ssl_connect_3; infof(data, "SSL connected\n"); return CURLE_OK; |
︙ | ︙ |
Changes to jni/curl/lib/vtls/mesalink.c.
︙ | ︙ | |||
264 265 266 267 268 269 270 | conn->send[sockindex] = mesalink_send; ret = SSL_connect(BACKEND->handle); if(ret != SSL_SUCCESS) { char error_buffer[MESALINK_MAX_ERROR_SZ]; int detail = SSL_get_error(BACKEND->handle, ret); | | | 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 | conn->send[sockindex] = mesalink_send; ret = SSL_connect(BACKEND->handle); if(ret != SSL_SUCCESS) { char error_buffer[MESALINK_MAX_ERROR_SZ]; int detail = SSL_get_error(BACKEND->handle, ret); if(SSL_ERROR_WANT_CONNECT == detail || SSL_ERROR_WANT_READ == detail) { connssl->connecting_state = ssl_connect_2_reading; return CURLE_OK; } else { failf(data, "SSL_connect failed with error %d: %s", detail, |
︙ | ︙ |
Changes to jni/curl/lib/vtls/nss.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is |
︙ | ︙ | |||
34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include "formdata.h" /* for the boundary function */ #include "url.h" /* for the ssl config check function */ #include "connect.h" #include "strcase.h" #include "select.h" #include "vtls.h" #include "llist.h" #include "curl_printf.h" #include "nssg.h" #include <nspr.h> #include <nss.h> #include <ssl.h> #include <sslerr.h> #include <secerr.h> | > | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include "formdata.h" /* for the boundary function */ #include "url.h" /* for the ssl config check function */ #include "connect.h" #include "strcase.h" #include "select.h" #include "vtls.h" #include "llist.h" #include "multiif.h" #include "curl_printf.h" #include "nssg.h" #include <nspr.h> #include <nss.h> #include <ssl.h> #include <sslerr.h> #include <secerr.h> |
︙ | ︙ | |||
373 374 375 376 377 378 379 | { struct_stat st; if(filename == NULL) return 0; if(stat(filename, &st) == 0) | | | 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 | { struct_stat st; if(filename == NULL) return 0; if(stat(filename, &st) == 0) if(S_ISREG(st.st_mode) || S_ISFIFO(st.st_mode) || S_ISCHR(st.st_mode)) return 1; return 0; } /* Check if the given string is filename or nickname of a certificate. If the * given string is recognized as filename, return NULL. If the given string is |
︙ | ︙ | |||
839 840 841 842 843 844 845 846 847 848 849 850 851 852 | } else #endif if(buflen == ALPN_HTTP_1_1_LENGTH && !memcmp(ALPN_HTTP_1_1, buf, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } } #if NSSVERNUM >= 0x030f04 /* 3.15.4 */ static SECStatus CanFalseStartCallback(PRFileDesc *sock, void *client_data, PRBool *canFalseStart) { | > > | 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 | } else #endif if(buflen == ALPN_HTTP_1_1_LENGTH && !memcmp(ALPN_HTTP_1_1, buf, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); } } #if NSSVERNUM >= 0x030f04 /* 3.15.4 */ static SECStatus CanFalseStartCallback(PRFileDesc *sock, void *client_data, PRBool *canFalseStart) { |
︙ | ︙ | |||
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 | *pmod = NULL; } /* data might be NULL */ static CURLcode nss_init_core(struct Curl_easy *data, const char *cert_dir) { NSSInitParameters initparams; if(nss_context != NULL) return CURLE_OK; memset((void *) &initparams, '\0', sizeof(initparams)); initparams.length = sizeof(initparams); if(cert_dir) { char *certpath = aprintf("sql:%s", cert_dir); if(!certpath) return CURLE_OUT_OF_MEMORY; infof(data, "Initializing NSS with certpath: %s\n", certpath); nss_context = NSS_InitContext(certpath, "", "", "", &initparams, NSS_INIT_READONLY | NSS_INIT_PK11RELOAD); free(certpath); if(nss_context != NULL) return CURLE_OK; | > > > > | > > | | 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 | *pmod = NULL; } /* data might be NULL */ static CURLcode nss_init_core(struct Curl_easy *data, const char *cert_dir) { NSSInitParameters initparams; PRErrorCode err; const char *err_name; if(nss_context != NULL) return CURLE_OK; memset((void *) &initparams, '\0', sizeof(initparams)); initparams.length = sizeof(initparams); if(cert_dir) { char *certpath = aprintf("sql:%s", cert_dir); if(!certpath) return CURLE_OUT_OF_MEMORY; infof(data, "Initializing NSS with certpath: %s\n", certpath); nss_context = NSS_InitContext(certpath, "", "", "", &initparams, NSS_INIT_READONLY | NSS_INIT_PK11RELOAD); free(certpath); if(nss_context != NULL) return CURLE_OK; err = PR_GetError(); err_name = nss_error_to_name(err); infof(data, "Unable to initialize NSS database: %d (%s)\n", err, err_name); } infof(data, "Initializing NSS with certpath: none\n"); nss_context = NSS_InitContext("", "", "", "", &initparams, NSS_INIT_READONLY | NSS_INIT_NOCERTDB | NSS_INIT_NOMODDB | NSS_INIT_FORCEOPEN | NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD); if(nss_context != NULL) return CURLE_OK; err = PR_GetError(); err_name = nss_error_to_name(err); failf(data, "Unable to initialize NSS: %d (%s)", err, err_name); return CURLE_SSL_CACERT_BADFILE; } /* data might be NULL */ static CURLcode nss_init(struct Curl_easy *data) { char *cert_dir; |
︙ | ︙ | |||
1818 1819 1820 1821 1822 1823 1824 | }; BACKEND->data = data; /* list of all NSS objects we need to destroy in Curl_nss_close() */ Curl_llist_init(&BACKEND->obj_list, nss_destroy_object); | < | 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 | }; BACKEND->data = data; /* list of all NSS objects we need to destroy in Curl_nss_close() */ Curl_llist_init(&BACKEND->obj_list, nss_destroy_object); PR_Lock(nss_initlock); result = nss_init(conn->data); if(result) { PR_Unlock(nss_initlock); goto error; } |
︙ | ︙ |
Changes to jni/curl/lib/vtls/openssl.c.
︙ | ︙ | |||
44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include "openssl.h" #include "connect.h" #include "slist.h" #include "select.h" #include "vtls.h" #include "strcase.h" #include "hostcheck.h" #include "curl_printf.h" #include <openssl/ssl.h> #include <openssl/rand.h> #include <openssl/x509v3.h> #ifndef OPENSSL_NO_DSA #include <openssl/dsa.h> #endif | > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include "openssl.h" #include "connect.h" #include "slist.h" #include "select.h" #include "vtls.h" #include "strcase.h" #include "hostcheck.h" #include "multiif.h" #include "curl_printf.h" #include <openssl/ssl.h> #include <openssl/rand.h> #include <openssl/x509v3.h> #ifndef OPENSSL_NO_DSA #include <openssl/dsa.h> #endif |
︙ | ︙ | |||
1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 | to be at least 256 bytes long. */ unsigned long sslerror; ssize_t nread; int buffsize; int err; bool done = FALSE; /* This has only been tested on the proftpd server, and the mod_tls code sends a close notify alert without waiting for a close notify alert in response. Thus we wait for a close notify alert from the server, but we do not send one. Let's hope other servers do the same... */ if(data->set.ftp_ccc == CURLFTPSSL_CCC_ACTIVE) (void)SSL_shutdown(BACKEND->handle); if(BACKEND->handle) { buffsize = (int)sizeof(buf); while(!done) { int what = SOCKET_READABLE(conn->sock[sockindex], SSL_SHUTDOWN_TIMEOUT); if(what > 0) { | > > | 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 | to be at least 256 bytes long. */ unsigned long sslerror; ssize_t nread; int buffsize; int err; bool done = FALSE; #ifndef CURL_DISABLE_FTP /* This has only been tested on the proftpd server, and the mod_tls code sends a close notify alert without waiting for a close notify alert in response. Thus we wait for a close notify alert from the server, but we do not send one. Let's hope other servers do the same... */ if(data->set.ftp_ccc == CURLFTPSSL_CCC_ACTIVE) (void)SSL_shutdown(BACKEND->handle); #endif if(BACKEND->handle) { buffsize = (int)sizeof(buf); while(!done) { int what = SOCKET_READABLE(conn->sock[sockindex], SSL_SHUTDOWN_TIMEOUT); if(what > 0) { |
︙ | ︙ | |||
2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 | if(len == ALPN_HTTP_1_1_LENGTH && !memcmp(ALPN_HTTP_1_1, neg_protocol, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); } #endif return CURLE_OK; } } | > > > | 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 | if(len == ALPN_HTTP_1_1_LENGTH && !memcmp(ALPN_HTTP_1_1, neg_protocol, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); } #endif return CURLE_OK; } } |
︙ | ︙ | |||
3219 3220 3221 3222 3223 3224 3225 | #else print_pubkey_BN(dh, p, i); print_pubkey_BN(dh, g, i); print_pubkey_BN(dh, pub_key, i); #endif break; } | < < < < < | 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 | #else print_pubkey_BN(dh, p, i); print_pubkey_BN(dh, g, i); print_pubkey_BN(dh, pub_key, i); #endif break; } } EVP_PKEY_free(pubkey); } if(psig) { for(j = 0; j < psig->length; j++) BIO_printf(mem, "%02x:", psig->data[j]); |
︙ | ︙ | |||
3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 | nread = (ssize_t)SSL_read(BACKEND->handle, buf, buffsize); if(nread <= 0) { /* failed SSL_read */ int err = SSL_get_error(BACKEND->handle, (int)nread); switch(err) { case SSL_ERROR_NONE: /* this is not an error */ case SSL_ERROR_ZERO_RETURN: /* no more data */ break; case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: /* there's data pending, re-invoke SSL_read() */ *curlcode = CURLE_AGAIN; return -1; default: | > > > | 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 | nread = (ssize_t)SSL_read(BACKEND->handle, buf, buffsize); if(nread <= 0) { /* failed SSL_read */ int err = SSL_get_error(BACKEND->handle, (int)nread); switch(err) { case SSL_ERROR_NONE: /* this is not an error */ break; case SSL_ERROR_ZERO_RETURN: /* no more data */ /* close_notify alert */ connclose(conn, "TLS close_notify"); break; case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: /* there's data pending, re-invoke SSL_read() */ *curlcode = CURLE_AGAIN; return -1; default: |
︙ | ︙ | |||
3815 3816 3817 3818 3819 3820 3821 | sub[0] = (char) (minor_ver + 'a' - 1); } } else sub[0]='\0'; } | | > > > > | 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 | sub[0] = (char) (minor_ver + 'a' - 1); } } else sub[0]='\0'; } return msnprintf(buffer, size, "%s/%lx.%lx.%lx%s" #ifdef OPENSSL_FIPS "-fips" #endif , OSSL_PACKAGE, (ssleay_value>>28)&0xf, (ssleay_value>>20)&0xff, (ssleay_value>>12)&0xff, sub); #endif /* OPENSSL_IS_BORINGSSL */ } |
︙ | ︙ |
Changes to jni/curl/lib/vtls/polarssl.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at https://curl.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
︙ | ︙ | |||
51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include "polarssl.h" #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "strcase.h" #include "polarssl_threadlock.h" #include "curl_printf.h" #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" /* See https://tls.mbed.org/discussions/generic/ howto-determine-exact-buffer-len-for-mbedtls_pk_write_pubkey_der | > | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include "polarssl.h" #include "vtls.h" #include "parsedate.h" #include "connect.h" /* for the connect timeout */ #include "select.h" #include "strcase.h" #include "polarssl_threadlock.h" #include "multiif.h" #include "curl_printf.h" #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" /* See https://tls.mbed.org/discussions/generic/ howto-determine-exact-buffer-len-for-mbedtls_pk_write_pubkey_der |
︙ | ︙ | |||
589 590 591 592 593 594 595 596 597 598 599 600 601 602 | #endif if(!strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); } #endif connssl->connecting_state = ssl_connect_3; infof(data, "SSL connected\n"); return CURLE_OK; | > > | 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 | #endif if(!strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); } #endif connssl->connecting_state = ssl_connect_3; infof(data, "SSL connected\n"); return CURLE_OK; |
︙ | ︙ | |||
904 905 906 907 908 909 910 | Curl_polarssl_init, /* init */ Curl_polarssl_cleanup, /* cleanup */ Curl_polarssl_version, /* version */ Curl_none_check_cxn, /* check_cxn */ Curl_none_shutdown, /* shutdown */ Curl_polarssl_data_pending, /* data_pending */ | | < < | 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 | Curl_polarssl_init, /* init */ Curl_polarssl_cleanup, /* cleanup */ Curl_polarssl_version, /* version */ Curl_none_check_cxn, /* check_cxn */ Curl_none_shutdown, /* shutdown */ Curl_polarssl_data_pending, /* data_pending */ /* This might cause libcurl to use a weeker random! */ Curl_none_random, /* random */ Curl_none_cert_status_request, /* cert_status_request */ Curl_polarssl_connect, /* connect */ Curl_polarssl_connect_nonblocking, /* connect_nonblocking */ Curl_polarssl_get_internals, /* get_internals */ Curl_polarssl_close, /* close_one */ Curl_none_close_all, /* close_all */ |
︙ | ︙ |
Changes to jni/curl/lib/vtls/polarssl_threadlock.c.
︙ | ︙ | |||
19 20 21 22 23 24 25 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if (defined(USE_POLARSSL) || defined(USE_MBEDTLS)) && \ | | > | < | | | < | | < < > > < | < > < < < > > < | < > < > | | < < | < > < > | | < < | < > < | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if (defined(USE_POLARSSL) || defined(USE_MBEDTLS)) && \ ((defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H)) || \ (defined(USE_THREADS_WIN32) && defined(HAVE_PROCESS_H))) #if defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H) # include <pthread.h> # define POLARSSL_MUTEX_T pthread_mutex_t #elif defined(USE_THREADS_WIN32) && defined(HAVE_PROCESS_H) # include <process.h> # define POLARSSL_MUTEX_T HANDLE #endif #include "polarssl_threadlock.h" #include "curl_printf.h" #include "curl_memory.h" /* The last #include file should be: */ #include "memdebug.h" /* number of thread locks */ #define NUMT 2 /* This array will store all of the mutexes available to PolarSSL. */ static POLARSSL_MUTEX_T *mutex_buf = NULL; int Curl_polarsslthreadlock_thread_setup(void) { int i; mutex_buf = calloc(NUMT * sizeof(POLARSSL_MUTEX_T), 1); if(!mutex_buf) return 0; /* error, no number of threads defined */ for(i = 0; i < NUMT; i++) { int ret; #if defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H) ret = pthread_mutex_init(&mutex_buf[i], NULL); if(ret) return 0; /* pthread_mutex_init failed */ #elif defined(USE_THREADS_WIN32) && defined(HAVE_PROCESS_H) mutex_buf[i] = CreateMutex(0, FALSE, 0); if(mutex_buf[i] == 0) return 0; /* CreateMutex failed */ #endif /* USE_THREADS_POSIX && HAVE_PTHREAD_H */ } return 1; /* OK */ } int Curl_polarsslthreadlock_thread_cleanup(void) { int i; if(!mutex_buf) return 0; /* error, no threads locks defined */ for(i = 0; i < NUMT; i++) { int ret; #if defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H) ret = pthread_mutex_destroy(&mutex_buf[i]); if(ret) return 0; /* pthread_mutex_destroy failed */ #elif defined(USE_THREADS_WIN32) && defined(HAVE_PROCESS_H) ret = CloseHandle(mutex_buf[i]); if(!ret) return 0; /* CloseHandle failed */ #endif /* USE_THREADS_POSIX && HAVE_PTHREAD_H */ } free(mutex_buf); mutex_buf = NULL; return 1; /* OK */ } int Curl_polarsslthreadlock_lock_function(int n) { if(n < NUMT) { int ret; #if defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H) ret = pthread_mutex_lock(&mutex_buf[n]); if(ret) { DEBUGF(fprintf(stderr, "Error: polarsslthreadlock_lock_function failed\n")); return 0; /* pthread_mutex_lock failed */ } #elif defined(USE_THREADS_WIN32) && defined(HAVE_PROCESS_H) ret = (WaitForSingleObject(mutex_buf[n], INFINITE) == WAIT_FAILED?1:0); if(ret) { DEBUGF(fprintf(stderr, "Error: polarsslthreadlock_lock_function failed\n")); return 0; /* pthread_mutex_lock failed */ } #endif /* USE_THREADS_POSIX && HAVE_PTHREAD_H */ } return 1; /* OK */ } int Curl_polarsslthreadlock_unlock_function(int n) { if(n < NUMT) { int ret; #if defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H) ret = pthread_mutex_unlock(&mutex_buf[n]); if(ret) { DEBUGF(fprintf(stderr, "Error: polarsslthreadlock_unlock_function failed\n")); return 0; /* pthread_mutex_unlock failed */ } #elif defined(USE_THREADS_WIN32) && defined(HAVE_PROCESS_H) ret = ReleaseMutex(mutex_buf[n]); if(!ret) { DEBUGF(fprintf(stderr, "Error: polarsslthreadlock_unlock_function failed\n")); return 0; /* pthread_mutex_lock failed */ } #endif /* USE_THREADS_POSIX && HAVE_PTHREAD_H */ } return 1; /* OK */ } #endif /* USE_POLARSSL || USE_MBEDTLS */ |
Changes to jni/curl/lib/vtls/polarssl_threadlock.h.
︙ | ︙ | |||
22 23 24 25 26 27 28 | * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if (defined USE_POLARSSL) || (defined USE_MBEDTLS) | | < | < < < < | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #if (defined USE_POLARSSL) || (defined USE_MBEDTLS) #if (defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H)) || \ (defined(USE_THREADS_WIN32) && defined(HAVE_PROCESS_H)) int Curl_polarsslthreadlock_thread_setup(void); int Curl_polarsslthreadlock_thread_cleanup(void); int Curl_polarsslthreadlock_lock_function(int n); int Curl_polarsslthreadlock_unlock_function(int n); #else |
︙ | ︙ |
Changes to jni/curl/lib/vtls/schannel.c.
︙ | ︙ | |||
54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include "strerror.h" #include "select.h" /* for the socket readyness */ #include "inet_pton.h" /* for IP addr SNI check */ #include "curl_multibyte.h" #include "warnless.h" #include "x509asn1.h" #include "curl_printf.h" #include "system_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 | > | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include "strerror.h" #include "select.h" /* for the socket readyness */ #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 "system_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 |
︙ | ︙ | |||
518 519 520 521 522 523 524 | #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; | < | 519 520 521 522 523 524 525 526 527 528 529 530 531 532 | #ifdef HAS_MANUAL_VERIFY_API if(BACKEND->use_manual_cred_validation) schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION; else #endif schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION; if(data->set.ssl.no_revoke) { schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK | SCH_CRED_IGNORE_REVOCATION_OFFLINE; DEBUGF(infof(data, "schannel: disabled server certificate revocation " "checks\n")); } |
︙ | ︙ | |||
864 865 866 867 868 869 870 | schannel_connect_step2(struct connectdata *conn, int sockindex) { int i; ssize_t nread = -1, written = -1; struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; unsigned char *reallocated_buffer; | < < | 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 | schannel_connect_step2(struct connectdata *conn, int sockindex) { int i; ssize_t nread = -1, written = -1; struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; unsigned char *reallocated_buffer; SecBuffer outbuf[3]; SecBufferDesc outbuf_desc; SecBuffer inbuf[2]; SecBufferDesc inbuf_desc; SECURITY_STATUS sspi_status = SEC_E_OK; CURLcode result; bool doread; char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name : conn->host.name; const char *pubkey_ptr; doread = (connssl->connecting_state != ssl_connect_2_writing) ? TRUE : FALSE; |
︙ | ︙ | |||
913 914 915 916 917 918 919 | } } /* if we need a bigger buffer to read a full message, increase buffer now */ if(BACKEND->encdata_length - BACKEND->encdata_offset < CURL_SCHANNEL_BUFFER_FREE_SIZE) { /* increase internal encrypted data buffer */ | | > | 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 | } } /* if we need a bigger buffer to read a full message, increase buffer now */ if(BACKEND->encdata_length - BACKEND->encdata_offset < CURL_SCHANNEL_BUFFER_FREE_SIZE) { /* increase internal encrypted data buffer */ size_t reallocated_length = BACKEND->encdata_offset + CURL_SCHANNEL_BUFFER_FREE_SIZE; reallocated_buffer = realloc(BACKEND->encdata_buffer, reallocated_length); if(reallocated_buffer == NULL) { failf(data, "schannel: unable to re-allocate memory"); return CURLE_OUT_OF_MEMORY; } else { BACKEND->encdata_buffer = reallocated_buffer; BACKEND->encdata_length = reallocated_length; } } for(;;) { TCHAR *host_name; if(doread) { /* read encrypted handshake data from socket */ result = Curl_read_plain(conn->sock[sockindex], (char *) (BACKEND->encdata_buffer + BACKEND->encdata_offset), BACKEND->encdata_length - BACKEND->encdata_offset, |
︙ | ︙ | |||
1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 | !memcmp(ALPN_HTTP_1_1, alpn_result.ProtocolId, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); } #endif /* save the current session data for possible re-use */ if(SSL_SET_OPTION(primary.sessionid)) { bool incache; struct curl_schannel_cred *old_cred = NULL; | > > | 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 | !memcmp(ALPN_HTTP_1_1, alpn_result.ProtocolId, ALPN_HTTP_1_1_LENGTH)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } } else infof(data, "ALPN, server did not agree to a protocol\n"); Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); } #endif /* save the current session data for possible re-use */ if(SSL_SET_OPTION(primary.sessionid)) { bool incache; struct curl_schannel_cred *old_cred = NULL; |
︙ | ︙ | |||
2125 2126 2127 2128 2129 2130 2131 | CryptReleaseContext(hCryptProv, 0UL); return CURLE_OK; } static CURLcode pkp_pin_peer_pubkey(struct connectdata *conn, int sockindex, const char *pinnedpubkey) { | < < < < < > > > > > > | 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 | CryptReleaseContext(hCryptProv, 0UL); return CURLE_OK; } static CURLcode pkp_pin_peer_pubkey(struct connectdata *conn, int sockindex, const char *pinnedpubkey) { struct Curl_easy *data = conn->data; struct ssl_connect_data *connssl = &conn->ssl[sockindex]; CERT_CONTEXT *pCertContextServer = NULL; /* Result is returned to caller */ CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH; /* if a path wasn't specified, don't pin */ if(!pinnedpubkey) return CURLE_OK; do { SECURITY_STATUS sspi_status; const char *x509_der; DWORD x509_der_len; curl_X509certificate x509_parsed; curl_asn1Element *pubkey; sspi_status = s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &pCertContextServer); if((sspi_status != SEC_E_OK) || (pCertContextServer == NULL)) { char buffer[STRERROR_LEN]; |
︙ | ︙ |
Changes to jni/curl/lib/vtls/sectransp.c.
︙ | ︙ | |||
27 28 29 30 31 32 33 34 35 36 37 38 39 40 | */ #include "curl_setup.h" #include "urldata.h" /* for the Curl_easy definition */ #include "curl_base64.h" #include "strtok.h" #ifdef USE_SECTRANSP #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wtautological-pointer-compare" #endif /* __clang__ */ | > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | */ #include "curl_setup.h" #include "urldata.h" /* for the Curl_easy definition */ #include "curl_base64.h" #include "strtok.h" #include "multiif.h" #ifdef USE_SECTRANSP #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wtautological-pointer-compare" #endif /* __clang__ */ |
︙ | ︙ | |||
1898 1899 1900 1901 1902 1903 1904 | return CURLE_SSL_CIPHER; } #if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 /* We want to enable 1/n-1 when using a CBC cipher unless the user specifically doesn't want us doing that: */ if(SSLSetSessionOption != NULL) { | < | 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 | return CURLE_SSL_CIPHER; } #if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 /* We want to enable 1/n-1 when using a CBC cipher unless the user specifically doesn't want us doing that: */ if(SSLSetSessionOption != NULL) { SSLSetSessionOption(BACKEND->ssl_ctx, kSSLSessionOptionSendOneByteRecord, !data->set.ssl.enable_beast); SSLSetSessionOption(BACKEND->ssl_ctx, kSSLSessionOptionFalseStart, data->set.ssl.falsestart); /* false start support */ } #endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */ |
︙ | ︙ | |||
2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 | #endif if(chosenProtocol && !CFStringCompare(chosenProtocol, CFSTR(ALPN_HTTP_1_1), 0)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } else infof(data, "ALPN, server did not agree to a protocol\n"); /* chosenProtocol is a reference to the string within alpnArr and doesn't need to be freed separately */ if(alpnArr) CFRelease(alpnArr); } } | > > > | 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 | #endif if(chosenProtocol && !CFStringCompare(chosenProtocol, CFSTR(ALPN_HTTP_1_1), 0)) { conn->negnpn = CURL_HTTP_VERSION_1_1; } else infof(data, "ALPN, server did not agree to a protocol\n"); Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ? BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE); /* chosenProtocol is a reference to the string within alpnArr and doesn't need to be freed separately */ if(alpnArr) CFRelease(alpnArr); } } |
︙ | ︙ | |||
2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 | int what; int rc; char buf[120]; if(!BACKEND->ssl_ctx) return 0; if(data->set.ftp_ccc != CURLFTPSSL_CCC_ACTIVE) return 0; Curl_sectransp_close(conn, sockindex); rc = 0; what = SOCKET_READABLE(conn->sock[sockindex], SSL_SHUTDOWN_TIMEOUT); | > > | 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 | int what; int rc; char buf[120]; if(!BACKEND->ssl_ctx) return 0; #ifndef CURL_DISABLE_FTP if(data->set.ftp_ccc != CURLFTPSSL_CCC_ACTIVE) return 0; #endif Curl_sectransp_close(conn, sockindex); rc = 0; what = SOCKET_READABLE(conn->sock[sockindex], SSL_SHUTDOWN_TIMEOUT); |
︙ | ︙ |
Changes to jni/curl/lib/vtls/vtls.c.
︙ | ︙ | |||
494 495 496 497 498 499 500 | return CURLE_OK; } void Curl_ssl_close_all(struct Curl_easy *data) { | < > | 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 | return CURLE_OK; } void Curl_ssl_close_all(struct Curl_easy *data) { /* kill the session ID cache if not shared */ if(data->state.session && !SSLSESSION_SHARED(data)) { size_t i; for(i = 0; i < data->set.general_ssl.max_ssl_sessions; i++) /* the single-killer function handles empty table slots */ Curl_ssl_kill_session(&data->state.session[i]); /* free the cache data */ Curl_safefree(data->state.session); } |
︙ | ︙ | |||
640 641 642 643 644 645 646 | int connindex) { return Curl_ssl->data_pending(conn, connindex); } void Curl_ssl_free_certinfo(struct Curl_easy *data) { | < > | 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 | int connindex) { return Curl_ssl->data_pending(conn, connindex); } void Curl_ssl_free_certinfo(struct Curl_easy *data) { struct curl_certinfo *ci = &data->info.certs; if(ci->num_of_certs) { /* free all individual lists used */ int i; for(i = 0; i<ci->num_of_certs; i++) { curl_slist_free_all(ci->certinfo[i]); ci->certinfo[i] = NULL; } free(ci->certinfo); /* free the actual array too */ ci->certinfo = NULL; |
︙ | ︙ | |||
804 805 806 807 808 809 810 | CURLcode Curl_pin_peer_pubkey(struct Curl_easy *data, const char *pinnedpubkey, const unsigned char *pubkey, size_t pubkeylen) { FILE *fp; unsigned char *buf = NULL, *pem_ptr = NULL; | < < < < < < < > > > > > | 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 | CURLcode Curl_pin_peer_pubkey(struct Curl_easy *data, const char *pinnedpubkey, const unsigned char *pubkey, size_t pubkeylen) { FILE *fp; unsigned char *buf = NULL, *pem_ptr = NULL; CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH; /* if a path wasn't specified, don't pin */ if(!pinnedpubkey) return CURLE_OK; if(!pubkey || !pubkeylen) return result; /* only do this if pinnedpubkey starts with "sha256//", length 8 */ if(strncmp(pinnedpubkey, "sha256//", 8) == 0) { CURLcode encode; size_t encodedlen, pinkeylen; char *encoded, *pinkeycopy, *begin_pos, *end_pos; unsigned char *sha256sumdigest; if(!Curl_ssl->sha256sum) { /* without sha256 support, this cannot match */ return result; } /* compute sha256sum of public key */ sha256sumdigest = malloc(CURL_SHA256_DIGEST_LENGTH); |
︙ | ︙ | |||
891 892 893 894 895 896 897 898 899 900 901 902 903 904 | } fp = fopen(pinnedpubkey, "rb"); if(!fp) return result; do { /* Determine the file's size */ if(fseek(fp, 0, SEEK_END)) break; filesize = ftell(fp); if(fseek(fp, 0, SEEK_SET)) break; if(filesize < 0 || filesize > MAX_PINNED_PUBKEY_SIZE) | > > > > | 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 | } fp = fopen(pinnedpubkey, "rb"); if(!fp) return result; do { long filesize; size_t size, pem_len; CURLcode pem_read; /* Determine the file's size */ if(fseek(fp, 0, SEEK_END)) break; filesize = ftell(fp); if(fseek(fp, 0, SEEK_SET)) break; if(filesize < 0 || filesize > MAX_PINNED_PUBKEY_SIZE) |
︙ | ︙ | |||
1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 | static size_t total; const struct Curl_ssl *current; current = Curl_ssl == &Curl_ssl_multi ? available_backends[0] : Curl_ssl; if(current != selected) { char *p = backends; int i; selected = current; | > | | | | < > | 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 | static size_t total; const struct Curl_ssl *current; current = Curl_ssl == &Curl_ssl_multi ? available_backends[0] : Curl_ssl; if(current != selected) { char *p = backends; char *end = backends + sizeof(backends); int i; selected = current; for(i = 0; available_backends[i] && p < (end - 4); i++) { if(i) *(p++) = ' '; if(selected != available_backends[i]) *(p++) = '('; p += available_backends[i]->version(p, end - p - 2); if(selected != available_backends[i]) *(p++) = ')'; } *p = '\0'; total = p - backends; } if(size > total) memcpy(buffer, backends, total + 1); else { memcpy(buffer, backends, size - 1); buffer[size - 1] = '\0'; } return CURLMIN(size - 1, total); } static int multissl_init(const struct Curl_ssl *backend) { const char *env; char *env_tmp; if(Curl_ssl != &Curl_ssl_multi) return 1; if(backend) { Curl_ssl = backend; return 0; } if(!available_backends[0]) return 1; env = env_tmp = curl_getenv("CURL_SSL_BACKEND"); #ifdef CURL_DEFAULT_SSL_BACKEND if(!env) env = CURL_DEFAULT_SSL_BACKEND; #endif if(env) { int i; for(i = 0; available_backends[i]; i++) { if(strcasecompare(env, available_backends[i]->info.name)) { Curl_ssl = available_backends[i]; curl_free(env_tmp); return 0; } } |
︙ | ︙ |
Changes to jni/curl/lib/wildcard.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_FTP #include "wildcard.h" #include "llist.h" #include "fileinfo.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" |
︙ | ︙ | |||
63 64 65 66 67 68 69 | wc->path = NULL; free(wc->pattern); wc->pattern = NULL; wc->customptr = NULL; wc->state = CURLWC_INIT; } | > > | 65 66 67 68 69 70 71 72 73 | wc->path = NULL; free(wc->pattern); wc->pattern = NULL; wc->customptr = NULL; wc->state = CURLWC_INIT; } #endif /* if disabled */ |
Changes to jni/curl/lib/wildcard.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_WILDCARD_H #define HEADER_CURL_WILDCARD_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #ifndef HEADER_CURL_WILDCARD_H #define HEADER_CURL_WILDCARD_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2010 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "curl_setup.h" #ifndef CURL_DISABLE_FTP #include "llist.h" /* list of wildcard process states */ typedef enum { CURLWC_CLEAR = 0, CURLWC_INIT = 1, CURLWC_MATCHING, /* library is trying to get list of addresses for |
︙ | ︙ | |||
54 55 56 57 58 59 60 61 | }; CURLcode Curl_wildcard_init(struct WildcardData *wc); void Curl_wildcard_dtor(struct WildcardData *wc); struct Curl_easy; #endif /* HEADER_CURL_WILDCARD_H */ | > > > > > | 55 56 57 58 59 60 61 62 63 64 65 66 67 | }; CURLcode Curl_wildcard_init(struct WildcardData *wc); void Curl_wildcard_dtor(struct WildcardData *wc); struct Curl_easy; #else /* FTP is disabled */ #define Curl_wildcard_dtor(x) #endif #endif /* HEADER_CURL_WILDCARD_H */ |
Changes to jni/curl/lib/x509asn1.c.
︙ | ︙ | |||
262 263 264 265 266 267 268 | */ static ssize_t utf8asn1str(char **to, int type, const char *from, const char *end) { size_t inlength = end - from; int size = 1; size_t outlength; | < < | 262 263 264 265 266 267 268 269 270 271 272 273 274 275 | */ static ssize_t utf8asn1str(char **to, int type, const char *from, const char *end) { size_t inlength = end - from; int size = 1; size_t outlength; char *buf; *to = NULL; switch(type) { case CURL_ASN1_BMP_STRING: size = 2; break; |
︙ | ︙ | |||
301 302 303 304 305 306 307 308 309 310 311 312 313 314 | /* Just copy. */ outlength = inlength; if(outlength) memcpy(buf, from, outlength); } else { for(outlength = 0; from < end;) { wc = 0; switch(size) { case 4: wc = (wc << 8) | *(const unsigned char *) from++; wc = (wc << 8) | *(const unsigned char *) from++; /* FALLTHROUGH */ case 2: | > > > | 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | /* Just copy. */ outlength = inlength; if(outlength) memcpy(buf, from, outlength); } else { for(outlength = 0; from < end;) { int charsize; unsigned int wc; wc = 0; switch(size) { case 4: wc = (wc << 8) | *(const unsigned char *) from++; wc = (wc << 8) | *(const unsigned char *) from++; /* FALLTHROUGH */ case 2: |
︙ | ︙ | |||
873 874 875 876 877 878 879 | static void do_pubkey(struct Curl_easy *data, int certnum, const char *algo, curl_asn1Element *param, curl_asn1Element *pubkey) { curl_asn1Element elem; curl_asn1Element pk; const char *p; | < < < > > > | > > | 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 | static void do_pubkey(struct Curl_easy *data, int certnum, const char *algo, curl_asn1Element *param, curl_asn1Element *pubkey) { curl_asn1Element elem; curl_asn1Element pk; const char *p; /* Generate all information records for the public key. */ /* Get the public key (single element). */ if(!getASN1Element(&pk, pubkey->beg + 1, pubkey->end)) return; if(strcasecompare(algo, "rsaEncryption")) { const char *q; unsigned long len; p = getASN1Element(&elem, pk.beg, pk.end); if(!p) return; /* Compute key length. */ for(q = elem.beg; !*q && q < elem.end; q++) ; len = (unsigned long)((elem.end - q) * 8); if(len) { unsigned int i; for(i = *(unsigned char *) q; !(i & 0x80); i <<= 1) len--; } if(len > 32) elem.beg = q; /* Strip leading zero bytes. */ if(!certnum) infof(data, " RSA Public Key (%lu bits)\n", len); if(data->set.ssl.certinfo) { q = curl_maprintf("%lu", len); if(q) { |
︙ | ︙ | |||
1052 1053 1054 1055 1056 1057 1058 | if(data->set.ssl.certinfo) Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm", ccp); if(!certnum) infof(data, " Public Key Algorithm: %s\n", ccp); do_pubkey(data, certnum, ccp, ¶m, &cert.subjectPublicKey); free((char *) ccp); | < < | 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 | if(data->set.ssl.certinfo) Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm", ccp); if(!certnum) infof(data, " Public Key Algorithm: %s\n", ccp); do_pubkey(data, certnum, ccp, ¶m, &cert.subjectPublicKey); free((char *) ccp); /* Signature. */ ccp = ASN1tostr(&cert.signature, 0); if(!ccp) return CURLE_OUT_OF_MEMORY; if(data->set.ssl.certinfo) Curl_ssl_push_certinfo(data, certnum, "Signature", ccp); if(!certnum) |
︙ | ︙ |
Changes to jni/curl/m4/curl-functions.m4.
︙ | ︙ | |||
2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 | curl_cv_func_gethostname="yes" else AC_MSG_RESULT([no]) curl_cv_func_gethostname="no" fi ]) dnl CURL_CHECK_FUNC_GETIFADDRS dnl ------------------------------------------------- dnl Verify if getifaddrs 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_getifaddrs, then | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 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 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 | curl_cv_func_gethostname="yes" else AC_MSG_RESULT([no]) curl_cv_func_gethostname="no" fi ]) dnl CURL_CHECK_FUNC_GETPEERNAME dnl ------------------------------------------------- dnl Verify if getpeername 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_getpeername, then dnl HAVE_GETPEERNAME will be defined. AC_DEFUN([CURL_CHECK_FUNC_GETPEERNAME], [ 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_getpeername="unknown" tst_proto_getpeername="unknown" tst_compi_getpeername="unknown" tst_allow_getpeername="unknown" # AC_MSG_CHECKING([if getpeername can be linked]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket ]],[[ if(0 != getpeername(0, (void *)0, (void *)0)) return 1; ]]) ],[ AC_MSG_RESULT([yes]) tst_links_getpeername="yes" ],[ AC_MSG_RESULT([no]) tst_links_getpeername="no" ]) # if test "$tst_links_getpeername" = "yes"; then AC_MSG_CHECKING([if getpeername is prototyped]) AC_EGREP_CPP([getpeername],[ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket ],[ AC_MSG_RESULT([yes]) tst_proto_getpeername="yes" ],[ AC_MSG_RESULT([no]) tst_proto_getpeername="no" ]) fi # if test "$tst_proto_getpeername" = "yes"; then AC_MSG_CHECKING([if getpeername is compilable]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket ]],[[ if(0 != getpeername(0, (void *)0, (void *)0)) return 1; ]]) ],[ AC_MSG_RESULT([yes]) tst_compi_getpeername="yes" ],[ AC_MSG_RESULT([no]) tst_compi_getpeername="no" ]) fi # if test "$tst_compi_getpeername" = "yes"; then AC_MSG_CHECKING([if getpeername usage allowed]) if test "x$curl_disallow_getpeername" != "xyes"; then AC_MSG_RESULT([yes]) tst_allow_getpeername="yes" else AC_MSG_RESULT([no]) tst_allow_getpeername="no" fi fi # AC_MSG_CHECKING([if getpeername might be used]) if test "$tst_links_getpeername" = "yes" && test "$tst_proto_getpeername" = "yes" && test "$tst_compi_getpeername" = "yes" && test "$tst_allow_getpeername" = "yes"; then AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(HAVE_GETPEERNAME, 1, [Define to 1 if you have the getpeername function.]) curl_cv_func_getpeername="yes" else AC_MSG_RESULT([no]) curl_cv_func_getpeername="no" fi ]) dnl CURL_CHECK_FUNC_GETSOCKNAME dnl ------------------------------------------------- dnl Verify if getsockname 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_getsockname, then dnl HAVE_GETSOCKNAME will be defined. AC_DEFUN([CURL_CHECK_FUNC_GETSOCKNAME], [ 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_getsockname="unknown" tst_proto_getsockname="unknown" tst_compi_getsockname="unknown" tst_allow_getsockname="unknown" # AC_MSG_CHECKING([if getsockname can be linked]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket ]],[[ if(0 != getsockname(0, (void *)0, (void *)0)) return 1; ]]) ],[ AC_MSG_RESULT([yes]) tst_links_getsockname="yes" ],[ AC_MSG_RESULT([no]) tst_links_getsockname="no" ]) # if test "$tst_links_getsockname" = "yes"; then AC_MSG_CHECKING([if getsockname is prototyped]) AC_EGREP_CPP([getsockname],[ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket ],[ AC_MSG_RESULT([yes]) tst_proto_getsockname="yes" ],[ AC_MSG_RESULT([no]) tst_proto_getsockname="no" ]) fi # if test "$tst_proto_getsockname" = "yes"; then AC_MSG_CHECKING([if getsockname is compilable]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ $curl_includes_winsock2 $curl_includes_bsdsocket $curl_includes_sys_socket ]],[[ if(0 != getsockname(0, (void *)0, (void *)0)) return 1; ]]) ],[ AC_MSG_RESULT([yes]) tst_compi_getsockname="yes" ],[ AC_MSG_RESULT([no]) tst_compi_getsockname="no" ]) fi # if test "$tst_compi_getsockname" = "yes"; then AC_MSG_CHECKING([if getsockname usage allowed]) if test "x$curl_disallow_getsockname" != "xyes"; then AC_MSG_RESULT([yes]) tst_allow_getsockname="yes" else AC_MSG_RESULT([no]) tst_allow_getsockname="no" fi fi # AC_MSG_CHECKING([if getsockname might be used]) if test "$tst_links_getsockname" = "yes" && test "$tst_proto_getsockname" = "yes" && test "$tst_compi_getsockname" = "yes" && test "$tst_allow_getsockname" = "yes"; then AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(HAVE_GETSOCKNAME, 1, [Define to 1 if you have the getsockname function.]) curl_cv_func_getsockname="yes" else AC_MSG_RESULT([no]) curl_cv_func_getsockname="no" fi ]) dnl CURL_CHECK_FUNC_GETIFADDRS dnl ------------------------------------------------- dnl Verify if getifaddrs 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_getifaddrs, then |
︙ | ︙ |
Changes to jni/curl/packages/Makefile.in.
︙ | ︙ | |||
435 436 437 438 439 440 441 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ | | | | 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign packages/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ |
︙ | ︙ |
Changes to jni/curl/packages/OS400/ccsidcurl.c.
︙ | ︙ | |||
90 91 92 93 94 95 96 | *** If `cstr' is non-zero, conversion is set up to stop whenever a *** null character is encountered. *** See iconv_open() IBM description in "National Language Support API". **/ makeOS400IconvCode(fromcode, ccsidin); makeOS400IconvCode(tocode, ccsidout); | | | | | 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 | *** If `cstr' is non-zero, conversion is set up to stop whenever a *** null character is encountered. *** See iconv_open() IBM description in "National Language Support API". **/ makeOS400IconvCode(fromcode, ccsidin); makeOS400IconvCode(tocode, ccsidout); memset(tocode + 13, 0, sizeof(tocode) - 13); /* Dest. code id format. */ if(cstr) fromcode[18] = '1'; /* Set null-terminator flag. */ return iconv_open(tocode, fromcode); } static int convert(char *d, size_t dlen, int dccsid, const char *s, int slen, int sccsid) { int i; iconv_t cd; size_t lslen; /** |
︙ | ︙ | |||
157 158 159 160 161 162 163 | iconv_close(cd); return i; } static char * | | | | | 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | iconv_close(cd); return i; } static char * dynconvert(int dccsid, const char *s, int slen, int sccsid) { char *d; char *cp; size_t dlen; int l; static const char nullbyte = 0; /* Like convert, but the destination is allocated and returned. */ dlen = (size_t) (slen < 0? strlen(s): slen) + 1; |
︙ | ︙ | |||
209 210 211 212 213 214 215 | } return d; } static struct curl_slist * | | | | | 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | } return d; } static struct curl_slist * slist_convert(int dccsid, struct curl_slist *from, int sccsid) { struct curl_slist *to = (struct curl_slist *) NULL; for(; from; from = from->next) { struct curl_slist *nl; char *cp = dynconvert(dccsid, from->data, -1, sccsid); if(!cp) { curl_slist_free_all(to); return (struct curl_slist *) NULL; } nl = Curl_slist_append_nodup(to, cp); if(!nl) { |
︙ | ︙ | |||
239 240 241 242 243 244 245 | char * curl_version_ccsid(unsigned int ccsid) { int i; | | | | > | | | | 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 | char * curl_version_ccsid(unsigned int ccsid) { int i; char *aversion; char *eversion; aversion = curl_version(); if(!aversion) return aversion; i = strlen(aversion) + 1; i *= MAX_CONV_EXPANSION; eversion = Curl_thread_buffer(LK_CURL_VERSION, i); if(!eversion) return (char *) NULL; if(convert(eversion, i, ccsid, aversion, -1, ASCII_CCSID) < 0) return (char *) NULL; return eversion; } char * curl_easy_escape_ccsid(CURL *handle, const char *string, int length, unsigned int sccsid, unsigned int dccsid) { char *s; char *d; if(!string) { errno = EINVAL; return (char *) NULL; } s = dynconvert(ASCII_CCSID, string, length? length: -1, sccsid); |
︙ | ︙ | |||
291 292 293 294 295 296 297 | s = dynconvert(dccsid, d, -1, ASCII_CCSID); free(d); return s; } char * | | | | | | 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 | s = dynconvert(dccsid, d, -1, ASCII_CCSID); free(d); return s; } char * curl_easy_unescape_ccsid(CURL *handle, const char *string, int length, int *outlength, unsigned int sccsid, unsigned int dccsid) { char *s; char *d; if(!string) { errno = EINVAL; return (char *) NULL; } s = dynconvert(ASCII_CCSID, string, length? length: -1, sccsid); |
︙ | ︙ | |||
326 327 328 329 330 331 332 | *outlength = strlen(s); return s; } struct curl_slist * | | | | | | | | 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 | *outlength = strlen(s); return s; } struct curl_slist * curl_slist_append_ccsid(struct curl_slist *list, const char *data, unsigned int ccsid) { char *s; s = (char *) NULL; if(!data) return curl_slist_append(list, data); s = dynconvert(ASCII_CCSID, data, -1, ccsid); if(!s) return (struct curl_slist *) NULL; list = curl_slist_append(list, s); free(s); return list; } time_t curl_getdate_ccsid(const char *p, const time_t * unused, unsigned int ccsid) { char *s; time_t t; if(!p) return curl_getdate(p, unused); s = dynconvert(ASCII_CCSID, p, -1, ccsid); if(!s) return (time_t) -1; t = curl_getdate(s, unused); free(s); return t; } static int convert_version_info_string(const char * * stringp, char * * bufp, int *left, unsigned int ccsid) { /* Helper for curl_version_info_ccsid(): convert a string if defined. Result is stored in the `*left'-byte buffer at `*bufp'. `*bufp' and `*left' are updated accordingly. Return 0 if ok, else -1. */ |
︙ | ︙ | |||
399 400 401 402 403 404 405 | curl_version_info_data * curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid) { curl_version_info_data * p; | | | 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 | curl_version_info_data * curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid) { curl_version_info_data * p; char *cp; int n; int nproto; curl_version_info_data * id; /* The assertion below is possible, because although the second operand is an enum member, the first is a #define. In that case, the OS/400 C compiler seems to compare string values after substitution. */ |
︙ | ︙ | |||
464 465 466 467 468 469 470 | n *= MAX_CONV_EXPANSION; if(nproto) n += nproto * sizeof(const char *); cp = Curl_thread_buffer(LK_VERSION_INFO_DATA, n); id = (curl_version_info_data *) Curl_thread_buffer(LK_VERSION_INFO, | | | | | 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 | n *= MAX_CONV_EXPANSION; if(nproto) n += nproto * sizeof(const char *); cp = Curl_thread_buffer(LK_VERSION_INFO_DATA, n); id = (curl_version_info_data *) Curl_thread_buffer(LK_VERSION_INFO, sizeof(*id)); if(!id || !cp) return (curl_version_info_data *) NULL; /* Copy data and convert strings. */ memcpy((char *) id, (char *) p, sizeof(*p)); if(id->protocols) { int i = nproto * sizeof(id->protocols[0]); id->protocols = (const char * const *) cp; memcpy(cp, (char *) p->protocols, i); cp += i; n -= i; for(i = 0; id->protocols[i]; i++) |
︙ | ︙ | |||
517 518 519 520 521 522 523 | const char * curl_easy_strerror_ccsid(CURLcode error, unsigned int ccsid) { int i; | | | | > | | | > | | | > | 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 | const char * curl_easy_strerror_ccsid(CURLcode error, unsigned int ccsid) { int i; const char *s; char *buf; s = curl_easy_strerror(error); if(!s) return s; i = MAX_CONV_EXPANSION * (strlen(s) + 1); buf = Curl_thread_buffer(LK_EASY_STRERROR, i); if(!buf) return (const char *) NULL; if(convert(buf, i, ccsid, s, -1, ASCII_CCSID) < 0) return (const char *) NULL; return (const char *) buf; } const char * curl_share_strerror_ccsid(CURLSHcode error, unsigned int ccsid) { int i; const char *s; char *buf; s = curl_share_strerror(error); if(!s) return s; i = MAX_CONV_EXPANSION * (strlen(s) + 1); buf = Curl_thread_buffer(LK_SHARE_STRERROR, i); if(!buf) return (const char *) NULL; if(convert(buf, i, ccsid, s, -1, ASCII_CCSID) < 0) return (const char *) NULL; return (const char *) buf; } const char * curl_multi_strerror_ccsid(CURLMcode error, unsigned int ccsid) { int i; const char *s; char *buf; s = curl_multi_strerror(error); if(!s) return s; i = MAX_CONV_EXPANSION * (strlen(s) + 1); buf = Curl_thread_buffer(LK_MULTI_STRERROR, i); if(!buf) return (const char *) NULL; if(convert(buf, i, ccsid, s, -1, ASCII_CCSID) < 0) return (const char *) NULL; return (const char *) buf; } |
︙ | ︙ | |||
606 607 608 609 610 611 612 | } free((char *) info); } } CURLcode | | | | | | > | | | | 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 | } free((char *) info); } } CURLcode curl_easy_getinfo_ccsid(CURL *curl, CURLINFO info, ...) { va_list arg; void *paramp; CURLcode ret; unsigned int ccsid; char * * cpp; struct Curl_easy * data; struct curl_slist * * slp; struct curl_certinfo * cipf; struct curl_certinfo * cipt; /* WARNING: unlike curl_easy_getinfo(), the strings returned by this procedure have to be free'ed. */ data = (struct Curl_easy *) curl; va_start(arg, info); paramp = va_arg(arg, void *); ret = Curl_getinfo(data, info, paramp); if(ret == CURLE_OK) switch((int) info & CURLINFO_TYPEMASK) { case CURLINFO_STRING: ccsid = va_arg(arg, unsigned int); cpp = (char * *) paramp; if(*cpp) { *cpp = dynconvert(ccsid, *cpp, -1, ASCII_CCSID); if(!*cpp) ret = CURLE_OUT_OF_MEMORY; } break; case CURLINFO_SLIST: ccsid = va_arg(arg, unsigned int); switch(info) { case CURLINFO_CERTINFO: cipf = *(struct curl_certinfo * *) paramp; if(cipf) { cipt = (struct curl_certinfo *) malloc(sizeof(*cipt)); if(!cipt) ret = CURLE_OUT_OF_MEMORY; else { cipt->certinfo = (struct curl_slist **) calloc(cipf->num_of_certs + 1, sizeof(struct curl_slist *)); if(!cipt->certinfo) ret = CURLE_OUT_OF_MEMORY; else { int i; cipt->num_of_certs = cipf->num_of_certs; for(i = 0; i < cipf->num_of_certs; i++) |
︙ | ︙ | |||
688 689 690 691 692 693 694 | case CURLINFO_TLS_SESSION: case CURLINFO_TLS_SSL_PTR: case CURLINFO_SOCKET: break; default: | | | | > > | | 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 | case CURLINFO_TLS_SESSION: case CURLINFO_TLS_SSL_PTR: case CURLINFO_SOCKET: break; default: slp = (struct curl_slist **) paramp; if(*slp) { *slp = slist_convert(ccsid, *slp, ASCII_CCSID); if(!*slp) ret = CURLE_OUT_OF_MEMORY; } break; } } va_end(arg); return ret; } static int Curl_is_formadd_string(CURLformoption option) { switch(option) { case CURLFORM_FILENAME: case CURLFORM_CONTENTTYPE: case CURLFORM_BUFFER: case CURLFORM_FILE: case CURLFORM_FILECONTENT: case CURLFORM_COPYCONTENTS: |
︙ | ︙ | |||
741 742 743 744 745 746 747 | static int Curl_formadd_convert(struct curl_forms * forms, int formx, int lengthx, unsigned int ccsid) { int l; | | | | 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 | static int Curl_formadd_convert(struct curl_forms * forms, int formx, int lengthx, unsigned int ccsid) { int l; char *cp; char *cp2; if(formx < 0 || !forms[formx].value) return 0; if(lengthx >= 0) l = (int) forms[lengthx].value; else |
︙ | ︙ | |||
791 792 793 794 795 796 797 | va_list arg; CURLformoption option; CURLFORMcode result; struct curl_forms * forms; struct curl_forms * lforms; struct curl_forms * tforms; unsigned int lformlen; | | | 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 | va_list arg; CURLformoption option; CURLFORMcode result; struct curl_forms * forms; struct curl_forms * lforms; struct curl_forms * tforms; unsigned int lformlen; const char *value; unsigned int ccsid; int nargs; int namex; int namelengthx; int contentx; int lengthx; unsigned int contentccsid; |
︙ | ︙ | |||
819 820 821 822 823 824 825 | list is such a point, but CURLFORM_CONTENTTYPE is also used here as a natural separator between content data definitions; this seems to be in accordance with FormAdd() behavior. */ /* Allocate the local curl_forms array. */ lformlen = ALLOC_GRANULE; | | | 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 | list is such a point, but CURLFORM_CONTENTTYPE is also used here as a natural separator between content data definitions; this seems to be in accordance with FormAdd() behavior. */ /* Allocate the local curl_forms array. */ lformlen = ALLOC_GRANULE; lforms = malloc(lformlen * sizeof(*lforms)); if(!lforms) return CURL_FORMADD_MEMORY; /* Process the arguments, copying them into local array, latching conversion indexes and converting when needed. */ |
︙ | ︙ | |||
841 842 843 844 845 846 847 | va_start(arg, last_post); for(;;) { /* Make sure there is still room for an item in local array. */ if(nargs >= lformlen) { lformlen += ALLOC_GRANULE; | | | 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 | va_start(arg, last_post); for(;;) { /* Make sure there is still room for an item in local array. */ if(nargs >= lformlen) { lformlen += ALLOC_GRANULE; tforms = realloc(lforms, lformlen * sizeof(*lforms)); if(!tforms) { result = CURL_FORMADD_MEMORY; break; } lforms = tforms; |
︙ | ︙ | |||
871 872 873 874 875 876 877 | if(option == CURLFORM_END) break; } /* Dispatch by option. */ | | | 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 | if(option == CURLFORM_END) break; } /* Dispatch by option. */ switch(option) { case CURLFORM_END: forms = (struct curl_forms *) NULL; /* Leave array mode. */ continue; case CURLFORM_ARRAY: if(!forms) { |
︙ | ︙ | |||
1061 1062 1063 1064 1065 1066 1067 | curl_formget_callback append; void * arg; unsigned int ccsid; } cfcdata; static size_t | | | | 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 | curl_formget_callback append; void * arg; unsigned int ccsid; } cfcdata; static size_t Curl_formget_callback_ccsid(void *arg, const char *buf, size_t len) { cfcdata * p; char *b; int l; size_t ret; p = (cfcdata *) arg; if((long) len <= 0) return (*p->append)(p->arg, buf, len); |
︙ | ︙ | |||
1093 1094 1095 1096 1097 1098 1099 | ret = (*p->append)(p->arg, b, l); free(b); return ret == l? len: -1; } int | | | | | | | 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 | ret = (*p->append)(p->arg, b, l); free(b); return ret == l? len: -1; } int curl_formget_ccsid(struct curl_httppost *form, void *arg, curl_formget_callback append, unsigned int ccsid) { cfcdata lcfc; lcfc.append = append; lcfc.arg = arg; lcfc.ccsid = ccsid; return curl_formget(form, (void *) &lcfc, Curl_formget_callback_ccsid); } CURLcode curl_easy_setopt_ccsid(CURL *curl, CURLoption tag, ...) { CURLcode result; va_list arg; struct Curl_easy *data; char *s; char *cp; unsigned int ccsid; curl_off_t pfsize; static char testwarn = 1; /* Warns if this procedure has not been updated when the dupstring enum changes. We (try to) do it only once: there is no need to issue several times |
︙ | ︙ | |||
1137 1138 1139 1140 1141 1142 1143 | (int) STRING_LASTZEROTERMINATED != (int) STRING_ALTSVC + 1 || #else (int) STRING_LASTZEROTERMINATED != (int) STRING_DOH + 1 || #endif (int) STRING_LAST != (int) STRING_COPYPOSTFIELDS + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); | | | | 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 | (int) STRING_LASTZEROTERMINATED != (int) STRING_ALTSVC + 1 || #else (int) STRING_LASTZEROTERMINATED != (int) STRING_DOH + 1 || #endif (int) STRING_LAST != (int) STRING_COPYPOSTFIELDS + 1) curl_mfprintf(stderr, "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n"); } data = (struct Curl_easy *) curl; va_start(arg, tag); switch(tag) { case CURLOPT_ABSTRACT_UNIX_SOCKET: case CURLOPT_ALTSVC: case CURLOPT_CAINFO: case CURLOPT_CAPATH: case CURLOPT_COOKIE: case CURLOPT_COOKIEFILE: |
︙ | ︙ | |||
1231 1232 1233 1234 1235 1236 1237 | if(s) { s = dynconvert(ASCII_CCSID, s, -1, ccsid); if(!s) { result = CURLE_OUT_OF_MEMORY; break; | | | | | | | | > > | | > | 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 | if(s) { s = dynconvert(ASCII_CCSID, s, -1, ccsid); if(!s) { result = CURLE_OUT_OF_MEMORY; break; } } result = curl_easy_setopt(curl, tag, s); free(s); break; case CURLOPT_COPYPOSTFIELDS: /* Special case: byte count may have been given by CURLOPT_POSTFIELDSIZE prior to this call. In this case, convert the given byte count and replace the length according to the conversion result. */ s = va_arg(arg, char *); ccsid = va_arg(arg, unsigned int); pfsize = data->set.postfieldsize; if(!s || !pfsize || ccsid == NOCONV_CCSID || ccsid == ASCII_CCSID) { result = curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, s); break; } if(pfsize == -1) { /* Data is null-terminated. */ s = dynconvert(ASCII_CCSID, s, -1, ccsid); if(!s) { result = CURLE_OUT_OF_MEMORY; break; } } else { /* Data length specified. */ size_t len; if(pfsize < 0 || pfsize > SIZE_MAX) { result = CURLE_OUT_OF_MEMORY; break; } len = pfsize; pfsize = len * MAX_CONV_EXPANSION; if(pfsize > SIZE_MAX) pfsize = SIZE_MAX; cp = malloc(pfsize); if(!cp) { result = CURLE_OUT_OF_MEMORY; break; } pfsize = convert(cp, pfsize, ASCII_CCSID, s, len, ccsid); if(pfsize < 0) { free(cp); result = CURLE_OUT_OF_MEMORY; break; } data->set.postfieldsize = pfsize; /* Replace data size. */ s = cp; } result = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, s); data->set.str[STRING_COPYPOSTFIELDS] = s; /* Give to library. */ break; case CURLOPT_ERRORBUFFER: /* This is an output buffer. */ default: { long val = va_arg(arg, long); result = curl_easy_setopt(curl, tag, val); break; } } va_end(arg); return result; } char * |
︙ | ︙ |
Changes to jni/curl/packages/OS400/curl.inc.in.
︙ | ︙ | |||
1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 | d c 10284 d CURLOPT_HTTP09_ALLOWED... d c 00285 d CURLOPT_ALTSVC_CTRL... d c 00286 d CURLOPT_ALTSVC... d c 10287 * /if not defined(CURL_NO_OLDIES) d CURLOPT_FILE c 10001 d CURLOPT_INFILE... d c 10009 d CURLOPT_SSLKEYPASSWD... d c 10026 | > > | 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 | d c 10284 d CURLOPT_HTTP09_ALLOWED... d c 00285 d CURLOPT_ALTSVC_CTRL... d c 00286 d CURLOPT_ALTSVC... d c 10287 d CURLOPT_MAXAGE_CONN... d c 00288 * /if not defined(CURL_NO_OLDIES) d CURLOPT_FILE c 10001 d CURLOPT_INFILE... d c 10009 d CURLOPT_SSLKEYPASSWD... d c 10026 |
︙ | ︙ |
Changes to jni/curl/packages/OS400/os400sys.c.
︙ | ︙ | |||
385 386 387 388 389 390 391 | int Curl_gsk_environment_open(gsk_handle * my_env_handle) { struct Curl_gsk_descriptor * p; | < | 385 386 387 388 389 390 391 392 393 394 395 396 397 398 | int Curl_gsk_environment_open(gsk_handle * my_env_handle) { struct Curl_gsk_descriptor * p; int rc; if(!my_env_handle) return GSK_OS400_ERROR_INVALID_POINTER; p = (struct Curl_gsk_descriptor *) malloc(sizeof *p); if(!p) return GSK_INSUFFICIENT_STORAGE; |
︙ | ︙ |
Changes to jni/curl/packages/vms/Makefile.in.
︙ | ︙ | |||
381 382 383 384 385 386 387 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ | | | | 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/vms/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign packages/vms/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ |
︙ | ︙ |
Changes to jni/curl/packages/vms/curl_crtl_init.c.
︙ | ︙ | |||
179 180 181 182 183 184 185 | int status; char unix_shell_name[255]; int use_unix_settings = 1; status = sys_trnlnm("GNV$UNIX_SHELL", unix_shell_name, sizeof unix_shell_name -1); if (!$VMS_STATUS_SUCCESS(status)) { | < | 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | int status; char unix_shell_name[255]; int use_unix_settings = 1; status = sys_trnlnm("GNV$UNIX_SHELL", unix_shell_name, sizeof unix_shell_name -1); if (!$VMS_STATUS_SUCCESS(status)) { use_unix_settings = 0; } /* ACCESS should check ACLs or it is lying. */ set_feature_default("DECC$ACL_ACCESS_CHECK", ENABLE); /* We always want the new parse style */ |
︙ | ︙ |
Changes to jni/curl/packages/vms/generate_config_vms_h_curl.com.
︙ | ︙ | |||
324 325 326 327 328 329 330 | $! configure defaults to USE_*, a real configure on VMS chooses different. $write cvh "#ifdef USE_ARES" $write cvh "#undef USE_ARES" $write cvh "#endif" $write cvh "#ifdef USE_CYASSL" $write cvh "#undef USE_CYASSL" $write cvh "#endif" | < < < | 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | $! configure defaults to USE_*, a real configure on VMS chooses different. $write cvh "#ifdef USE_ARES" $write cvh "#undef USE_ARES" $write cvh "#endif" $write cvh "#ifdef USE_CYASSL" $write cvh "#undef USE_CYASSL" $write cvh "#endif" $write cvh "#ifdef USE_GNUTLS" $write cvh "#undef USE_GNUTLS" $write cvh "#endif" $write cvh "#ifdef USE_GNUTLS_NETTLE" $write cvh "#undef USE_GNUTLS_NETTLE" $write cvh "#endif" $write cvh "#ifdef USE_LIBRTMP" |
︙ | ︙ | |||
351 352 353 354 355 356 357 | $write cvh "#endif" $write cvh "#ifdef USE_OPENLDAP" $write cvh "#undef USE_OPENLDAP" $write cvh "#endif" $write cvh "#ifdef USE_POLARSSL" $write cvh "#undef USE_POLARSSL" $write cvh "#endif" | < < < < < < | 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 | $write cvh "#endif" $write cvh "#ifdef USE_OPENLDAP" $write cvh "#undef USE_OPENLDAP" $write cvh "#endif" $write cvh "#ifdef USE_POLARSSL" $write cvh "#undef USE_POLARSSL" $write cvh "#endif" $write cvh "#ifdef USE_THREADS_POSIX" $write cvh "#undef USE_THREADS_POSIX" $write cvh "#endif" $write cvh "#ifdef USE_TLS_SRP" $write cvh "#undef USE_TLS_SRP" $write cvh "#endif" $write cvh "#ifdef USE_UNIX_SOCKETS" $write cvh "#undef USE_UNIX_SOCKETS" $write cvh "#endif" $! $write cvh "#ifndef HAVE_OLD_GSSMIT" $write cvh "#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE" $write cvh "#endif" $! $! $! Note: |
︙ | ︙ |
Changes to jni/curl/projects/README.
︙ | ︙ | |||
147 148 149 150 151 152 153 | can be edited directly, the templates for the project files (which are stored in the git repositoty) will need to be modified rather than the generated project files that Visual Studio uses. Legacy Windows and SSL ====================== | | | | | | | | 147 148 149 150 151 152 153 154 155 156 157 158 159 | can be edited directly, the templates for the project files (which are stored in the git repositoty) will need to be modified rather than the generated project files that Visual Studio uses. Legacy Windows and SSL ====================== Some of the project configurations allow the use of Schannel, the native SSL library in Windows which forms part of Windows SSPI. However, Schannel in Windows <= XP is unable to connect to servers that no longer support the legacy handshakes and algorithms used by those versions. If you will be using curl in one of those earlier versions of Windows you should choose another SSL backend such as OpenSSL. |
Changes to jni/curl/projects/Windows/VC10/lib/libcurl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> |
︙ | ︙ | |||
2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> | > | 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_get_line.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> |
︙ | ︙ | |||
2393 2394 2395 2396 2397 2398 2399 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> | < | 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> <ClCompile Include="..\..\..\..\lib\pop3.c" /> <ClCompile Include="..\..\..\..\lib\progress.c" /> <ClCompile Include="..\..\..\..\lib\psl.c" /> <ClCompile Include="..\..\..\..\lib\rand.c" /> <ClCompile Include="..\..\..\..\lib\rtsp.c" /> <ClCompile Include="..\..\..\..\lib\security.c" /> <ClCompile Include="..\..\..\..\lib\select.c" /> |
︙ | ︙ | |||
2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> | > | 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_get_line.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> |
︙ | ︙ | |||
2532 2533 2534 2535 2536 2537 2538 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> | < | 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> <ClInclude Include="..\..\..\..\lib\pop3.h" /> <ClInclude Include="..\..\..\..\lib\progress.h" /> <ClInclude Include="..\..\..\..\lib\psl.h" /> <ClInclude Include="..\..\..\..\lib\rand.h" /> <ClInclude Include="..\..\..\..\lib\rtsp.h" /> <ClInclude Include="..\..\..\..\lib\select.h" /> <ClInclude Include="..\..\..\..\lib\sendf.h" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC10/src/curl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC11/lib/libcurl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ | |||
2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> | > | 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_get_line.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> |
︙ | ︙ | |||
2449 2450 2451 2452 2453 2454 2455 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> | < | 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> <ClCompile Include="..\..\..\..\lib\pop3.c" /> <ClCompile Include="..\..\..\..\lib\progress.c" /> <ClCompile Include="..\..\..\..\lib\psl.c" /> <ClCompile Include="..\..\..\..\lib\rand.c" /> <ClCompile Include="..\..\..\..\lib\rtsp.c" /> <ClCompile Include="..\..\..\..\lib\security.c" /> <ClCompile Include="..\..\..\..\lib\select.c" /> |
︙ | ︙ | |||
2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> | > | 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_get_line.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> |
︙ | ︙ | |||
2588 2589 2590 2591 2592 2593 2594 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> | < | 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> <ClInclude Include="..\..\..\..\lib\pop3.h" /> <ClInclude Include="..\..\..\..\lib\progress.h" /> <ClInclude Include="..\..\..\..\lib\psl.h" /> <ClInclude Include="..\..\..\..\lib\rand.h" /> <ClInclude Include="..\..\..\..\lib\rtsp.h" /> <ClInclude Include="..\..\..\..\lib\select.h" /> <ClInclude Include="..\..\..\..\lib\sendf.h" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC11/src/curl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC12/lib/libcurl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ | |||
2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> | > | 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_get_line.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> |
︙ | ︙ | |||
2449 2450 2451 2452 2453 2454 2455 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> | < | 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> <ClCompile Include="..\..\..\..\lib\pop3.c" /> <ClCompile Include="..\..\..\..\lib\progress.c" /> <ClCompile Include="..\..\..\..\lib\psl.c" /> <ClCompile Include="..\..\..\..\lib\rand.c" /> <ClCompile Include="..\..\..\..\lib\rtsp.c" /> <ClCompile Include="..\..\..\..\lib\security.c" /> <ClCompile Include="..\..\..\..\lib\select.c" /> |
︙ | ︙ | |||
2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> | > | 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_get_line.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> |
︙ | ︙ | |||
2588 2589 2590 2591 2592 2593 2594 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> | < | 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> <ClInclude Include="..\..\..\..\lib\pop3.h" /> <ClInclude Include="..\..\..\..\lib\progress.h" /> <ClInclude Include="..\..\..\..\lib\psl.h" /> <ClInclude Include="..\..\..\..\lib\rand.h" /> <ClInclude Include="..\..\..\..\lib\rtsp.h" /> <ClInclude Include="..\..\..\..\lib\select.h" /> <ClInclude Include="..\..\..\..\lib\sendf.h" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC12/src/curl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v120</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC14/lib/libcurl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ | |||
2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> | > | 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_get_line.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> |
︙ | ︙ | |||
2449 2450 2451 2452 2453 2454 2455 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> | < | 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> <ClCompile Include="..\..\..\..\lib\pop3.c" /> <ClCompile Include="..\..\..\..\lib\progress.c" /> <ClCompile Include="..\..\..\..\lib\psl.c" /> <ClCompile Include="..\..\..\..\lib\rand.c" /> <ClCompile Include="..\..\..\..\lib\rtsp.c" /> <ClCompile Include="..\..\..\..\lib\security.c" /> <ClCompile Include="..\..\..\..\lib\select.c" /> |
︙ | ︙ | |||
2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> | > | 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_get_line.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> |
︙ | ︙ | |||
2588 2589 2590 2591 2592 2593 2594 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> | < | 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> <ClInclude Include="..\..\..\..\lib\pop3.h" /> <ClInclude Include="..\..\..\..\lib\progress.h" /> <ClInclude Include="..\..\..\..\lib\psl.h" /> <ClInclude Include="..\..\..\..\lib\rand.h" /> <ClInclude Include="..\..\..\..\lib\rtsp.h" /> <ClInclude Include="..\..\..\..\lib\select.h" /> <ClInclude Include="..\..\..\..\lib\sendf.h" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC14/src/curl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v140</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC15/lib/libcurl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid> <RootNamespace>libcurl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ | |||
2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> | > | 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 | <ClCompile Include="..\..\..\..\lib\cookie.c" /> <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" /> <ClCompile Include="..\..\..\..\lib\curl_ctype.c" /> <ClCompile Include="..\..\..\..\lib\curl_des.c" /> <ClCompile Include="..\..\..\..\lib\curl_endian.c" /> <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" /> <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" /> <ClCompile Include="..\..\..\..\lib\curl_get_line.c" /> <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" /> <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" /> <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" /> <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" /> <ClCompile Include="..\..\..\..\lib\curl_path.c" /> <ClCompile Include="..\..\..\..\lib\curl_range.c" /> |
︙ | ︙ | |||
2421 2422 2423 2424 2425 2426 2427 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> | < | 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 | <ClCompile Include="..\..\..\..\lib\multi.c" /> <ClCompile Include="..\..\..\..\lib\netrc.c" /> <ClCompile Include="..\..\..\..\lib\non-ascii.c" /> <ClCompile Include="..\..\..\..\lib\nonblock.c" /> <ClCompile Include="..\..\..\..\lib\openldap.c" /> <ClCompile Include="..\..\..\..\lib\parsedate.c" /> <ClCompile Include="..\..\..\..\lib\pingpong.c" /> <ClCompile Include="..\..\..\..\lib\pop3.c" /> <ClCompile Include="..\..\..\..\lib\progress.c" /> <ClCompile Include="..\..\..\..\lib\psl.c" /> <ClCompile Include="..\..\..\..\lib\rand.c" /> <ClCompile Include="..\..\..\..\lib\rtsp.c" /> <ClCompile Include="..\..\..\..\lib\security.c" /> <ClCompile Include="..\..\..\..\lib\select.c" /> |
︙ | ︙ | |||
2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> | > | 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 | <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" /> <ClInclude Include="..\..\..\..\lib\curl_base64.h" /> <ClInclude Include="..\..\..\..\lib\curl_ctype.h" /> <ClInclude Include="..\..\..\..\lib\curl_des.h" /> <ClInclude Include="..\..\..\..\lib\curl_endian.h" /> <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" /> <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" /> <ClInclude Include="..\..\..\..\lib\curl_get_line.h" /> <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" /> <ClInclude Include="..\..\..\..\lib\curl_hmac.h" /> <ClInclude Include="..\..\..\..\lib\curl_ldap.h" /> <ClInclude Include="..\..\..\..\lib\curl_md4.h" /> <ClInclude Include="..\..\..\..\lib\curl_md5.h" /> <ClInclude Include="..\..\..\..\lib\curl_memory.h" /> <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" /> |
︙ | ︙ | |||
2560 2561 2562 2563 2564 2565 2566 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> | < | 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 | <ClInclude Include="..\..\..\..\lib\multihandle.h" /> <ClInclude Include="..\..\..\..\lib\multiif.h" /> <ClInclude Include="..\..\..\..\lib\netrc.h" /> <ClInclude Include="..\..\..\..\lib\non-ascii.h" /> <ClInclude Include="..\..\..\..\lib\nonblock.h" /> <ClInclude Include="..\..\..\..\lib\parsedate.h" /> <ClInclude Include="..\..\..\..\lib\pingpong.h" /> <ClInclude Include="..\..\..\..\lib\pop3.h" /> <ClInclude Include="..\..\..\..\lib\progress.h" /> <ClInclude Include="..\..\..\..\lib\psl.h" /> <ClInclude Include="..\..\..\..\lib\rand.h" /> <ClInclude Include="..\..\..\..\lib\rtsp.h" /> <ClInclude Include="..\..\..\..\lib\select.h" /> <ClInclude Include="..\..\..\..\lib\sendf.h" /> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC15/src/curl.vcxproj.
︙ | ︙ | |||
230 231 232 233 234 235 236 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid> <RootNamespace>curl</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> <PlatformToolset>v141</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
︙ | ︙ | |||
1216 1217 1218 1219 1220 1221 1222 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1247 1248 1249 1250 1251 1252 1253 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1279 1280 1281 1282 1283 1284 1285 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1311 1312 1313 1314 1315 1316 1317 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1342 1343 1344 1345 1346 1347 1348 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1373 1374 1375 1376 1377 1378 1379 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1405 1406 1407 1408 1409 1410 1411 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1437 1438 1439 1440 1441 1442 1443 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1468 1469 1470 1471 1472 1473 1474 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1500 1501 1502 1503 1504 1505 1506 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1531 1532 1533 1534 1535 1536 1537 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1562 1563 1564 1565 1566 1567 1568 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1594 1595 1596 1597 1598 1599 1600 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1626 1627 1628 1629 1630 1631 1632 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1834 1835 1836 1837 1838 1839 1840 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1866 1867 1868 1869 1870 1871 1872 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1956 1957 1958 1959 1960 1961 1962 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
1988 1989 1990 1991 1992 1993 1994 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2078 2079 2080 2081 2082 2083 2084 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2110 2111 2112 2113 2114 2115 2116 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2200 2201 2202 2203 2204 2205 2206 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2232 2233 2234 2235 2236 2237 2238 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2322 2323 2324 2325 2326 2327 2328 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2354 2355 2356 2357 2358 2359 2360 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2444 2445 2446 2447 2448 2449 2450 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2475 2476 2477 2478 2479 2480 2481 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2507 2508 2509 2510 2511 2512 2513 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ | |||
2539 2540 2541 2542 2543 2544 2545 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | < | 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 | <HeaderFileName> </HeaderFileName> </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC6/lib/libcurl.dsp.
︙ | ︙ | |||
785 786 787 788 789 790 791 792 793 794 795 796 797 798 | SOURCE=..\..\..\..\lib\curl_fnmatch.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gethostname.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gssapi.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_memrchr.c # End Source File | > > > > | 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 | SOURCE=..\..\..\..\lib\curl_fnmatch.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gethostname.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_get_line.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gssapi.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_memrchr.c # End Source File |
︙ | ︙ | |||
1020 1021 1022 1023 1024 1025 1026 | SOURCE=..\..\..\..\lib\parsedate.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\pingpong.c # End Source File | < < < < | 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 | SOURCE=..\..\..\..\lib\parsedate.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\pingpong.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\pop3.c # End Source File # Begin Source File SOURCE=..\..\..\..\lib\progress.c |
︙ | ︙ | |||
1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 | SOURCE=..\..\..\..\lib\curl_fnmatch.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gethostname.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gssapi.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_hmac.h # End Source File | > > > > | 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 | SOURCE=..\..\..\..\lib\curl_fnmatch.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gethostname.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_get_line.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_gssapi.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\curl_hmac.h # End Source File |
︙ | ︙ | |||
1572 1573 1574 1575 1576 1577 1578 | SOURCE=..\..\..\..\lib\parsedate.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\pingpong.h # End Source File | < < < < | 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 | SOURCE=..\..\..\..\lib\parsedate.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\pingpong.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\pop3.h # End Source File # Begin Source File SOURCE=..\..\..\..\lib\progress.h |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC7.1/lib/libcurl.vcproj.
︙ | ︙ | |||
1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c"> </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c"> </File> <File | > > > | 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c"> </File> <File RelativePath="..\..\..\..\lib\curl_get_line.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c"> </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c"> </File> <File |
︙ | ︙ | |||
1474 1475 1476 1477 1478 1479 1480 | <File RelativePath="..\..\..\..\lib\parsedate.c"> </File> <File RelativePath="..\..\..\..\lib\pingpong.c"> </File> <File | < < < | 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 | <File RelativePath="..\..\..\..\lib\parsedate.c"> </File> <File RelativePath="..\..\..\..\lib\pingpong.c"> </File> <File RelativePath="..\..\..\..\lib\pop3.c"> </File> <File RelativePath="..\..\..\..\lib\progress.c"> </File> <File RelativePath="..\..\..\..\lib\psl.c"> |
︙ | ︙ | |||
1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h"> </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h"> </File> <File | > > > | 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h"> </File> <File RelativePath="..\..\..\..\lib\curl_get_line.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h"> </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h"> </File> <File |
︙ | ︙ | |||
1814 1815 1816 1817 1818 1819 1820 | <File RelativePath="..\..\..\..\lib\parsedate.h"> </File> <File RelativePath="..\..\..\..\lib\pingpong.h"> </File> <File | < < < | 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 | <File RelativePath="..\..\..\..\lib\parsedate.h"> </File> <File RelativePath="..\..\..\..\lib\pingpong.h"> </File> <File RelativePath="..\..\..\..\lib\pop3.h"> </File> <File RelativePath="..\..\..\..\lib\progress.h"> </File> <File RelativePath="..\..\..\..\lib\psl.h"> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC7/lib/libcurl.vcproj.
︙ | ︙ | |||
1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c"> </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c"> </File> <File | > > > | 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c"> </File> <File RelativePath="..\..\..\..\lib\curl_get_line.c"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c"> </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c"> </File> <File |
︙ | ︙ | |||
1328 1329 1330 1331 1332 1333 1334 | <File RelativePath="..\..\..\..\lib\parsedate.c"> </File> <File RelativePath="..\..\..\..\lib\pingpong.c"> </File> <File | < < < | 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 | <File RelativePath="..\..\..\..\lib\parsedate.c"> </File> <File RelativePath="..\..\..\..\lib\pingpong.c"> </File> <File RelativePath="..\..\..\..\lib\pop3.c"> </File> <File RelativePath="..\..\..\..\lib\progress.c"> </File> <File RelativePath="..\..\..\..\lib\psl.c"> |
︙ | ︙ | |||
1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h"> </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h"> </File> <File | > > > | 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 | </File> <File RelativePath="..\..\..\..\lib\curl_fnmatch.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h"> </File> <File RelativePath="..\..\..\..\lib\curl_get_line.h"> </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h"> </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h"> </File> <File |
︙ | ︙ | |||
1668 1669 1670 1671 1672 1673 1674 | <File RelativePath="..\..\..\..\lib\parsedate.h"> </File> <File RelativePath="..\..\..\..\lib\pingpong.h"> </File> <File | < < < | 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 | <File RelativePath="..\..\..\..\lib\parsedate.h"> </File> <File RelativePath="..\..\..\..\lib\pingpong.h"> </File> <File RelativePath="..\..\..\..\lib\pop3.h"> </File> <File RelativePath="..\..\..\..\lib\progress.h"> </File> <File RelativePath="..\..\..\..\lib\psl.h"> |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC8/lib/libcurl.vcproj.
︙ | ︙ | |||
3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c" > </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c" | > > > > | 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c" > </File> <File RelativePath="..\..\..\..\lib\curl_get_line.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c" > </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c" |
︙ | ︙ | |||
3907 3908 3909 3910 3911 3912 3913 | <File RelativePath="..\..\..\..\lib\parsedate.c" > </File> <File RelativePath="..\..\..\..\lib\pingpong.c" > | < < < < | 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 | <File RelativePath="..\..\..\..\lib\parsedate.c" > </File> <File RelativePath="..\..\..\..\lib\pingpong.c" > </File> <File RelativePath="..\..\..\..\lib\pop3.c" > </File> <File RelativePath="..\..\..\..\lib\progress.c" |
︙ | ︙ | |||
4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h" > </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h" | > > > > | 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h" > </File> <File RelativePath="..\..\..\..\lib\curl_get_line.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h" > </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h" |
︙ | ︙ | |||
4359 4360 4361 4362 4363 4364 4365 | <File RelativePath="..\..\..\..\lib\parsedate.h" > </File> <File RelativePath="..\..\..\..\lib\pingpong.h" > | < < < < | 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 | <File RelativePath="..\..\..\..\lib\parsedate.h" > </File> <File RelativePath="..\..\..\..\lib\pingpong.h" > </File> <File RelativePath="..\..\..\..\lib\pop3.h" > </File> <File RelativePath="..\..\..\..\lib\progress.h" |
︙ | ︙ |
Changes to jni/curl/projects/Windows/VC9/lib/libcurl.vcproj.
︙ | ︙ | |||
3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c" > </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c" | > > > > | 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.c" > </File> <File RelativePath="..\..\..\..\lib\curl_get_line.c" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.c" > </File> <File RelativePath="..\..\..\..\lib\curl_memrchr.c" |
︙ | ︙ | |||
3848 3849 3850 3851 3852 3853 3854 | <File RelativePath="..\..\..\..\lib\parsedate.c" > </File> <File RelativePath="..\..\..\..\lib\pingpong.c" > | < < < < | 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 | <File RelativePath="..\..\..\..\lib\parsedate.c" > </File> <File RelativePath="..\..\..\..\lib\pingpong.c" > </File> <File RelativePath="..\..\..\..\lib\pop3.c" > </File> <File RelativePath="..\..\..\..\lib\progress.c" |
︙ | ︙ | |||
4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h" > </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h" | > > > > | 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 | <File RelativePath="..\..\..\..\lib\curl_fnmatch.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gethostname.h" > </File> <File RelativePath="..\..\..\..\lib\curl_get_line.h" > </File> <File RelativePath="..\..\..\..\lib\curl_gssapi.h" > </File> <File RelativePath="..\..\..\..\lib\curl_hmac.h" |
︙ | ︙ | |||
4300 4301 4302 4303 4304 4305 4306 | <File RelativePath="..\..\..\..\lib\parsedate.h" > </File> <File RelativePath="..\..\..\..\lib\pingpong.h" > | < < < < | 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 | <File RelativePath="..\..\..\..\lib\parsedate.h" > </File> <File RelativePath="..\..\..\..\lib\pingpong.h" > </File> <File RelativePath="..\..\..\..\lib\pop3.h" > </File> <File RelativePath="..\..\..\..\lib\progress.h" |
︙ | ︙ |
Changes to jni/curl/projects/build-openssl.bat.
1 2 3 4 5 6 7 8 | @echo off rem *************************************************************************** rem * _ _ ____ _ rem * Project ___| | | | _ \| | rem * / __| | | | |_) | | rem * | (__| |_| | _ <| |___ rem * \___|\___/|_| \_\_____| rem * | | | > | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | @echo off rem *************************************************************************** rem * _ _ ____ _ rem * Project ___| | | | _ \| | rem * / __| | | | |_) | | rem * | (__| |_| | _ <| |___ rem * \___|\___/|_| \_\_____| rem * rem * Copyright (C) 2012 - 2019, Steve Holme, <steve_holme@hotmail.com>. rem * rem * This software is licensed as described in the file COPYING, which rem * you should have received as part of this distribution. The terms rem * are also available at https://curl.haxx.se/docs/copyright.html. rem * rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell rem * copies of the Software, and permit persons to whom the Software is rem * furnished to do so, under the terms of the COPYING file. rem * rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY rem * KIND, either express or implied. rem * rem *************************************************************************** :begin rem Check we are running on a Windows NT derived OS if not "%OS%" == "Windows_NT" goto nodos rem Set our variables setlocal ENABLEDELAYEDEXPANSION set VC_VER= set BUILD_PLATFORM= set BUILD_CONFIG= rem Ensure we have the required arguments if /i "%~1" == "" goto syntax rem Calculate the program files directory if defined PROGRAMFILES ( set "PF=%PROGRAMFILES%" set OS_PLATFORM=x86 ) if defined PROGRAMFILES(x86) ( set "PF=%PROGRAMFILES(x86)%" set OS_PLATFORM=x64 ) :parseArgs if not "%~1" == "" ( if /i "%~1" == "vc6" ( set VC_VER=6.0 set VC_DESC=VC6 set "VC_PATH=Microsoft Visual Studio\VC98" ) else if /i "%~1" == "vc7" ( set VC_VER=7.0 set VC_DESC=VC7 set "VC_PATH=Microsoft Visual Studio .NET\Vc7" ) else if /i "%~1" == "vc7.1" ( set VC_VER=7.1 set VC_DESC=VC7.1 set "VC_PATH=Microsoft Visual Studio .NET 2003\Vc7" ) else if /i "%~1" == "vc8" ( set VC_VER=8.0 set VC_DESC=VC8 set "VC_PATH=Microsoft Visual Studio 8\VC" ) else if /i "%~1" == "vc9" ( set VC_VER=9.0 set VC_DESC=VC9 set "VC_PATH=Microsoft Visual Studio 9.0\VC" ) else if /i "%~1" == "vc10" ( set VC_VER=10.0 set VC_DESC=VC10 set "VC_PATH=Microsoft Visual Studio 10.0\VC" ) else if /i "%~1" == "vc11" ( set VC_VER=11.0 set VC_DESC=VC11 set "VC_PATH=Microsoft Visual Studio 11.0\VC" ) else if /i "%~1" == "vc12" ( set VC_VER=12.0 set VC_DESC=VC12 set "VC_PATH=Microsoft Visual Studio 12.0\VC" ) else if /i "%~1" == "vc14" ( set VC_VER=14.0 set VC_DESC=VC14 set "VC_PATH=Microsoft Visual Studio 14.0\VC" ) else if /i "%~1" == "vc14.1" ( set VC_VER=14.1 set VC_DESC=VC14.1 rem Determine the VC14.1 path based on the installed edition in descending rem order (Enterprise, then Professional and finally Community) if exist "%PF%\Microsoft Visual Studio\2017\Enterprise\VC" ( set "VC_PATH=Microsoft Visual Studio\2017\Enterprise\VC" ) else if exist "%PF%\Microsoft Visual Studio\2017\Professional\VC" ( set "VC_PATH=Microsoft Visual Studio\2017\Professional\VC" ) else ( set "VC_PATH=Microsoft Visual Studio\2017\Community\VC" ) ) else if /i "%~1%" == "x86" ( set BUILD_PLATFORM=x86 ) else if /i "%~1%" == "x64" ( set BUILD_PLATFORM=x64 ) else if /i "%~1%" == "debug" ( set BUILD_CONFIG=debug ) else if /i "%~1%" == "release" ( set BUILD_CONFIG=release ) else if /i "%~1" == "-?" ( goto syntax ) else if /i "%~1" == "-h" ( goto syntax ) else if /i "%~1" == "-help" ( goto syntax ) else if /i "%~1" == "-VSpath" ( if "%~2" == "" ( echo. echo Error. Please provide VS Path. goto error ) else ( set "ABS_VC_PATH=%~2\VC" shift ) ) else if /i "%~1" == "-perlpath" ( if "%~2" == "" ( echo. echo Error. Please provide Perl root Path. goto error ) else ( set "PERL_PATH=%~2" shift ) ) else ( if not defined START_DIR ( set START_DIR=%~1% ) else ( goto unknown ) ) shift & goto parseArgs ) :prerequisites rem Compiler is a required parameter if not defined VC_VER goto syntax rem Default the start directory if one isn't specified if not defined START_DIR set START_DIR=..\..\openssl |
︙ | ︙ | |||
171 172 173 174 175 176 177 | ) else ( set "PATH=%PERL_PATH%\Perl\bin;%PATH%" ) rem Check the start directory exists if not exist "%START_DIR%" goto noopenssl | < < | < | 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | ) else ( set "PATH=%PERL_PATH%\Perl\bin;%PATH%" ) rem Check the start directory exists if not exist "%START_DIR%" goto noopenssl :setup if "%BUILD_PLATFORM%" == "" ( if "%VC_VER%" == "6.0" ( set BUILD_PLATFORM=x86 ) else if "%VC_VER%" == "7.0" ( set BUILD_PLATFORM=x86 ) else if "%VC_VER%" == "7.1" ( set BUILD_PLATFORM=x86 |
︙ | ︙ | |||
201 202 203 204 205 206 207 208 209 210 211 212 213 214 | if "%VC_VER%" == "9.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64 if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64 if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64 if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64 ) :start echo. set SAVED_PATH=%CD% if "%VC_VER%" == "6.0" ( call "%ABS_VC_PATH%\bin\vcvars32" | > > > > > > | 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 | if "%VC_VER%" == "9.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64 if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64 if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64 if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64 ) if exist "%START_DIR%\ms\do_ms.bat" ( set LEGACY_BUILD=TRUE ) else ( set LEGACY_BUILD=FALSE ) :start echo. set SAVED_PATH=%CD% if "%VC_VER%" == "6.0" ( call "%ABS_VC_PATH%\bin\vcvars32" |
︙ | ︙ | |||
228 229 230 231 232 233 234 | goto %BUILD_PLATFORM% :x64 rem Calculate our output directory set OUTDIR=build\Win64\%VC_DESC% if not exist %OUTDIR% md %OUTDIR% | | < < | | | | < < | | < < < < | | < < < < > | > > | < < > | < < < | < < | | | | < < | | < < < < | | < < | < | > > | | < | < < < | < < | | | | < < | | < < < < | | < < < < > | > > | < < > | < < < | < < | | | | < < | | < < < < | | < < | < | > > | | < | < < < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | goto %BUILD_PLATFORM% :x64 rem Calculate our output directory set OUTDIR=build\Win64\%VC_DESC% if not exist %OUTDIR% md %OUTDIR% if not "%BUILD_CONFIG%" == "release" ( rem Configuring 64-bit Static Library Debug Build call :configure x64 debug static %LEGACY_BUILD% rem Perform the build call :build x64 static %LEGACY_BUILD% rem Perform the install call :install debug static %LEGACY_BUILD% rem Configuring 64-bit Shared Library Debug Build call :configure x64 debug shared %LEGACY_BUILD% rem Perform the build call :build x64 shared %LEGACY_BUILD% rem Perform the install call :install debug shared %LEGACY_BUILD% ) if not "%BUILD_CONFIG%" == "debug" ( rem Configuring 64-bit Static Library Release Build call :configure x64 release static %LEGACY_BUILD% rem Perform the build call :build x64 static %LEGACY_BUILD% rem Perform the install call :install release static %LEGACY_BUILD% rem Configuring 64-bit Shared Library Release Build call :configure x64 release shared %LEGACY_BUILD% rem Perform the build call :build x64 shared %LEGACY_BUILD% rem Perform the install call :install release shared %LEGACY_BUILD% ) goto success :x86 rem Calculate our output directory set OUTDIR=build\Win32\%VC_DESC% if not exist %OUTDIR% md %OUTDIR% if not "%BUILD_CONFIG%" == "release" ( rem Configuring 32-bit Static Library Debug Build call :configure x86 debug static %LEGACY_BUILD% rem Perform the build call :build x86 static %LEGACY_BUILD% rem Perform the install call :install debug static %LEGACY_BUILD% rem Configuring 32-bit Shared Library Debug Build call :configure x86 debug shared %LEGACY_BUILD% rem Perform the build call :build x86 shared %LEGACY_BUILD% rem Perform the install call :install debug shared %LEGACY_BUILD% ) if not "%BUILD_CONFIG%" == "debug" ( rem Configuring 32-bit Static Library Release Build call :configure x86 release static %LEGACY_BUILD% rem Perform the build call :build x86 static %LEGACY_BUILD% rem Perform the install call :install release static %LEGACY_BUILD% rem Configuring 32-bit Shared Library Release Build call :configure x86 release shared %LEGACY_BUILD% rem Perform the build call :build x86 shared %LEGACY_BUILD% rem Perform the install call :install release shared %LEGACY_BUILD% ) goto success rem Function to configure the build. rem rem %1 - Platform (x86 or x64) rem %2 - Configuration (release or debug) rem %3 - Build Type (static or shared) rem %4 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE) rem :configure setlocal if "%1" == "" exit /B 1 if "%2" == "" exit /B 1 if "%3" == "" exit /B 1 if "%4" == "" exit /B 1 if "%4" == "TRUE" ( rem Calculate the build directory set build_dir=%cd% rem Calculate the configure options if "%1" == "x86" ( if "%2" == "debug" ( set options=debug-VC-WIN32 ) else if "%2" == "release" ( set options=VC-WIN32 ) else ( exit /B 1 ) set options=!options! no-asm ) else if "%1" == "x64" ( if "%2" == "debug" ( set options=debug-VC-WIN64A ) else if "%2" == "release" ( set options=VC-WIN64A ) else ( exit /B 1 ) ) else ( exit /B 1 ) ) else if "%4" == "FALSE" ( rem Has configure already been ran? if exist makefile ( rem Clean up the previous build nmake clean rem Remove the old makefile del makefile 1>nul ) rem Calculate the build directory set build_dir=%cd%\build\tmp rem Calculate the configure options if "%1" == "x86" ( set options=VC-WIN32 ) else if "%1" == "x64" ( set options=VC-WIN64A ) else ( exit /B 1 ) if "%2" == "debug" ( set options=!options! --debug ) else if "%2" == "release" ( set options=!options! --release ) else ( exit /B 1 ) if "%3" == "static" ( set options=!options! no-shared ) else if not "%3" == "shared" ( exit /B 1 ) set options=!options! no-asm ) else ( exit /B 1 ) set options=%options% --prefix=%build_dir% rem Run the configure perl Configure %options% exit /B %ERRORLEVEL rem Main build function. rem rem %1 - Platform (x86 or x64) rem %2 - Build Type (static or shared) rem %3 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE) rem :build setlocal if "%1" == "" exit /B 1 if "%2" == "" exit /B 1 if "%3" == "" exit /B 1 if "%3" == "TRUE" ( if "%1" == "x86" ( call ms\do_ms.bat ) else if "%1" == "x64" ( call ms\do_win64a.bat ) else ( exit /B 1 ) if "%2" == "static" ( nmake -f ms\nt.mak ) else if "%2" == "shared" ( nmake -f ms\ntdll.mak ) else ( exit /B 1 ) ) else if "%2" == "FALSE" ( nmake ) else ( exit /B 1 ) exit /B 0 rem Main installation function. rem rem %1 - Configuration (release or debug) rem %2 - Build Type (static or shared) rem %3 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE) rem :install setlocal if "%1" == "" exit /B 1 if "%2" == "" exit /B 1 if "%3" == "" exit /B 1 rem Copy the generated files to our directory structure if "%3" == "TRUE" ( if "%1" == "debug" ( if "%2" == "static" ( rem Move the output directories if exist "%OUTDIR%\LIB Debug" ( copy /y out32.dbg\* "%OUTDIR%\LIB Debug" 1>nul rd out32.dbg /s /q ) else ( move out32.dbg "%OUTDIR%\LIB Debug" 1>nul ) rem Move the PDB files move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 1>nul rem Remove the intermediate directories rd tmp32.dbg /s /q ) else if "%2" == "shared" ( if exist "%OUTDIR%\DLL Debug" ( copy /y out32dll.dbg\* "%OUTDIR%\DLL Debug" 1>nul rd out32dll.dbg /s /q ) else ( move out32dll.dbg "%OUTDIR%\DLL Debug" 1>nul ) rem Move the PDB files move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 1>nul rem Remove the intermediate directories rd tmp32dll.dbg /s /q ) else ( exit /B 1 ) ) else if "%1" == "release" ( if "%2" == "static" ( rem Move the output directories if exist "%OUTDIR%\LIB Release" ( copy /y out32\* "%OUTDIR%\LIB Release" 1>nul rd out32 /s /q ) else ( move out32 "%OUTDIR%\LIB Release" 1>nul ) rem Move the PDB files move tmp32\lib.pdb "%OUTDIR%\LIB Release" 1>nul rem Remove the intermediate directories rd tmp32 /s /q ) else if "%2" == "shared" ( if exist "%OUTDIR%\DLL Release" ( copy /y out32dll\* "%OUTDIR%\DLL Release" 1>nul rd out32dll /s /q ) else ( move out32dll "%OUTDIR%\DLL Release" 1>nul ) rem Move the PDB files move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 1>nul rem Remove the intermediate directories rd tmp32dll /s /q ) else ( exit /B 1 ) ) ) else if "%3" == "FALSE" ( rem Calculate the build directory set build_dir=%cd%\build\tmp rem Perform the installation nmake install_sw rem Move the output directories if "%1" == "debug" ( if "%2" == "static" ( if not exist "%OUTDIR%\LIB Debug" ( mkdir "%OUTDIR%\LIB Debug" 1>nul ) move !build_dir!\lib\*.lib "%OUTDIR%\LIB Debug" 1>nul move !build_dir!\bin\*.exe "%OUTDIR%\LIB Debug" 1>nul ) else if "%2" == "shared" ( if not exist "%OUTDIR%\DLL Debug" ( mkdir "%OUTDIR%\DLL Debug" 1>nul ) move !build_dir!\lib\*.lib "%OUTDIR%\DLL Debug" 1>nul move !build_dir!\bin\*.dll "%OUTDIR%\DLL Debug" 1>nul move !build_dir!\bin\*.exe "%OUTDIR%\DLL Debug" 1>nul move !build_dir!\bin\*.pdb "%OUTDIR%\DLL Debug" 1>nul ) else ( exit /B 1 ) ) else if "%1" == "release" ( if "%2" == "static" ( if not exist "%OUTDIR%\LIB Release" ( mkdir "%OUTDIR%\LIB Release" 1>nul ) move !build_dir!\lib\*.lib "%OUTDIR%\LIB Release" 1>nul move !build_dir!\bin\*.exe "%OUTDIR%\LIB Release" 1>nul ) else if "%2" == "shared" ( if not exist "%OUTDIR%\DLL Release" ( mkdir "%OUTDIR%\DLL Release" 1>nul ) move !build_dir!\lib\*.lib "%OUTDIR%\DLL Release" 1>nul move !build_dir!\bin\*.dll "%OUTDIR%\DLL Release" 1>nul move !build_dir!\bin\*.exe "%OUTDIR%\DLL Release" 1>nul ) else ( exit /B 1 ) ) else ( exit /B 1 ) rem Remove the output directories rd !build_dir! /s /q ) else ( exit /B 1 ) exit /B 0 :syntax rem Display the help echo. echo Usage: build-openssl ^<compiler^> [platform] [configuration] [directory] [-VSpath] ["VSpath"] [-perlpath] ["perlpath"] echo. echo Compiler: |
︙ | ︙ | |||
449 450 451 452 453 454 455 | goto error :noopenssl echo. echo Error: Cannot locate OpenSSL source directory goto error | < < < < < < < < | 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 | goto error :noopenssl echo. echo Error: Cannot locate OpenSSL source directory goto error :error if "%OS%" == "Windows_NT" endlocal exit /B 1 :success cd /d %SAVED_PATH% endlocal exit /B 0 |
Changes to jni/curl/projects/checksrc.bat.
︙ | ︙ | |||
139 140 141 142 143 144 145 | for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i" ) ) if "%CHECK_EXAMPLES%" == "TRUE" ( rem Check the docs\examples directory if exist %SRC_DIR%\docs\examples ( | | | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i" ) ) if "%CHECK_EXAMPLES%" == "TRUE" ( rem Check the docs\examples directory if exist %SRC_DIR%\docs\examples ( for /f "delims=" %%i in ('dir "%SRC_DIR%\docs\examples\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\docs\examples" -ASNPRINTF "%%i" ) ) goto success :syntax rem Display the help |
︙ | ︙ |
Changes to jni/curl/scripts/Makefile.in.
︙ | ︙ | |||
369 370 371 372 373 374 375 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ | | | | 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign scripts/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ |
︙ | ︙ |
Changes to jni/curl/src/tool_cb_prg.c.
︙ | ︙ | |||
217 218 219 220 221 222 223 | struct ttysize ts; if(!ioctl(STDIN_FILENO, TIOCGSIZE, &ts)) cols = ts.ts_cols; #elif defined(TIOCGWINSZ) struct winsize ts; if(!ioctl(STDIN_FILENO, TIOCGWINSZ, &ts)) cols = ts.ws_col; | | | 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | struct ttysize ts; if(!ioctl(STDIN_FILENO, TIOCGSIZE, &ts)) cols = ts.ts_cols; #elif defined(TIOCGWINSZ) struct winsize ts; if(!ioctl(STDIN_FILENO, TIOCGWINSZ, &ts)) cols = ts.ws_col; #elif defined(WIN32) { HANDLE stderr_hnd = GetStdHandle(STD_ERROR_HANDLE); CONSOLE_SCREEN_BUFFER_INFO console_info; if((stderr_hnd != INVALID_HANDLE_VALUE) && GetConsoleScreenBufferInfo(stderr_hnd, &console_info)) { /* |
︙ | ︙ |
Changes to jni/curl/src/tool_cb_wrt.c.
︙ | ︙ | |||
77 78 79 80 81 82 83 84 85 86 87 88 89 90 | size_t rc; struct OutStruct *outs = userdata; struct OperationConfig *config = outs->config; size_t bytes = sz * nmemb; bool is_tty = config->global->isatty; #ifdef WIN32 CONSOLE_SCREEN_BUFFER_INFO console_info; #endif /* * Once that libcurl has called back tool_write_cb() the returned value * is checked against the amount that was intended to be written, if * it does not match then it fails with CURLE_WRITE_ERROR. So at this * point returning a value different from sz*nmemb indicates failure. | > | 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | size_t rc; struct OutStruct *outs = userdata; struct OperationConfig *config = outs->config; size_t bytes = sz * nmemb; bool is_tty = config->global->isatty; #ifdef WIN32 CONSOLE_SCREEN_BUFFER_INFO console_info; intptr_t fhnd; #endif /* * Once that libcurl has called back tool_write_cb() the returned value * is checked against the amount that was intended to be written, if * it does not match then it fails with CURLE_WRITE_ERROR. So at this * point returning a value different from sz*nmemb indicates failure. |
︙ | ︙ | |||
154 155 156 157 158 159 160 | "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; } } | | > | < < < < | 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 | "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)) && GetConsoleScreenBufferInfo((HANDLE)fhnd, &console_info)) { DWORD in_len = (DWORD)(sz * nmemb); wchar_t* wc_buf; DWORD wc_len; /* calculate buffer size for wide characters */ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, NULL, 0); wc_buf = (wchar_t*) malloc(wc_len * sizeof(wchar_t)); if(!wc_buf) return failure; /* calculate buffer size for multi-byte characters */ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, wc_buf, wc_len); if(!wc_len) { free(wc_buf); return failure; } if(!WriteConsoleW( (HANDLE) fhnd, wc_buf, wc_len, &wc_len, NULL)) { free(wc_buf); |
︙ | ︙ |
Changes to jni/curl/src/tool_cfgable.c.
︙ | ︙ | |||
30 31 32 33 34 35 36 | { memset(config, 0, sizeof(struct OperationConfig)); config->postfieldsize = -1; config->use_httpget = FALSE; config->create_dirs = FALSE; config->maxredirs = DEFAULT_MAXREDIRS; | | | | | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | { 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 = TRUE; } |
︙ | ︙ |
Changes to jni/curl/src/tool_doswin.c.
︙ | ︙ | |||
595 596 597 598 599 600 601 | --blen; if(!(flags & SANITIZE_ALLOW_TRUNCATE) || truncate_dryrun(base, blen)) return SANITIZE_ERR_INVALID_PATH; base[blen] = '\0'; } memmove(base + 1, base, blen + 1); base[0] = '_'; | < | 595 596 597 598 599 600 601 602 603 604 605 606 607 608 | --blen; if(!(flags & SANITIZE_ALLOW_TRUNCATE) || truncate_dryrun(base, blen)) return SANITIZE_ERR_INVALID_PATH; base[blen] = '\0'; } memmove(base + 1, base, blen + 1); base[0] = '_'; } } #endif *sanitized = strdup(fname); return (*sanitized ? SANITIZE_ERR_OK : SANITIZE_ERR_OUT_OF_MEMORY); } |
︙ | ︙ |
Changes to jni/curl/src/tool_formparse.c.
︙ | ︙ | |||
343 344 345 346 347 348 349 | * helper function to get a word from form param * after call get_parm_word, str either point to string end * or point to any of end chars. */ static char *get_param_word(char **str, char **end_pos, char endchar) { char *ptr = *str; | > | < < | 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | * helper function to get a word from form param * after call get_parm_word, str either point to string end * or point to any of end chars. */ static char *get_param_word(char **str, char **end_pos, char endchar) { char *ptr = *str; /* the first non-space char is here */ char *word_begin = ptr; char *ptr2; char *escape = NULL; if(*ptr == '"') { ++ptr; while(*ptr) { if(*ptr == '\\') { if(ptr[1] == '\\' || ptr[1] == '"') { /* remember the first escape position */ if(!escape) |
︙ | ︙ | |||
564 565 566 567 568 569 570 | hdrfile = get_param_word(&p, &endpos, endchar); /* If not quoted, strip trailing spaces. */ if(hdrfile == tp) while(endpos > hdrfile && ISSPACE(endpos[-1])) endpos--; sep = *p; *endpos = '\0'; | < | 563 564 565 566 567 568 569 570 571 572 573 574 575 576 | hdrfile = get_param_word(&p, &endpos, endchar); /* If not quoted, strip trailing spaces. */ if(hdrfile == tp) while(endpos > hdrfile && ISSPACE(endpos[-1])) endpos--; sep = *p; *endpos = '\0'; fp = fopen(hdrfile, FOPEN_READTEXT); if(!fp) warnf(config->global, "Cannot read from %s: %s\n", hdrfile, strerror(errno)); else { int i = read_field_headers(config, hdrfile, fp, &headers); |
︙ | ︙ |
Changes to jni/curl/src/tool_getparam.c.
︙ | ︙ | |||
511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 | *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; if(!strncmp(word, "no-", 3)) { /* disable this option but ignore the "no-" part when looking for it */ word += 3; toggle = FALSE; } for(j = 0; j < sizeof(aliases)/sizeof(aliases[0]); j++) { if(curl_strnequal(aliases[j].lname, word, fnam)) { longopt = TRUE; numhits++; if(curl_strequal(aliases[j].lname, word)) { | > > | 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 | *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; bool noflagged = FALSE; if(!strncmp(word, "no-", 3)) { /* disable this option but ignore the "no-" part when looking for it */ word += 3; toggle = FALSE; noflagged = TRUE; } for(j = 0; j < sizeof(aliases)/sizeof(aliases[0]); j++) { if(curl_strnequal(aliases[j].lname, word, fnam)) { longopt = TRUE; numhits++; if(curl_strequal(aliases[j].lname, word)) { |
︙ | ︙ | |||
539 540 541 542 543 544 545 546 547 548 549 550 551 552 | if(numhits > 1) { /* this is at least the second match! */ return PARAM_OPTION_AMBIGUOUS; } if(hit < 0) { return PARAM_OPTION_UNKNOWN; } } else { flag++; /* prefixed with one dash, pass it */ hit = -1; parse = flag; } | > > > | 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 | if(numhits > 1) { /* this is at least the second match! */ return PARAM_OPTION_AMBIGUOUS; } if(hit < 0) { return PARAM_OPTION_UNKNOWN; } if(noflagged && (aliases[hit].desc != ARG_BOOL)) /* --no- prefixed an option that isn't boolean! */ return PARAM_NO_NOT_BOOLEAN; } else { flag++; /* prefixed with one dash, pass it */ hit = -1; parse = flag; } |
︙ | ︙ |
Changes to jni/curl/src/tool_getparam.h.
1 2 3 4 5 6 7 8 9 | #ifndef HEADER_CURL_TOOL_GETPARAM_H #define HEADER_CURL_TOOL_GETPARAM_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef HEADER_CURL_TOOL_GETPARAM_H #define HEADER_CURL_TOOL_GETPARAM_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 | PARAM_NEGATIVE_NUMERIC, PARAM_LIBCURL_DOESNT_SUPPORT, PARAM_LIBCURL_UNSUPPORTED_PROTOCOL, PARAM_NO_MEM, PARAM_NEXT_OPERATION, PARAM_NO_PREFIX, PARAM_NUMBER_TOO_LARGE, PARAM_LAST } ParameterError; struct GlobalConfig; struct OperationConfig; ParameterError getparameter(const char *flag, char *nextarg, bool *usedarg, | > | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | PARAM_NEGATIVE_NUMERIC, PARAM_LIBCURL_DOESNT_SUPPORT, PARAM_LIBCURL_UNSUPPORTED_PROTOCOL, PARAM_NO_MEM, PARAM_NEXT_OPERATION, PARAM_NO_PREFIX, PARAM_NUMBER_TOO_LARGE, PARAM_NO_NOT_BOOLEAN, PARAM_LAST } ParameterError; struct GlobalConfig; struct OperationConfig; ParameterError getparameter(const char *flag, char *nextarg, bool *usedarg, |
︙ | ︙ |
Changes to jni/curl/src/tool_help.c.
︙ | ︙ | |||
16 17 18 19 20 21 22 23 24 25 26 27 28 29 | * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "tool_setup.h" #include "tool_panykey.h" #include "tool_help.h" #include "tool_libinfo.h" #include "tool_version.h" #include "memdebug.h" /* keep this as LAST include */ | > > > | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "tool_setup.h" #ifdef HAVE_STRCASECMP #include <strings.h> #endif #include "tool_panykey.h" #include "tool_help.h" #include "tool_libinfo.h" #include "tool_version.h" #include "memdebug.h" /* keep this as LAST include */ |
︙ | ︙ | |||
588 589 590 591 592 593 594 595 596 597 598 599 600 601 | #ifdef USE_METALINK featp[numfeat++] = (char *)"Metalink"; #endif qsort(&featp[0], numfeat, sizeof(char *), featcomp); for(i = 0; i< numfeat; i++) printf(" %s", featp[i]); puts(""); /* newline */ } } void tool_list_engines(CURL *curl) { struct curl_slist *engines = NULL; | > > > > | 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 | #ifdef USE_METALINK featp[numfeat++] = (char *)"Metalink"; #endif qsort(&featp[0], numfeat, sizeof(char *), featcomp); for(i = 0; i< numfeat; i++) printf(" %s", featp[i]); puts(""); /* newline */ } if(strcmp(CURL_VERSION, curlinfo->version)) { printf("WARNING: curl and libcurl versions do not match. " "Functionality may be affected.\n"); } } void tool_list_engines(CURL *curl) { struct curl_slist *engines = NULL; |
︙ | ︙ |
Changes to jni/curl/src/tool_helpers.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is |
︙ | ︙ | |||
62 63 64 65 66 67 68 69 70 71 72 73 74 75 | return "a specified protocol is unsupported by libcurl"; case PARAM_NO_MEM: return "out of memory"; case PARAM_NO_PREFIX: return "the given option can't be reversed with a --no- prefix"; case PARAM_NUMBER_TOO_LARGE: return "too large number"; default: return "unknown error"; } } int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store) { | > > | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | return "a specified protocol is unsupported by libcurl"; case PARAM_NO_MEM: return "out of memory"; case PARAM_NO_PREFIX: return "the given option can't be reversed with a --no- prefix"; case PARAM_NUMBER_TOO_LARGE: return "too large number"; case PARAM_NO_NOT_BOOLEAN: return "used '--no-' for option that isn't a boolean"; default: return "unknown error"; } } int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store) { |
︙ | ︙ |
Changes to jni/curl/src/tool_hugehelp.c.
︙ | ︙ | |||
179 180 181 182 183 184 185 | " This option enables the alt-svc parser in curl. If the file name\n" " points to an existing alt-svc cache file, that will be used. Af-\n" , stdout); fputs( " ter a completed transfer, the cache will be saved to the file\n" " name again if it has been modified.\n" "\n" | | | | 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | " This option enables the alt-svc parser in curl. If the file name\n" " points to an existing alt-svc cache file, that will be used. Af-\n" , stdout); fputs( " ter a completed transfer, the cache will be saved to the file\n" " name again if it has been modified.\n" "\n" " Specify a \"\" file name (zero length) to avoid loading/saving and\n" " make curl just handle the cache in memory.\n" "\n" " If this option is used several times, curl will load contents\n" " from all the files but the the last one will be used for saving.\n" "\n" " Added in 7.64.1.\n" "\n" " --anyauth\n" |
︙ | ︙ | |||
427 428 429 430 431 432 433 | , stdout); fputs( " without the initial double dashes and if so, the colon or equals\n" " characters can be used as separators. If the option is specified\n" " with one or two dashes, there can be no colon or equals charac-\n" " ter between the option and its parameter.\n" "\n" | | | | | | | | | 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 | , stdout); fputs( " without the initial double dashes and if so, the colon or equals\n" " characters can be used as separators. If the option is specified\n" " with one or two dashes, there can be no colon or equals charac-\n" " ter between the option and its parameter.\n" "\n" " If the parameter contains whitespace (or starts with : or =),\n" " the parameter must be enclosed within quotes. Within double\n" , stdout); fputs( " quotes, the following escape sequences are available: \\\\, \\\",\n" " \\t, \\n, \\r and \\v. A backslash preceding any other letter is ig-\n" " nored. If the first column of a config line is a '#' character,\n" " the rest of the line will be treated as a comment. Only write\n" " one option per physical line in the config file.\n" "\n" " Specify the filename to -K, --config as '-' to make curl read\n" " the file from stdin.\n" "\n" , stdout); fputs( " Note that to be able to specify a URL in the config file, you\n" |
︙ | ︙ | |||
4301 4302 4303 4304 4305 4306 4307 | */ #ifdef USE_MANUAL #include "tool_hugehelp.h" #include <zlib.h> #include "memdebug.h" /* keep this as LAST include */ static const unsigned char hugehelpgz[] = { /* This mumbo-jumbo is the huge help text compressed with gzip. | | | | | | | | | | | | | | | < < | | | | > > | | | | | | | < < < | | | < > > | | | | | | | | | | < | | | | < | > | > | | | | | | | | < | > > > | | | | | | | | | | | | | < | > | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | | < > | | | | > > | | | | | | | | | | | | | | | | | | | | > | < | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | < | | | | | | | | | | | | | | | | | | | | | | | | | > > | > > | < | > | | > | | < | | | | | | | | | | | | | | | | | | | | < < | | < > | < < | | | > > | | | > | < | | | | | | | > | < | | | | | | | | > > | | | < | > | | < | > | | | | | | | | | | | | | | | | | | | | | < | | | | | | < | > | | | | | > | | < | < | > | | | | | | | | | | | < | | > | | | | | | < < | | | > > | | | | | | | | | < | | > | | | | | | < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | | < | | | | | | | | | | | | | | | | | | | | | > > | | | | | | | | | | | | | | | | | | | | | | | > | | < < | > | | | | < | | | | | | | | | | | | | | | | | | | < | | | > | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | < | | > | | | | | | < | | < | | < | > > > | < | > | | | | < | < > | > | | | | | | < | > | | | | | | | | | | | | | | | | | | | | | | | > | | < < | > | > > | | < | | | | | < | | > | | | | < | | | > | | | | | < < | | | | | | | > | > | | | | | | | | < < | | | | | | | > > | | | | | | | | | | | | | | | | | | | | | | > | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | > | | | | | < | > | < < | | | | > > | | < | < | | | | | | | | | | | | | | | | | | > | > | | > > | | < | | < | | | | | | | | | | | | | | | | | < | | > | | | | | > | < | | | | > | < | < | < | < < > | | > | > > | | | | | | | | | | | | | | | | > | < | | | | | | | | | | | | | | | > | | > | < | | | | > | | < | < | < | | > > | | | | | | | | < | > | | | | | | | | | | | | | | | | | | | | < | > | | | < | | > | | | | | | | | | | | | | | | | | | > | < | | | | | | | | | | | | | > | | > | | > | < < < | | | | | > | < | | | < | | > | | | | | | | | | | | | | > > > > > > | | | | | | < | | > | | | | | | | | | | | | | | | | | | | < | < | < | | | < | | > | | | | | | | | | | | | | | | | | | | | | | | | < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | < | | | | | | | | | | | | | > | | | | | | | | | > | < | | | | | | | | | < | < | | > | > | | | | | | | | | | < | < | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | > | | | | | | | | | | | | | | | < | | | | | | | | > | | < | > | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | < | | > | | | | | | | | | | | < | | | | | | | | | | | | | | | | < | | > | | | | | | | | | | | | | | | | | | | | | | | > | < | | | | | | | | | < | | > | < | | > | | | | | > | > | < | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | > | | | | | | | | | | | | | | | | > | < | | | | | | | | | | < | | | > | | | | < | | < > | < | > | | | | | | | | | | | | | < | | > | | | | | | | | | | | | > | | > | | | | | | | | | | | | | | | | | | | | | | | | | | > | < > > | | | | | | | | | | | | | | | | | | | | | | > | | < | | | | | < | | | | | | | | > | | < | | | | | < | | > | | | | | | | | | | | < | | | > | | < | | | | | | | | | | | | | | | | | < | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | > | | < | | | | | > | < | > | < | | | | | | | | < | > | < | | | | | | | | | | > | | < | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | | > | | < | | | | | > | > | > | < | | | | | | | | | | | | | | | | | | | | | | | | | | | > | < < | < | | | | | | | | | | > | < | | < < | | < | > > | > | | | > > | | | < < > > | | < | | > | | | | | | | | | | | | > | < | | | < | < > | < | > > | | < | | | > | | | < | | | | | | | | | | | | | | | | | | | | | | | > | | | | | | | | | | > > | | < | | > | | < < | | | | | | > | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | | < | | | | | | | | | | | | > > | | | < < | | | < | > | | | | | | | | | | | | | | | | | | | | | | | | | | > | | < < < | | | > > | | | | | | | | | | | | | | | | | | | | | | > | < > | | > > > > | < | | | | | | | | | | | | | | | | | | | | | | | | | < | > | | < | < < | | | | | < | | | > | | | | | | | | | | | | | | | | | | | | | < | < | | | | > | > > | | | | < < | | | < | | < < | > | > | > | | | | | | | | | | | | | | | | | | < | | | > | | | | | | | | | | | < < | < > | | > | | < | > | < | | | | | | | | | | | | | | | | | | | < < < | > | < | > | | | | | | | | | | | | | | | | | | | | | | | | < | > | > > | | | | | > | < | | | | | | | | | | | | | | | | | | | | < | > | | > | | | | | | > | < | | | | | | | | | | | | | | | | | | | | | | | | < | > | | | | | | | | | | | < | > | | | | | | | | | | | | | | | | | | < | > | | | | | | | | | | | < | | > | | | | | | | | > > | | | | | | | | | | | | > | < | | | | > | < | | | < | > | | | | | | < < | > | < | > | > | | < < | | < < | < > | | > | > | | | | | | | | | | | | | | > | > > | | | | | < < | < | | | | | | | | | | | | | | | < | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | > > | | | | | | > | | | < | | | | | | | | | | | < | < < < < < < | | | < < | > > | > | | < | < | | | > | | | > > | > > > | > | < | | | > | < | | | | | | | | | | | | | | | | | | | | | | | < < < < | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | > | | | > | | < | | | | | | | | | > | | < | | | | | > | < | | | | | | | | | | | | | | | | | | | | | | | | | < | > | | | < | | > | | | | < | | | | | | | | | | | | | | | | | | | | | | | | < | | > | | > > | < | > | | | | | | | | | | | | > | | < | | | | | | | | | | | > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | < < | | | > | > | | | > | < | | | | < | | | | | | | | | | > | | < | | | | | | | | | | | | < | | > | | > > | | < | | < | | > | | | | | | | | | | | | | | | | | | | | < | > > > | < | | | | | | | | | | | > | | < | | | | | | | | | | | | | | | | | < | < | | < > > | | > | | | | | | | | | | | | | | | | | | | | | | | < | | > | | | > | | < | | | > | < | | | | | | | | | < | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | < | | | > | | | | | | | > | | | < | | | | | > | < | | | | | | | | | | | | | | < | | | > | | | | > | | | < | | | | | | | | | | | | | | > | < > | | | | | | > | < | | | | | | > | | < | | | | | | | | | | | | | | | | | | | | | | | < | > | | > | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | > | < < | | < | | > | | | | | | > | < | | | | | | | | | | | | | | | | | | | | | | | | | | | < | > | | | | | | | | | | | | | | > | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | < | | | | | | < < < < | > | | | | | | | | | | | | | | | | | | | | | > | | | < | | | | > > > | > | | | < | | | | | | | | | | | | | | | | | | | | | | | | > < | > | | | | | | | | > | < | | | | | | < | | > | | | | | | < < | | > | | | | | | | | | | | | | | | | | | | | > | | < | | | | | | | | > | > | | | < < | | | | | | | | < | | > | | | | | | | | | | | | | | | | > | < | | | | | | | | | | | | | | | | | < | > | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | | | | | | | | | | | | | < | > | | | | | | | | | | | | | | | | < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | < < | > | | > | | | | < | > | | | > > | > | | < < < | | > | | | | | | | | | | | | | | | | | | | | < < | > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | > | | | | | | | > | | > | | > | < > | < < | | | | | | | | > | > | < < | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | | | < | | > | | | | < > | < | | | | < | > | | | | | | | > | < | > | | | | | | < | | > | | | < | > > | < | > | < | | | | | < | > | | < | | | | | | | | | | | | < | | > | | | | | | | | | | | | | | | < | | | | | | | < < | | > > | | | | | | | | | | | | | | | | | > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | > | | | | | | | | | | | | | | | | > | > > | | | < < > | < | < | | | > | < | | | | | | | | | | | | | | | | | < | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 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 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 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 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 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 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 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 | */ #ifdef USE_MANUAL #include "tool_hugehelp.h" #include <zlib.h> #include "memdebug.h" /* keep this as LAST include */ static const unsigned char hugehelpgz[] = { /* This mumbo-jumbo is the huge help text compressed with gzip. Thanks to this operation, the size of this data shrank from 165936 to 46660 bytes. You can disable the use of compressed help texts by NOT passing -c to the mkhelp.pl tool. */ 0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd, 0x7b, 0x77, 0xdc, 0xc6, 0x95, 0x2f, 0xfa, 0xbf, 0x3f, 0x05, 0xc2, 0xac, 0x1c, 0x92, 0x93, 0xee, 0xe6, 0x43, 0x2f, 0x8b, 0x91, 0x33, 0x96, 0x25, 0xca, 0xe6, 0x98, 0x12, 0x79, 0xd8, 0x94, 0xed, 0x9c, 0xd8, 0x4b, 0x0b, 0xdd, 0x0d, 0x92, 0x88, 0xba, 0x81, 0x0e, 0x80, 0xe6, 0x23, 0x99, 0xdc, 0xcf, 0x7e, 0xeb, 0xb7, 0x1f, 0x55, 0x05, 0x54, 0xa1, 0x49, 0x3b, 0x56, 0x66, 0xee, 0x99, 0x9b, 0x59, 0x63, 0x49, 0x24, 0x50, 0xa8, 0xc7, 0xae, 0xfd, 0xde, 0xbf, 0x9d, 0x24, 0xf7, 0xfd, 0xef, 0x03, 0xfd, 0xff, 0x07, 0xf3, 0x3f, 0xf3, 0xe7, 0x67, 0x49, 0x72, 0x5a, 0x95, 0x7f, 0xc9, 0xa6, 0x4d, 0xfc, 0xd9, 0x0f, 0x1f, 0xfe, 0x33, 0xe1, 0xff, 0x33, 0xef, 0xfc, 0x68, 0xfe, 0xfc, 0x6c, 0xed, 0xd8, 0x3b, 0x89, 0x7b, 0xe1, 0x3f, 0x3f, 0x6c, 0x27, 0xf7, 0xbd, 0xf0, 0x9f, 0xc9, 0x16, 0xbd, 0xf0, 0x41, 0xbe, 0xf0, 0x02, 0x7f, 0xff, 0xf0, 0x61, 0xfd, 0x47, 0x7e, 0xc4, 0xac, 0xf0, 0x9f, 0x1d, 0xbc, 0xf7, 0xe3, 0x07, 0xfc, 0xd5, 0xfc, 0xe4, 0xb3, 0xcf, 0xde, 0xbd, 0x7c, 0x7b, 0xa8, 0xaf, 0x4e, 0x57, 0xd5, 0x3c, 0x19, 0x26, 0x4d, 0x95, 0x16, 0xf5, 0x45, 0x56, 0x25, 0x69, 0xf2, 0xfe, 0xec, 0xf8, 0xb3, 0xcf, 0xc6, 0x7f, 0x7a, 0x77, 0x72, 0x3a, 0x3e, 0x1a, 0xb7, 0x1e, 0xfb, 0x73, 0xb9, 0x6c, 0xf2, 0xb2, 0xa8, 0xcd, 0xf4, 0xcd, 0x43, 0xf5, 0x4f, 0x9f, 0x7d, 0xf6, 0xfa, 0x70, 0xfc, 0xea, 0xec, 0xe8, 0xf4, 0xfc, 0xe8, 0xe4, 0x5d, 0xeb, 0xc9, 0x24, 0xaf, 0x13, 0x33, 0x54, 0x53, 0x96, 0x73, 0xf3, 0x1f, 0x37, 0xfa, 0x2c, 0x6d, 0xd2, 0xe4, 0xa2, 0x2a, 0x17, 0x49, 0x59, 0xe1, 0x17, 0x69, 0x52, 0x67, 0xd5, 0x75, 0x56, 0x0d, 0x92, 0x55, 0x9d, 0x17, 0x97, 0x49, 0x59, 0x64, 0x49, 0x79, 0x91, 0x34, 0x57, 0x99, 0x0e, 0x57, 0xaf, 0x96, 0xcb, 0xb2, 0x6a, 0xb2, 0x59, 0xb2, 0xac, 0xca, 0xa6, 0x9c, 0x96, 0xf3, 0x3a, 0xd9, 0x7a, 0x7d, 0xf4, 0xea, 0x7c, 0x90, 0xbc, 0x39, 0x3a, 0x3e, 0x34, 0xff, 0x3d, 0x3f, 0xa5, 0xff, 0x8c, 0x07, 0xc9, 0xd7, 0x27, 0xa7, 0xdf, 0x1c, 0x9e, 0x0d, 0x92, 0x6f, 0xce, 0xf1, 0x33, 0xfc, 0xd7, 0xfc, 0x30, 0x39, 0x7a, 0xfb, 0xf2, 0x74, 0xa0, 0xc3, 0xe1, 0x1f, 0xf8, 0xe1, 0xf1, 0x6b, 0xf3, 0x43, 0xfe, 0x03, 0xff, 0x3c, 0x3d, 0x39, 0x7d, 0x24, 0x7f, 0xe0, 0x9f, 0x67, 0xe7, 0x6f, 0xcd, 0x6f, 0xcf, 0xce, 0xc7, 0xe6, 0xbf, 0xe3, 0x57, 0xf8, 0x0f, 0x7d, 0x65, 0xfc, 0xf6, 0x2b, 0xfa, 0xcf, 0xd8, 0x0e, 0x37, 0x7e, 0xcb, 0x3f, 0xa7, 0x2f, 0x9d, 0x1f, 0x1e, 0xbf, 0x3b, 0x3c, 0x4f, 0xd2, 0x62, 0x96, 0x9c, 0x9b, 0xe7, 0xb7, 0x47, 0xc9, 0xf9, 0x55, 0x96, 0x4c, 0xcb, 0xc5, 0x02, 0x3f, 0x32, 0x3b, 0x32, 0xcb, 0xea, 0xfc, 0xb2, 0x30, 0x4b, 0x31, 0x2b, 0xbf, 0x29, 0xab, 0x8f, 0x49, 0x72, 0x93, 0x37, 0x57, 0xe5, 0xaa, 0xd1, 0xe1, 0x56, 0x66, 0x37, 0x92, 0xbc, 0x68, 0xb2, 0x2a, 0x9d, 0x62, 0xa7, 0x47, 0x9f, 0xb5, 0x76, 0xb5, 0xbc, 0x30, 0x7b, 0x58, 0x9b, 0x4d, 0x9b, 0xac, 0xea, 0x79, 0x99, 0xce, 0xb0, 0x55, 0xe6, 0x95, 0x8b, 0x95, 0xd9, 0xe4, 0x2a, 0x9f, 0x7e, 0xac, 0x93, 0x79, 0xfe, 0x31, 0xc3, 0x46, 0xdd, 0xde, 0xe9, 0xc6, 0x0d, 0x78, 0xd0, 0x74, 0x65, 0xf6, 0xb4, 0x18, 0xea, 0x70, 0x4d, 0x3e, 0x4d, 0xf1, 0x01, 0xda, 0xb9, 0x64, 0xb5, 0xc4, 0x68, 0xbc, 0x63, 0xc9, 0xb2, 0xac, 0xcd, 0x4b, 0xe3, 0xf1, 0xb1, 0x99, 0x79, 0x51, 0x64, 0x34, 0x8f, 0x7a, 0x60, 0xfe, 0x51, 0x7e, 0xcc, 0x33, 0xf3, 0x97, 0x8b, 0x7c, 0x9e, 0x25, 0x7c, 0xa2, 0x76, 0x38, 0x1c, 0x6d, 0x52, 0x65, 0xf5, 0x6a, 0x91, 0x99, 0xdd, 0x7b, 0x9b, 0x35, 0xe9, 0x3c, 0x2f, 0x3e, 0x9a, 0xbf, 0x62, 0xe1, 0x8b, 0xb2, 0xca, 0x46, 0xc9, 0xcb, 0x3a, 0xb9, 0x2b, 0x57, 0x66, 0xc1, 0xf3, 0xb9, 0x39, 0xf3, 0x2c, 0x99, 0x64, 0xf3, 0xf2, 0x66, 0x80, 0x93, 0x4e, 0x8a, 0xd5, 0x62, 0x62, 0x06, 0x28, 0x2f, 0xdc, 0x70, 0x69, 0xb3, 0x32, 0xc3, 0xf1, 0xd3, 0x8b, 0xd4, 0xac, 0xc9, 0xbc, 0x5b, 0x25, 0x57, 0x99, 0x59, 0x73, 0xbd, 0xcc, 0x8b, 0xdf, 0xb4, 0xf7, 0xc5, 0x6c, 0xed, 0xb2, 0xbc, 0xc9, 0x2a, 0xb3, 0xb3, 0x93, 0xbb, 0xc4, 0x6c, 0xc2, 0x84, 0x89, 0xf0, 0xc2, 0x10, 0x59, 0x92, 0x9a, 0x21, 0x2c, 0x01, 0x0e, 0xab, 0x6c, 0x9e, 0x82, 0x98, 0xec, 0x37, 0x46, 0xe6, 0x10, 0x33, 0x4b, 0x6d, 0xf2, 0xea, 0xd6, 0xa3, 0x6d, 0x7a, 0x79, 0x66, 0x56, 0x92, 0xcf, 0x6b, 0x73, 0x0c, 0xb8, 0x14, 0xf2, 0x0c, 0x0e, 0x15, 0xf4, 0x6f, 0x68, 0xf3, 0xae, 0x68, 0xd2, 0x5b, 0xfa, 0xbc, 0xd0, 0xe6, 0x70, 0x96, 0x2d, 0xb3, 0x62, 0x96, 0x15, 0xcd, 0x28, 0xf9, 0x53, 0xb9, 0xda, 0x34, 0xdf, 0xbe, 0xc8, 0xcd, 0x1e, 0xa4, 0x32, 0x94, 0xf9, 0xb2, 0x21, 0x82, 0x69, 0x95, 0x2f, 0xbd, 0xa3, 0x28, 0x0b, 0x73, 0xe6, 0xc9, 0xd9, 0x9b, 0x57, 0xc9, 0xa3, 0xe7, 0x9f, 0x3f, 0x75, 0x67, 0x6e, 0x06, 0x48, 0xa6, 0x69, 0x61, 0x56, 0x9c, 0x4d, 0xf3, 0x8b, 0xbb, 0x64, 0xb1, 0x9a, 0x37, 0xf9, 0xd2, 0xec, 0x3e, 0x2e, 0x1f, 0x2e, 0xd0, 0x32, 0xad, 0x9a, 0x1a, 0x44, 0x40, 0x3f, 0xa0, 0xb5, 0xdf, 0x54, 0x79, 0x83, 0x8b, 0x44, 0xbf, 0x33, 0x33, 0xcc, 0x9a, 0x5a, 0x87, 0x03, 0xad, 0x99, 0xef, 0x4c, 0x0c, 0x6d, 0x99, 0xad, 0x4d, 0x6b, 0xf3, 0xd1, 0x83, 0xcf, 0x1c, 0x07, 0xb9, 0x6a, 0x9a, 0xe5, 0xc1, 0xce, 0x4e, 0x9d, 0x37, 0xd9, 0xe8, 0xef, 0xe6, 0x1e, 0x0e, 0x9a, 0x9b, 0x72, 0xd0, 0x5c, 0x55, 0x59, 0xf6, 0x8f, 0x91, 0xa1, 0x61, 0xfb, 0xa4, 0xf9, 0xee, 0x9d, 0x4c, 0xec, 0x32, 0x6b, 0xcc, 0x17, 0xfe, 0xba, 0xca, 0x0a, 0x8c, 0x68, 0xe6, 0x91, 0xce, 0x97, 0x57, 0xa9, 0x39, 0xce, 0xcc, 0x50, 0x23, 0x6e, 0xb6, 0x21, 0x18, 0xcc, 0x8a, 0xef, 0xf6, 0x9f, 0x7f, 0x0a, 0x3f, 0x7a, 0x41, 0xdf, 0x34, 0xff, 0x1d, 0x65, 0xb7, 0xe9, 0xc2, 0xac, 0x0d, 0x9f, 0xda, 0x01, 0x89, 0xfd, 0x79, 0x6f, 0xb8, 0xb7, 0xbb, 0xfb, 0xd3, 0xa8, 0xb9, 0x6d, 0x1e, 0xf6, 0xfc, 0xee, 0xae, 0x7b, 0x03, 0x8f, 0x6e, 0x61, 0xbd, 0xc9, 0xdc, 0x90, 0x0c, 0x3e, 0xfe, 0xb7, 0xac, 0x2a, 0xeb, 0xed, 0x87, 0x8d, 0x94, 0x0e, 0xff, 0xd6, 0xfe, 0xee, 0xbb, 0xac, 0x26, 0x9a, 0x71, 0x6b, 0x4d, 0xd2, 0xca, 0xd0, 0x6d, 0xd9, 0x38, 0xf6, 0x34, 0x30, 0x97, 0xb2, 0xb1, 0x3b, 0x63, 0xee, 0x9c, 0x79, 0xda, 0x30, 0xb6, 0x74, 0x0e, 0x9e, 0x56, 0x27, 0x45, 0x76, 0x6b, 0x6f, 0xb9, 0xb9, 0xfd, 0x59, 0x3a, 0xbd, 0x4a, 0x4a, 0x43, 0xfc, 0x55, 0xe4, 0x08, 0xfc, 0x09, 0xa5, 0xd5, 0xf4, 0x2a, 0xbf, 0x36, 0xbb, 0xf1, 0xfc, 0xf9, 0xd3, 0xa1, 0xf9, 0xcf, 0xf3, 0x9f, 0x76, 0xae, 0xcb, 0xb9, 0xd9, 0x9c, 0xc7, 0x3f, 0xed, 0xe0, 0x88, 0xff, 0x9e, 0x0e, 0x26, 0x83, 0xe9, 0x3f, 0x46, 0x57, 0xcd, 0x62, 0xde, 0x4b, 0x38, 0x69, 0x61, 0xfe, 0x7f, 0x51, 0xae, 0x8a, 0xc6, 0x12, 0x8b, 0xa1, 0xb9, 0xc6, 0x63, 0x4e, 0xe6, 0xba, 0x9a, 0x3b, 0x0a, 0xd2, 0x06, 0x0d, 0xe1, 0xd6, 0x99, 0x0b, 0xea, 0xae, 0x63, 0x33, 0xbd, 0xc2, 0xfa, 0x0d, 0xf5, 0xa4, 0xb2, 0x09, 0x4d, 0x9e, 0xe2, 0x66, 0x1a, 0x06, 0x01, 0x86, 0x45, 0x63, 0xf1, 0xd7, 0x72, 0xf3, 0x60, 0x59, 0xcd, 0xb2, 0x6a, 0xd4, 0x9d, 0x86, 0xbd, 0xb2, 0xde, 0x37, 0x13, 0x95, 0x28, 0xf8, 0x01, 0x4d, 0x6c, 0x91, 0xdf, 0x9a, 0x11, 0x88, 0x61, 0x16, 0x34, 0x71, 0x1e, 0x2d, 0xc1, 0x8c, 0xe9, 0x33, 0xfa, 0xbe, 0xbb, 0xb2, 0x66, 0xea, 0xad, 0xa5, 0xd3, 0x47, 0xdd, 0xe2, 0x13, 0x73, 0x78, 0x4b, 0xf3, 0xd6, 0x0a, 0x7c, 0x95, 0xae, 0x35, 0x86, 0x31, 0x0c, 0xe1, 0xd2, 0x9c, 0x8b, 0x39, 0x0b, 0x50, 0x31, 0x8e, 0xea, 0x2e, 0x79, 0x67, 0x08, 0x86, 0x99, 0x91, 0x47, 0xec, 0xf3, 0xac, 0x69, 0xee, 0x3d, 0x26, 0x47, 0xb1, 0x07, 0x7b, 0x01, 0xd1, 0xf6, 0x3d, 0x6f, 0xe8, 0xec, 0x60, 0xbf, 0xfd, 0xf0, 0xf7, 0x86, 0x49, 0xbb, 0xeb, 0x62, 0xbe, 0xfe, 0xf7, 0x7f, 0x78, 0x54, 0x77, 0x83, 0xdf, 0xe6, 0xc5, 0x75, 0xf9, 0xd1, 0x6c, 0x11, 0x49, 0xd1, 0xb4, 0xbd, 0x9b, 0xe0, 0x43, 0x8b, 0x65, 0x63, 0xc5, 0x13, 0xc8, 0xd1, 0xfc, 0x68, 0x92, 0x4e, 0xe6, 0x77, 0xc9, 0x55, 0x7a, 0x9d, 0x61, 0xbd, 0x4b, 0x43, 0xa7, 0xd8, 0x01, 0x23, 0x36, 0xe6, 0xc4, 0xc7, 0x84, 0x31, 0xcc, 0xca, 0xd5, 0xc4, 0x30, 0x97, 0xbf, 0xae, 0xca, 0x86, 0x37, 0x26, 0xbd, 0x2e, 0xf3, 0x59, 0x4b, 0x16, 0x5f, 0x65, 0x60, 0x68, 0xf8, 0x30, 0x09, 0x29, 0xc3, 0x50, 0x31, 0x53, 0xba, 0x68, 0x79, 0x03, 0x71, 0x67, 0x58, 0x61, 0x3a, 0xaf, 0xcb, 0x24, 0xb9, 0x2c, 0x71, 0x4b, 0x88, 0x01, 0x13, 0x99, 0x9b, 0x43, 0xb9, 0x4a, 0x21, 0xd5, 0x8c, 0x00, 0xb3, 0xf7, 0xa0, 0xca, 0x88, 0x17, 0xd3, 0x49, 0xa5, 0xf3, 0x01, 0x4b, 0x2f, 0xbc, 0x23, 0x5b, 0x95, 0x6c, 0xfe, 0xaf, 0xcd, 0x41, 0xb2, 0xf9, 0xef, 0x9b, 0x44, 0x0f, 0x9b, 0xff, 0xb6, 0xe9, 0xce, 0xd9, 0x28, 0x63, 0xd7, 0xf9, 0x2c, 0x63, 0x92, 0x38, 0x3a, 0xbd, 0x7e, 0x9a, 0xfc, 0x0d, 0xba, 0x83, 0xe1, 0xb5, 0xd9, 0xad, 0x12, 0xa4, 0xae, 0xcd, 0xbc, 0x9d, 0x18, 0xa6, 0x9b, 0x2e, 0xa1, 0x44, 0x64, 0xd5, 0xd4, 0x50, 0x6f, 0x7a, 0x69, 0xe8, 0xd5, 0xc8, 0x62, 0x1d, 0x0e, 0xe3, 0xe3, 0x15, 0x5e, 0x96, 0x61, 0x90, 0x49, 0x91, 0x2e, 0xcc, 0x8d, 0x38, 0xc6, 0x8c, 0xf2, 0x22, 0x3c, 0xcc, 0x3f, 0x5f, 0x64, 0x9f, 0xef, 0x1e, 0x1c, 0x3c, 0xfa, 0xdd, 0xfe, 0x93, 0xac, 0xb9, 0xda, 0xfd, 0x69, 0xc7, 0x3e, 0x72, 0x74, 0x41, 0xdb, 0xae, 0xe4, 0xa7, 0x93, 0x30, 0x52, 0xde, 0x4a, 0x09, 0xf3, 0xbe, 0xf9, 0x7b, 0x76, 0x91, 0xdf, 0x0e, 0x54, 0x5f, 0xe2, 0x3b, 0x97, 0x1a, 0x52, 0x33, 0xe7, 0x07, 0x16, 0xa1, 0xc3, 0x5d, 0xae, 0xb2, 0xda, 0xec, 0xe4, 0xcd, 0x55, 0xda, 0x24, 0x76, 0x00, 0x3e, 0xd9, 0x45, 0x7e, 0x79, 0xd5, 0x24, 0x37, 0x29, 0x84, 0xcd, 0x51, 0xc3, 0x43, 0x40, 0xca, 0x1b, 0x11, 0x73, 0x91, 0x1a, 0x59, 0x81, 0x33, 0x24, 0x91, 0x3e, 0x71, 0x1a, 0x46, 0x63, 0xc8, 0x9c, 0x0f, 0xc4, 0xa9, 0x53, 0x93, 0xb4, 0xc6, 0xa5, 0x2d, 0x0c, 0x73, 0x68, 0x8c, 0x8e, 0xb0, 0xc2, 0xbf, 0xae, 0x8c, 0x16, 0x40, 0x7b, 0x20, 0x13, 0x25, 0x41, 0xf9, 0x06, 0xc7, 0x89, 0xb3, 0xb1, 0xc2, 0xcb, 0x1c, 0xd2, 0x40, 0x8e, 0xd9, 0xbe, 0x51, 0x9b, 0x0b, 0x67, 0x38, 0x93, 0xa5, 0x8c, 0x0d, 0x30, 0xd9, 0x0d, 0x5e, 0x27, 0xcd, 0x31, 0xad, 0xa1, 0x28, 0xb0, 0x3a, 0x60, 0x26, 0xef, 0x2d, 0xd6, 0x6c, 0x5a, 0xfa, 0x11, 0x2a, 0x49, 0x47, 0xf1, 0xa1, 0xd7, 0x66, 0xa5, 0x21, 0x32, 0x33, 0x5b, 0xc3, 0x8c, 0xb1, 0x32, 0xb0, 0x58, 0xda, 0x15, 0x22, 0x72, 0x33, 0x26, 0x7e, 0x98, 0x37, 0x90, 0x31, 0xa4, 0xc3, 0x9a, 0xf9, 0x9a, 0x4d, 0x21, 0x45, 0xd4, 0x30, 0x6a, 0x6f, 0xfd, 0x24, 0x1e, 0xcd, 0xb3, 0xc9, 0xb5, 0xd1, 0x52, 0x8c, 0x42, 0x9a, 0xd9, 0xb7, 0x48, 0x9e, 0x4f, 0xa1, 0x1b, 0xcd, 0xcd, 0x7d, 0x99, 0x96, 0x55, 0x05, 0x7d, 0x1f, 0x27, 0x38, 0x61, 0x26, 0xba, 0xc8, 0x8c, 0x1a, 0xe1, 0x6f, 0x67, 0x0e, 0x81, 0x66, 0xf8, 0x8b, 0xd1, 0x4b, 0x88, 0x83, 0x18, 0xfd, 0x81, 0x78, 0x3e, 0x2d, 0x9c, 0x66, 0x87, 0xb1, 0xa7, 0xd3, 0x6c, 0xd9, 0xd4, 0xb1, 0x35, 0xe9, 0x81, 0x9b, 0xe9, 0x54, 0x19, 0x76, 0xde, 0x57, 0xba, 0x68, 0x5f, 0xad, 0xd0, 0x27, 0xbd, 0x4b, 0xf5, 0x18, 0xa3, 0x87, 0xd5, 0x76, 0xd7, 0x1a, 0xa2, 0x0d, 0xc3, 0xc6, 0x68, 0xcf, 0x17, 0x98, 0x28, 0x1e, 0xae, 0xf9, 0xa6, 0x12, 0x6b, 0xc6, 0x41, 0xb2, 0xa6, 0xcd, 0xdf, 0x85, 0xe8, 0x32, 0xfb, 0x69, 0x07, 0x37, 0x5f, 0xb5, 0x67, 0x8a, 0xcf, 0x43, 0xc5, 0x37, 0x92, 0x7c, 0x56, 0x5f, 0x19, 0xe5, 0xab, 0x96, 0x9b, 0x9d, 0x2f, 0x0c, 0xcd, 0x5c, 0xe3, 0x7c, 0x97, 0x59, 0x36, 0x1b, 0x25, 0x27, 0x17, 0xe0, 0xaa, 0x95, 0x99, 0x74, 0x43, 0xbf, 0x86, 0x54, 0x31, 0xfb, 0x36, 0x23, 0x25, 0xde, 0x5e, 0x2d, 0x9e, 0x8a, 0x27, 0x1d, 0x88, 0x93, 0xa7, 0xe6, 0x27, 0x66, 0xb6, 0xf3, 0xb6, 0x08, 0xa2, 0x7b, 0x68, 0xb8, 0x37, 0xa6, 0x37, 0xc9, 0x12, 0xa2, 0xc4, 0x49, 0xd6, 0xdc, 0x64, 0x99, 0x1d, 0xae, 0xce, 0x8c, 0xd8, 0xc3, 0xa1, 0xb1, 0xe6, 0x47, 0xcc, 0x10, 0x5b, 0x7b, 0x7a, 0x76, 0xf2, 0xf5, 0xd9, 0xe1, 0x78, 0x9c, 0xbc, 0x3d, 0x3c, 0x3f, 0x3c, 0x6b, 0xed, 0x74, 0x51, 0x56, 0x0b, 0x3a, 0xd1, 0x59, 0x5e, 0x2f, 0xe7, 0xe9, 0x1d, 0x8e, 0xda, 0xac, 0xe4, 0xb2, 0xc2, 0xcd, 0x5a, 0x64, 0x90, 0x0a, 0xb3, 0x15, 0x71, 0x32, 0x23, 0x8e, 0xcc, 0xf1, 0x89, 0xc6, 0x0b, 0x66, 0x42, 0x6a, 0x72, 0x71, 0xe9, 0x76, 0xda, 0x70, 0x1c, 0x91, 0xa4, 0x10, 0xa5, 0xf6, 0x3c, 0xa0, 0x7a, 0x92, 0x71, 0x33, 0x70, 0x3f, 0xe3, 0x6d, 0x62, 0xd1, 0x66, 0x68, 0x36, 0x5f, 0x10, 0xb3, 0x33, 0x7f, 0x3a, 0x6d, 0x33, 0xbb, 0x30, 0xaa, 0xb6, 0x91, 0xae, 0x6c, 0x29, 0x74, 0xe7, 0xa4, 0xb3, 0xb5, 0xfa, 0xb1, 0x21, 0x43, 0xb0, 0x66, 0x0c, 0xc8, 0x53, 0xe1, 0x2f, 0x58, 0x26, 0x66, 0x74, 0x12, 0xf0, 0x3e, 0x79, 0x6c, 0x89, 0x29, 0x64, 0xe6, 0x64, 0x67, 0x3c, 0x7c, 0xbd, 0xba, 0xa0, 0x8b, 0x9c, 0x6c, 0x19, 0xcd, 0xfc, 0xad, 0xb1, 0x96, 0x8c, 0xc5, 0x32, 0x48, 0x4e, 0xb7, 0xe9, 0xbd, 0xbd, 0xdd, 0xfd, 0xc7, 0xcc, 0x08, 0x46, 0x3a, 0xdc, 0x1b, 0x8f, 0x11, 0xef, 0x7d, 0xc4, 0xf1, 0xf2, 0x43, 0x18, 0x7c, 0x94, 0xec, 0xbd, 0xe5, 0x9f, 0x3c, 0xfe, 0xfc, 0xc9, 0xb3, 0xa7, 0xf2, 0xc3, 0x36, 0x81, 0xdb, 0xf9, 0x13, 0x75, 0x90, 0xe5, 0x07, 0x53, 0xd0, 0xcc, 0xc4, 0xac, 0x6e, 0x91, 0x17, 0xe6, 0x9a, 0x98, 0x6b, 0x25, 0xbc, 0x0a, 0xf4, 0x6c, 0x26, 0x7f, 0xc1, 0x9c, 0x4d, 0xce, 0xb5, 0x6d, 0x52, 0x9a, 0x97, 0x0d, 0xc9, 0x1a, 0x5e, 0x6e, 0x0f, 0x89, 0xd5, 0x84, 0x06, 0x13, 0x49, 0x27, 0x60, 0xb0, 0xb0, 0xab, 0x8c, 0x02, 0x9c, 0x45, 0xbf, 0x66, 0xa5, 0xa2, 0x79, 0xc3, 0xcc, 0xcd, 0xc8, 0x44, 0x88, 0xb9, 0x70, 0xdf, 0x0d, 0x2b, 0x20, 0x0e, 0x79, 0x93, 0xd7, 0xc4, 0x1a, 0x6e, 0xca, 0xd5, 0xdc, 0x58, 0x31, 0x78, 0x60, 0xb5, 0xa4, 0x17, 0xcc, 0xa7, 0x96, 0x8e, 0x07, 0x18, 0x8d, 0x05, 0xb4, 0xd3, 0x1d, 0xc5, 0x4c, 0xcd, 0xfc, 0x73, 0x69, 0x48, 0x89, 0xa7, 0x33, 0xea, 0x4a, 0x08, 0xe2, 0x7d, 0x01, 0x25, 0xe2, 0xce, 0x13, 0xd3, 0x3e, 0x3d, 0x19, 0x9f, 0x43, 0x03, 0x38, 0x7d, 0x7f, 0x6e, 0x06, 0x32, 0x2a, 0x40, 0xdd, 0x18, 0xa2, 0xc4, 0x8b, 0x45, 0x46, 0x26, 0xa4, 0x0e, 0x67, 0x68, 0x2f, 0x27, 0x46, 0x45, 0x6a, 0x8d, 0x7e, 0x92, 0xe7, 0xc8, 0x36, 0x36, 0xae, 0xa0, 0x5a, 0xd8, 0x2c, 0xc3, 0xed, 0x3b, 0xc9, 0xd6, 0x1f, 0xb7, 0x0d, 0xcd, 0x0e, 0x4b, 0xbb, 0x3b, 0xc3, 0xa1, 0xbc, 0x6a, 0xbe, 0x5d, 0xe7, 0x8b, 0x7c, 0x9e, 0x56, 0xde, 0xd4, 0x99, 0xa3, 0xe2, 0x7e, 0x5a, 0xbe, 0x32, 0x35, 0x54, 0x43, 0xd3, 0x76, 0xa6, 0x24, 0xf6, 0x90, 0xb8, 0x92, 0x3b, 0xaa, 0x19, 0x14, 0x02, 0xd2, 0x98, 0x97, 0xb9, 0xdd, 0x3a, 0x9c, 0x19, 0xd8, 0x55, 0x6b, 0xa3, 0xba, 0xe7, 0x16, 0x6c, 0x1c, 0x24, 0x12, 0x79, 0x2a, 0xec, 0xd6, 0x25, 0x1b, 0x93, 0xb4, 0xda, 0x48, 0x2c, 0x2f, 0xe6, 0xbb, 0x89, 0x1b, 0x52, 0x65, 0x97, 0x2b, 0xb3, 0x82, 0x84, 0x77, 0x17, 0x2b, 0xfd, 0xad, 0xb7, 0x52, 0x1d, 0x60, 0x38, 0xc1, 0x23, 0x79, 0xcd, 0x66, 0xe6, 0x85, 0xb1, 0x5b, 0x70, 0x69, 0x54, 0x7f, 0x25, 0x8d, 0x46, 0x28, 0x26, 0x42, 0x30, 0x9e, 0x5e, 0x6b, 0xae, 0x4a, 0x93, 0x19, 0x46, 0x43, 0xec, 0x1f, 0x4f, 0x0e, 0xcd, 0x91, 0x0d, 0x87, 0xb5, 0xd9, 0x7f, 0xe8, 0xde, 0x4b, 0xb1, 0xe9, 0x4f, 0xc8, 0x61, 0x62, 0x7d, 0x2b, 0x27, 0xa2, 0x03, 0x93, 0xd8, 0xe4, 0x77, 0x89, 0x85, 0x1a, 0x45, 0xf5, 0xc6, 0x7c, 0x38, 0x35, 0x47, 0x66, 0x2e, 0xdc, 0x5b, 0x6c, 0x14, 0xfb, 0x46, 0x12, 0xab, 0x36, 0x13, 0x65, 0xe4, 0xb8, 0xf7, 0xa9, 0xd3, 0x65, 0x66, 0xb3, 0x1c, 0xbf, 0x35, 0xf7, 0xcb, 0x48, 0xb8, 0x55, 0x46, 0xb6, 0x87, 0x6c, 0xea, 0xc2, 0x6d, 0x26, 0x99, 0xb1, 0xf5, 0x55, 0x09, 0x33, 0x71, 0x83, 0x79, 0xf1, 0x10, 0xdf, 0xda, 0x20, 0x79, 0xbe, 0x48, 0xf4, 0x5b, 0xf2, 0x29, 0xb3, 0x8e, 0x99, 0xaf, 0x9b, 0x0d, 0x8c, 0xa0, 0xb9, 0xf3, 0x8c, 0x04, 0xe2, 0xd5, 0x3c, 0xf7, 0xca, 0x2a, 0x3c, 0x46, 0xa4, 0x2e, 0xa1, 0x4c, 0x09, 0x0f, 0x27, 0x61, 0x48, 0x57, 0xb6, 0xe6, 0xa9, 0x0d, 0xcc, 0xde, 0xe2, 0xc9, 0xcb, 0x2b, 0x7d, 0xd4, 0x13, 0xac, 0xa9, 0x59, 0x1c, 0x84, 0x03, 0xec, 0xe9, 0x99, 0xf2, 0xfd, 0xb2, 0x62, 0x66, 0x36, 0x2f, 0x0d, 0x2d, 0x6f, 0xb0, 0xca, 0x2a, 0xd3, 0xc6, 0xac, 0x31, 0x4b, 0xec, 0x38, 0xfb, 0x99, 0x4a, 0x7b, 0x36, 0x76, 0xd2, 0xb2, 0x5f, 0xf5, 0xbd, 0x53, 0x73, 0x1b, 0x35, 0xa6, 0x3d, 0x32, 0xa2, 0xb3, 0x06, 0x1d, 0xeb, 0xce, 0x13, 0x79, 0x1b, 0x51, 0xb7, 0xd9, 0xf0, 0x7d, 0x24, 0x1b, 0xab, 0xb3, 0xf3, 0x35, 0x91, 0x8f, 0x08, 0x32, 0xbb, 0x32, 0xb3, 0xa2, 0x59, 0x9e, 0x12, 0x9d, 0xf0, 0xd1, 0x90, 0x32, 0xe2, 0x2c, 0xc2, 0x88, 0x1e, 0x7c, 0xd7, 0x35, 0xe8, 0xe6, 0x73, 0x5f, 0x24, 0xe9, 0x9c, 0x86, 0x27, 0x66, 0xed, 0xc7, 0xb4, 0x8e, 0xe1, 0x75, 0x82, 0xeb, 0x67, 0xcc, 0x06, 0xdc, 0xc5, 0xe1, 0xc9, 0xf1, 0xb5, 0x77, 0x8d, 0x60, 0xb9, 0x17, 0xd0, 0x53, 0x06, 0xe4, 0x1d, 0x99, 0x94, 0xa5, 0x31, 0x93, 0xdd, 0xd2, 0x20, 0x0f, 0xb2, 0x02, 0xd4, 0x2e, 0x27, 0x6a, 0x58, 0xc2, 0xd2, 0xf2, 0xdb, 0x3b, 0x63, 0x2e, 0xa5, 0x97, 0x69, 0x6e, 0xe9, 0x4d, 0x6e, 0xc6, 0x2c, 0xd1, 0x87, 0x8b, 0x52, 0x9e, 0xc7, 0x51, 0x41, 0x05, 0x12, 0xbe, 0xb5, 0xaa, 0xf9, 0xfa, 0x98, 0x55, 0x19, 0xce, 0x43, 0xbc, 0x43, 0xc6, 0x85, 0xda, 0xa8, 0xc3, 0x4d, 0x48, 0x51, 0x86, 0xce, 0x49, 0xcc, 0x97, 0x34, 0x48, 0x33, 0xe2, 0xc6, 0x28, 0xf9, 0xa6, 0xbc, 0xc9, 0xc8, 0x57, 0x48, 0xfa, 0x7d, 0x0e, 0x6f, 0x97, 0x51, 0x05, 0x6f, 0xb2, 0x64, 0x61, 0x54, 0x4f, 0xb3, 0x9b, 0xa4, 0x7d, 0xd0, 0xcf, 0x3c, 0xf3, 0xd0, 0x50, 0xf8, 0x0d, 0xef, 0x92, 0x5d, 0x85, 0x3d, 0xca, 0x0b, 0xbe, 0x12, 0xc9, 0x16, 0xa9, 0x37, 0x53, 0xec, 0xd6, 0xb2, 0x71, 0xab, 0xb0, 0x1b, 0x72, 0x93, 0xd6, 0xde, 0xe5, 0xca, 0xc8, 0x34, 0x7d, 0x36, 0xda, 0x7b, 0x3e, 0xda, 0x1d, 0x19, 0x43, 0x24, 0xbb, 0xce, 0xcb, 0x55, 0x6d, 0x3e, 0x8d, 0x69, 0xb8, 0x77, 0x32, 0xdc, 0xca, 0xa6, 0xbc, 0xbc, 0x9c, 0xb3, 0xce, 0xb3, 0x53, 0x5e, 0x5c, 0xb0, 0xee, 0x63, 0x34, 0x3d, 0xab, 0x3f, 0xb3, 0x05, 0x84, 0x9d, 0x91, 0xeb, 0xc6, 0x2c, 0x35, 0x34, 0x91, 0x47, 0xce, 0x79, 0x31, 0x1c, 0xa6, 0x93, 0xba, 0x81, 0x31, 0x35, 0x5c, 0x15, 0xf9, 0xed, 0xb0, 0x2e, 0xa7, 0x1f, 0xcd, 0xa1, 0xbc, 0x58, 0xa6, 0xcd, 0xd5, 0x1f, 0x3b, 0x2e, 0xe1, 0x2d, 0xc8, 0x92, 0xed, 0x24, 0x79, 0xc5, 0x6a, 0x25, 0x76, 0xa2, 0xe2, 0xfb, 0x66, 0x4e, 0x53, 0x46, 0x49, 0xde, 0x9b, 0x51, 0x0c, 0x2d, 0x2f, 0xcc, 0xa1, 0x26, 0x3c, 0xd8, 0x40, 0x59, 0x69, 0x67, 0x38, 0x72, 0x38, 0x42, 0x8c, 0x90, 0xdf, 0xce, 0x5c, 0x9d, 0xb2, 0xfa, 0x68, 0x14, 0xed, 0x77, 0xc6, 0x64, 0x3c, 0xc0, 0xbf, 0x0d, 0x0b, 0x6b, 0x68, 0xcb, 0x45, 0xb2, 0x9a, 0x19, 0x31, 0x33, 0x86, 0x45, 0x9e, 0x4e, 0x86, 0x9d, 0xe1, 0xe4, 0xfb, 0xf2, 0xd1, 0x44, 0x6d, 0x0d, 0x25, 0xa5, 0x64, 0xf3, 0x4b, 0x63, 0xff, 0x5d, 0xf1, 0xb1, 0xd3, 0x80, 0xbc, 0x46, 0x43, 0xa1, 0x97, 0xc6, 0x82, 0x28, 0x9a, 0xee, 0x70, 0x57, 0x24, 0xaa, 0x21, 0x65, 0xd8, 0xd8, 0x25, 0x22, 0x11, 0x0f, 0x90, 0xb5, 0x3f, 0x47, 0x9f, 0x75, 0x5e, 0x7b, 0xe9, 0xce, 0xf4, 0xc9, 0x23, 0x73, 0xa6, 0xfe, 0x46, 0xcf, 0x9b, 0x61, 0x7d, 0x3d, 0x4d, 0x5e, 0x90, 0xf6, 0x0d, 0x32, 0x8d, 0x6e, 0xf0, 0x78, 0x3b, 0xf9, 0xfe, 0xe5, 0xd9, 0xbb, 0xa3, 0x77, 0x5f, 0x1f, 0xf0, 0x47, 0x85, 0xd2, 0xcc, 0xdf, 0xb2, 0xdb, 0x25, 0xfc, 0x60, 0x98, 0xad, 0x11, 0x65, 0x49, 0xf2, 0xba, 0x24, 0x7b, 0x84, 0x18, 0x26, 0x04, 0x56, 0x67, 0x38, 0x23, 0x5a, 0x66, 0xab, 0x8e, 0xef, 0xd7, 0x32, 0x6c, 0x37, 0x30, 0x5f, 0x4f, 0xde, 0x64, 0x9d, 0xa3, 0xe1, 0x8f, 0xec, 0x3e, 0x26, 0x7d, 0x69, 0x04, 0x69, 0x49, 0x66, 0xbe, 0xce, 0xbc, 0xfb, 0xa5, 0xd2, 0x18, 0xbb, 0x6c, 0xe7, 0x9b, 0xf1, 0x6e, 0xcd, 0xb5, 0xc1, 0x2e, 0xe9, 0x60, 0x53, 0xc3, 0x8e, 0x32, 0x51, 0x1c, 0x88, 0xd5, 0x91, 0xd9, 0x20, 0xac, 0x6c, 0x94, 0xbc, 0xbc, 0xe8, 0x1e, 0x25, 0x74, 0x17, 0x68, 0xf5, 0x2a, 0x05, 0x67, 0x4e, 0x11, 0x66, 0x2f, 0x2f, 0x8f, 0xa8, 0xc3, 0xd4, 0xe6, 0x7c, 0x66, 0x2a, 0xe9, 0xf1, 0x99, 0xce, 0x70, 0x64, 0x7a, 0x12, 0x9b, 0x81, 0x52, 0x98, 0xe3, 0x40, 0x61, 0xfa, 0x19, 0x46, 0xbd, 0x28, 0x67, 0x64, 0x47, 0x04, 0xfb, 0x33, 0xb6, 0x0e, 0x9f, 0x8d, 0x0d, 0xb7, 0xea, 0x64, 0x0b, 0xae, 0x3f, 0x43, 0x05, 0xc5, 0x65, 0x73, 0xb5, 0xed, 0xdc, 0x1a, 0x50, 0x53, 0xcc, 0x82, 0x77, 0xcc, 0x44, 0x68, 0xdd, 0x45, 0x97, 0xd4, 0xc9, 0xed, 0x4c, 0x9a, 0xe7, 0x5f, 0x56, 0x75, 0x43, 0xd6, 0x90, 0x88, 0x7f, 0x5e, 0x89, 0x99, 0xd9, 0x22, 0x5b, 0x94, 0xd5, 0x5d, 0x30, 0x91, 0x23, 0x52, 0x3e, 0x60, 0x78, 0xca, 0x69, 0x81, 0x0e, 0x48, 0x3e, 0xaa, 0x4b, 0x10, 0x46, 0x00, 0x7c, 0xea, 0xd6, 0x0e, 0x24, 0xa5, 0xc9, 0x30, 0x20, 0x63, 0x7f, 0x3b, 0x87, 0xad, 0x1a, 0x50, 0xe4, 0xe8, 0x61, 0xdb, 0x5e, 0xac, 0xa9, 0x89, 0xb8, 0x70, 0xf0, 0xff, 0xf3, 0x14, 0x5c, 0xa7, 0xc8, 0x5a, 0x27, 0x44, 0xd2, 0x83, 0x97, 0xb6, 0x8e, 0xdc, 0x9f, 0x3e, 0x1e, 0xed, 0xb5, 0xc8, 0xbd, 0xb8, 0x43, 0xa0, 0x20, 0xce, 0x43, 0xce, 0x8d, 0xe2, 0x58, 0xf3, 0x9c, 0xcd, 0x2e, 0x5e, 0xe4, 0x97, 0xab, 0x2a, 0x63, 0x0d, 0x8e, 0x62, 0x0b, 0x1a, 0x52, 0x80, 0x52, 0x74, 0x55, 0x92, 0x27, 0xde, 0x08, 0xd3, 0x6c, 0x7e, 0x31, 0xe8, 0x0c, 0x47, 0xe6, 0x0b, 0x51, 0x3f, 0xa6, 0x4f, 0x4c, 0xd3, 0x98, 0x29, 0x34, 0x58, 0x91, 0x89, 0x12, 0xbb, 0x30, 0x0c, 0x25, 0x81, 0x2b, 0x3a, 0x99, 0xce, 0xd3, 0x7c, 0x41, 0x64, 0x2a, 0xae, 0xd6, 0x51, 0xec, 0x5a, 0xc0, 0xc0, 0xc0, 0xdb, 0x13, 0x98, 0xbe, 0x55, 0x0d, 0xc9, 0x4c, 0xa7, 0xaa, 0x9a, 0x33, 0x1b, 0x96, 0x57, 0xd9, 0xf4, 0xa3, 0x32, 0x2f, 0x55, 0x39, 0xbb, 0x74, 0x8c, 0x18, 0x03, 0xd9, 0xd7, 0xe6, 0xa9, 0x55, 0x8d, 0x6b, 0x52, 0xd7, 0x39, 0xdc, 0x67, 0x30, 0x07, 0x57, 0x53, 0xb2, 0x12, 0xe9, 0xc2, 0x18, 0xea, 0x56, 0x0e, 0x98, 0x18, 0x96, 0x5a, 0xcc, 0x86, 0x4d, 0x95, 0x2f, 0xfb, 0x66, 0xc7, 0xa7, 0xd2, 0x56, 0x50, 0x6b, 0xb1, 0xd8, 0xc9, 0x18, 0x66, 0xf3, 0x78, 0x9a, 0x74, 0x76, 0xb3, 0x4b, 0x94, 0xb4, 0xb7, 0x03, 0xf8, 0x83, 0x72, 0xa3, 0x2f, 0xb0, 0xb1, 0x44, 0xee, 0x4e, 0x63, 0x1a, 0x89, 0xe0, 0x32, 0x56, 0x5c, 0x3e, 0x25, 0x25, 0x28, 0xbf, 0xcc, 0x10, 0xcb, 0x31, 0xb2, 0xac, 0x99, 0x1b, 0xd5, 0x28, 0xa4, 0x71, 0xf3, 0x9b, 0xec, 0xb2, 0x6c, 0xa0, 0x8d, 0x04, 0x64, 0xf2, 0x9e, 0xf8, 0xbc, 0xa5, 0x09, 0x55, 0xfb, 0x7d, 0x9d, 0x2c, 0x67, 0x7d, 0xdc, 0x7c, 0x9a, 0xd5, 0x7e, 0xf1, 0x38, 0xd4, 0x8d, 0xb9, 0x59, 0xdd, 0x53, 0x37, 0xa3, 0x4d, 0x33, 0xb2, 0xbd, 0x48, 0x71, 0x54, 0xbd, 0x55, 0x15, 0x7e, 0xb0, 0x04, 0xe8, 0xc8, 0xcd, 0x4d, 0x3e, 0xcd, 0xd4, 0x1d, 0x27, 0x3e, 0xea, 0x79, 0x1e, 0xb2, 0xfa, 0x05, 0xee, 0xa4, 0x79, 0x89, 0x75, 0x72, 0x78, 0x4f, 0x6e, 0x72, 0xe8, 0xec, 0xc2, 0xf4, 0x48, 0x25, 0x13, 0x71, 0x90, 0x56, 0x39, 0xb9, 0x8a, 0xcc, 0x70, 0x32, 0x4f, 0xcf, 0xa2, 0xf7, 0xef, 0x18, 0xcf, 0x9b, 0xde, 0x17, 0x33, 0xc6, 0x99, 0x2f, 0x74, 0xb9, 0x2e, 0xd2, 0x7c, 0x1e, 0xd9, 0x27, 0x62, 0x64, 0x97, 0x19, 0x79, 0xd5, 0xf8, 0x0c, 0x56, 0xd8, 0x74, 0xc4, 0xdd, 0x42, 0x26, 0x95, 0x65, 0x6c, 0x4f, 0x90, 0xf1, 0x71, 0x7b, 0x67, 0xb7, 0x97, 0x94, 0x36, 0x3e, 0x3b, 0xf9, 0x3b, 0x1f, 0x9f, 0x77, 0x3d, 0x53, 0x8c, 0x9a, 0x2e, 0x11, 0x60, 0xea, 0xde, 0x50, 0x98, 0x5e, 0x88, 0x51, 0x6e, 0xab, 0x07, 0x39, 0x13, 0xff, 0xb9, 0x8d, 0xed, 0x11, 0x43, 0x02, 0x4f, 0x93, 0x2b, 0xcc, 0xe3, 0x08, 0x07, 0xee, 0xf2, 0x72, 0x23, 0x5f, 0x8d, 0x38, 0x26, 0x1e, 0xda, 0xa2, 0xd8, 0xd2, 0xb0, 0x2f, 0x1b, 0x61, 0x82, 0xc7, 0x57, 0x78, 0x1d, 0x19, 0x5a, 0x74, 0x67, 0x63, 0xbc, 0x1c, 0xa6, 0x1f, 0xf4, 0x64, 0x96, 0x32, 0x83, 0x84, 0xf5, 0x3a, 0x66, 0x56, 0x53, 0xf6, 0x01, 0x8b, 0x0e, 0xc1, 0xa2, 0x86, 0xa6, 0x7a, 0x31, 0x4f, 0x2f, 0xc9, 0xbd, 0x76, 0xd9, 0xbd, 0xa1, 0x45, 0x29, 0x81, 0xbe, 0xba, 0x34, 0xec, 0x1d, 0xab, 0x16, 0xd7, 0x56, 0x9d, 0x6c, 0x19, 0x22, 0x9b, 0xaf, 0x48, 0xdc, 0x9f, 0x98, 0xe5, 0x8d, 0xc7, 0xdf, 0x6c, 0xfb, 0xec, 0x8d, 0x76, 0xf7, 0x21, 0xcc, 0x0d, 0xdc, 0x89, 0x8c, 0xf0, 0xaf, 0xf8, 0x3c, 0xda, 0x0c, 0xce, 0x5a, 0x77, 0xbe, 0x26, 0xa7, 0x74, 0x89, 0x55, 0xc0, 0x15, 0x3a, 0xb2, 0x57, 0x1f, 0x4f, 0xaa, 0x47, 0x96, 0x09, 0xbb, 0xa5, 0x20, 0xac, 0xea, 0x15, 0x39, 0xa7, 0x48, 0x1e, 0x77, 0x87, 0x33, 0xcc, 0xde, 0xb0, 0xa2, 0x55, 0x81, 0x3f, 0xad, 0x0e, 0x9d, 0x93, 0x35, 0x87, 0xb3, 0xa8, 0xe0, 0x02, 0x87, 0x1d, 0x6c, 0x75, 0x50, 0xc3, 0x53, 0x74, 0x6c, 0xec, 0x65, 0xf7, 0x12, 0x1a, 0x0d, 0x8d, 0xd8, 0x8d, 0x11, 0xa1, 0x46, 0x30, 0xe3, 0xc2, 0xf5, 0x70, 0xef, 0xad, 0x7a, 0x65, 0xf8, 0x0b, 0x4c, 0x07, 0x61, 0x1e, 0xa0, 0xc7, 0xee, 0xec, 0x98, 0xbd, 0x18, 0x49, 0xe3, 0xf1, 0x91, 0xed, 0x5f, 0xfb, 0x82, 0xd0, 0xa1, 0xf9, 0xa7, 0x68, 0xc4, 0x6f, 0x66, 0x0c, 0x32, 0x52, 0xc9, 0x02, 0x6d, 0xec, 0xfc, 0x78, 0x1c, 0x3b, 0xcc, 0x76, 0x7c, 0x0a, 0xef, 0x83, 0xd9, 0xc2, 0x8d, 0xc8, 0x6e, 0xd5, 0x12, 0x46, 0x81, 0x17, 0xa3, 0xf2, 0xfd, 0x7d, 0xcb, 0x0c, 0xc1, 0x2c, 0xb6, 0x97, 0x39, 0xf8, 0x0d, 0x06, 0x06, 0x61, 0x0d, 0xed, 0xc4, 0xba, 0x50, 0x5f, 0xbd, 0xf4, 0xc7, 0x25, 0x9f, 0x69, 0xf7, 0x22, 0x78, 0xbf, 0xdf, 0xaa, 0xb7, 0x2d, 0x0f, 0x33, 0xa3, 0x9c, 0x1e, 0xbe, 0x25, 0xfb, 0x35, 0x35, 0x74, 0xf3, 0x4e, 0xdd, 0x95, 0x1a, 0xdb, 0x9e, 0xac, 0xf2, 0x79, 0x2b, 0x26, 0xe0, 0x4c, 0x6e, 0x0a, 0x2c, 0x33, 0x69, 0xd1, 0xd4, 0x38, 0xba, 0x95, 0x93, 0x7b, 0xb8, 0x4b, 0x68, 0xcd, 0xdd, 0x52, 0x3c, 0xdb, 0xab, 0xba, 0xe5, 0x40, 0x52, 0xb9, 0x3c, 0x6f, 0x48, 0xcb, 0x86, 0x5d, 0xeb, 0x8d, 0x19, 0x9c, 0x10, 0x4d, 0x0b, 0x62, 0xe0, 0xb2, 0xc8, 0xff, 0x26, 0x3a, 0x68, 0x56, 0x5c, 0xe7, 0x55, 0x59, 0x40, 0xcb, 0x35, 0xa6, 0x6f, 0x95, 0x13, 0x5b, 0x86, 0xfa, 0x65, 0x18, 0xc7, 0xe6, 0xab, 0xf7, 0x67, 0xc7, 0x1f, 0x5e, 0xbd, 0xfc, 0xf0, 0xd5, 0xfb, 0x77, 0xaf, 0x8f, 0x0f, 0x37, 0x3b, 0xc3, 0xc1, 0xe7, 0x97, 0x8b, 0xa3, 0xbe, 0x86, 0xe5, 0x41, 0x97, 0xc4, 0x4c, 0x91, 0x47, 0xbe, 0xcc, 0xaf, 0x0d, 0x43, 0x23, 0x43, 0x82, 0x7c, 0xf4, 0xf4, 0x37, 0xf2, 0x6a, 0xc9, 0x86, 0x77, 0x86, 0x9b, 0xac, 0xa0, 0xa7, 0x8d, 0x5a, 0xda, 0xb2, 0x5e, 0x15, 0xb1, 0xda, 0x75, 0x82, 0x11, 0x0d, 0x1b, 0x5a, 0x54, 0x31, 0x83, 0xf9, 0xe2, 0x19, 0x89, 0x9e, 0xbb, 0x7e, 0xd5, 0x18, 0x2b, 0x49, 0x03, 0x04, 0x46, 0x6b, 0x2b, 0x3f, 0x6a, 0x96, 0x81, 0x31, 0xb1, 0x5e, 0x46, 0x8e, 0xbb, 0x76, 0x9a, 0xe8, 0x2c, 0xd9, 0xc4, 0x48, 0x86, 0x7e, 0x87, 0x32, 0xc9, 0x69, 0xd5, 0x18, 0xfb, 0x26, 0xcb, 0xe9, 0x62, 0x68, 0x14, 0x15, 0x3a, 0x2b, 0x39, 0xe7, 0x02, 0x0d, 0xdb, 0xe8, 0x9a, 0xd8, 0x03, 0xd2, 0xee, 0xb3, 0xdb, 0x8c, 0x6e, 0x9e, 0xbc, 0xf5, 0x6a, 0x55, 0xd1, 0x6d, 0xfe, 0xde, 0x68, 0x23, 0xe0, 0x7e, 0xaf, 0xc9, 0xbb, 0x67, 0x5e, 0xd0, 0x87, 0x8c, 0x98, 0xe9, 0x8a, 0xbc, 0x72, 0x8e, 0xb8, 0x6a, 0x4a, 0x9e, 0x14, 0xf2, 0x7b, 0x9d, 0xbe, 0x3c, 0xff, 0x26, 0xaa, 0xcc, 0xba, 0x94, 0x1e, 0x21, 0x45, 0x52, 0xcc, 0xeb, 0x46, 0x2e, 0xc8, 0xbb, 0xf1, 0x38, 0xa1, 0x84, 0x91, 0x79, 0x3e, 0xa9, 0x52, 0x7c, 0x13, 0x3f, 0xc6, 0x4f, 0x0d, 0x59, 0x77, 0x86, 0x3b, 0xfd, 0xf6, 0xd5, 0xf8, 0xb7, 0x7b, 0x7b, 0xd0, 0xe2, 0x57, 0x66, 0x5f, 0xb6, 0xcc, 0x2b, 0x45, 0x6d, 0x6e, 0xe6, 0x62, 0x54, 0x97, 0xdb, 0x24, 0xb6, 0x6b, 0x51, 0x07, 0xd2, 0x6b, 0x23, 0x6d, 0x89, 0x8e, 0x94, 0xa8, 0xcd, 0x71, 0x06, 0x7b, 0x42, 0x8c, 0x4e, 0xb2, 0x69, 0x0c, 0xbf, 0x30, 0xf2, 0x7a, 0x1e, 0x2a, 0xe4, 0x5b, 0xf9, 0xc9, 0x58, 0x72, 0x51, 0xd2, 0xa9, 0xf9, 0x2b, 0x1c, 0x05, 0xdb, 0x58, 0x59, 0xfb, 0x86, 0xe9, 0xaa, 0xc6, 0xac, 0x8d, 0x9e, 0xc3, 0x7c, 0xa1, 0x14, 0x9a, 0x90, 0x2b, 0x14, 0xdd, 0xcb, 0xe5, 0xd2, 0x94, 0x88, 0x1c, 0x26, 0xe9, 0xf4, 0xe3, 0x4d, 0x5a, 0xcd, 0xd8, 0x1e, 0x32, 0x14, 0x33, 0xc9, 0xe7, 0x79, 0x73, 0xc7, 0x76, 0x6d, 0xd7, 0xa6, 0xe6, 0xf8, 0x28, 0x36, 0xd0, 0xdc, 0xa3, 0x4b, 0x63, 0xf2, 0x43, 0xfb, 0x84, 0x8a, 0x9f, 0x37, 0xbe, 0x49, 0x4b, 0x2a, 0x52, 0x63, 0x55, 0x1c, 0xfb, 0xed, 0x40, 0x3c, 0x36, 0x7c, 0x8f, 0x68, 0x9a, 0x8e, 0x76, 0x95, 0x0d, 0xfa, 0x4c, 0x4a, 0xc9, 0x27, 0xa9, 0xef, 0x8c, 0x94, 0x5f, 0x24, 0x11, 0x15, 0x91, 0xb2, 0x87, 0x92, 0x6f, 0xb3, 0x3b, 0x63, 0x3f, 0xe7, 0x85, 0xe3, 0x94, 0x6c, 0xdf, 0x67, 0xb0, 0xee, 0x58, 0x17, 0xcd, 0xd5, 0x99, 0x9e, 0x49, 0x3c, 0x84, 0x25, 0x49, 0xe8, 0x40, 0xe0, 0xf7, 0x55, 0x0f, 0xc7, 0x10, 0x9b, 0x75, 0x8b, 0x25, 0xd3, 0x97, 0xc2, 0x43, 0x1c, 0x9b, 0x9f, 0x17, 0x45, 0x36, 0x97, 0xe3, 0x3b, 0x5f, 0x77, 0x00, 0xf6, 0x59, 0x33, 0xe5, 0xef, 0xf9, 0x46, 0x77, 0x86, 0x7b, 0xc6, 0xc1, 0xfd, 0xb4, 0x51, 0x99, 0xa4, 0x59, 0x43, 0xc6, 0x2a, 0xda, 0xb5, 0xbf, 0x1a, 0xf5, 0x7e, 0x26, 0xb8, 0x4d, 0x95, 0x3b, 0xf4, 0xf6, 0x99, 0xb3, 0x53, 0x94, 0x0e, 0x19, 0x67, 0x2c, 0x47, 0xfc, 0x07, 0xab, 0x59, 0x51, 0x00, 0xa3, 0x33, 0x9c, 0xaf, 0x65, 0xab, 0x0c, 0x93, 0x75, 0x6c, 0x1a, 0x3d, 0xb5, 0xac, 0xc8, 0x5f, 0x54, 0x95, 0xe6, 0xac, 0x5b, 0xe7, 0xb9, 0xc5, 0xca, 0x46, 0xf7, 0x9a, 0x08, 0x37, 0xf7, 0x36, 0x66, 0x3b, 0x76, 0xd1, 0x03, 0xcd, 0x24, 0x34, 0x59, 0x7b, 0x2d, 0xce, 0xb6, 0x84, 0x26, 0x2e, 0xfd, 0xc2, 0xb0, 0xb1, 0x7f, 0x5e, 0x40, 0x33, 0x33, 0x24, 0xe6, 0x17, 0xca, 0x2c, 0xa1, 0xc5, 0x96, 0xa0, 0x7e, 0xab, 0x12, 0x19, 0x93, 0xb0, 0x2e, 0xd8, 0x25, 0x27, 0x0c, 0xb0, 0xe2, 0xc8, 0xbe, 0xe4, 0xd0, 0x0c, 0x80, 0x3b, 0x50, 0x5c, 0x8e, 0x07, 0x1b, 0xc9, 0x56, 0x36, 0xba, 0x34, 0xe3, 0x6d, 0x60, 0x9c, 0xbd, 0x03, 0xfc, 0x77, 0x9f, 0xfe, 0xfb, 0x68, 0x43, 0x53, 0xfb, 0xfc, 0xad, 0x87, 0x34, 0xef, 0xca, 0x22, 0x8e, 0xc7, 0x39, 0xe1, 0x3e, 0x60, 0x1f, 0x73, 0x1f, 0xe3, 0x61, 0x9d, 0xf5, 0x98, 0x77, 0x39, 0x54, 0xb7, 0x74, 0x1b, 0x16, 0xec, 0x8f, 0xb8, 0xce, 0xd8, 0x21, 0x62, 0x56, 0x36, 0x35, 0xea, 0x21, 0xb9, 0x11, 0xf5, 0x56, 0x4d, 0x3f, 0x54, 0xd9, 0x55, 0x5a, 0x5f, 0x25, 0xab, 0x86, 0x89, 0xd0, 0xd0, 0x6d, 0x77, 0xb8, 0xe5, 0x3c, 0x77, 0x9e, 0x36, 0xf9, 0xf4, 0x48, 0xed, 0x3e, 0x77, 0x8a, 0x1c, 0x01, 0x99, 0x97, 0x37, 0xfa, 0xcc, 0x50, 0x72, 0xed, 0x62, 0x6a, 0x81, 0x39, 0x4d, 0xf2, 0x9b, 0xe0, 0x31, 0x3f, 0x92, 0xbd, 0x80, 0x36, 0x89, 0x44, 0x40, 0xc3, 0xe2, 0x2e, 0xcc, 0x8e, 0xc1, 0xa2, 0x9b, 0xd3, 0xb9, 0xc1, 0x76, 0xa5, 0x79, 0x07, 0xa6, 0xa9, 0xe8, 0x79, 0xf9, 0x85, 0x78, 0x6f, 0xe5, 0xdf, 0x24, 0x4f, 0x45, 0xfb, 0xaa, 0x39, 0xda, 0xdd, 0x55, 0xbd, 0xee, 0x27, 0x6d, 0x65, 0x90, 0x56, 0xd3, 0x91, 0xc5, 0x72, 0xc0, 0x44, 0xe9, 0x3a, 0xbf, 0x24, 0x5b, 0x23, 0xe6, 0xc0, 0x60, 0xa7, 0xd4, 0x3f, 0x75, 0x49, 0xcc, 0x8c, 0x87, 0xf0, 0x97, 0xae, 0xea, 0x07, 0xdc, 0x11, 0x8f, 0xe9, 0xf2, 0x3b, 0xd6, 0x5f, 0xcc, 0x51, 0x7d, 0x7f, 0x03, 0xba, 0x54, 0x78, 0xe7, 0x11, 0xc6, 0x2b, 0xef, 0x66, 0x8d, 0x79, 0xa0, 0x33, 0x71, 0x91, 0x6c, 0xa5, 0x1f, 0xd3, 0x51, 0x72, 0xf2, 0x6a, 0x7c, 0x8a, 0x4f, 0x18, 0xea, 0x28, 0x2e, 0xcd, 0x2c, 0x8e, 0xc7, 0x9d, 0xe1, 0xb2, 0xdb, 0x26, 0x2b, 0xea, 0x98, 0x83, 0x32, 0xdc, 0x66, 0x8d, 0x22, 0x68, 0x7a, 0x8d, 0x4c, 0xd6, 0x58, 0xfa, 0x14, 0x17, 0x47, 0x98, 0x17, 0x39, 0x18, 0x09, 0x5f, 0xb5, 0xe0, 0x43, 0x4b, 0x73, 0xf3, 0x67, 0xdb, 0xd6, 0x55, 0x33, 0x50, 0x5a, 0xb0, 0xe1, 0xc2, 0x7a, 0x75, 0x09, 0x1b, 0xa4, 0x56, 0xbb, 0xd1, 0x7e, 0xc1, 0xec, 0x46, 0xa8, 0x2a, 0xc8, 0xb2, 0xad, 0x27, 0xd1, 0x58, 0x4d, 0xc8, 0xa4, 0x22, 0x15, 0xa9, 0x28, 0xdd, 0xa8, 0xc8, 0xa6, 0xa0, 0xac, 0xd1, 0x9c, 0x02, 0x6c, 0xd3, 0xcc, 0xa8, 0xa0, 0xb3, 0x88, 0x12, 0xc0, 0x87, 0xa2, 0x86, 0xd3, 0x85, 0x64, 0x8a, 0x46, 0xfc, 0x3f, 0x34, 0xd0, 0x94, 0x55, 0x34, 0x50, 0x3d, 0x05, 0x2a, 0x72, 0xf8, 0x49, 0xa1, 0x30, 0xb3, 0xa9, 0x8e, 0xf1, 0xec, 0xfd, 0xff, 0xba, 0x58, 0x99, 0x8d, 0x8f, 0x48, 0x63, 0x28, 0x55, 0x10, 0x33, 0xd8, 0xc0, 0x75, 0x8e, 0xbd, 0xc7, 0x7b, 0x6d, 0x3f, 0x36, 0x11, 0x9b, 0x31, 0x00, 0xb2, 0xe4, 0x05, 0xfe, 0x7b, 0x2f, 0x57, 0xa6, 0xd4, 0x15, 0x7a, 0x5e, 0xe2, 0x9d, 0xcc, 0x3b, 0xc5, 0x17, 0x93, 0xb4, 0x19, 0x74, 0x20, 0xbd, 0x88, 0xdc, 0x46, 0xe0, 0x7b, 0x83, 0xe4, 0x35, 0x12, 0xb2, 0x0f, 0xdf, 0x7d, 0x4d, 0x34, 0x70, 0xba, 0xb7, 0x4f, 0xd1, 0x25, 0x6b, 0x3d, 0xcc, 0xe8, 0x23, 0x35, 0x3b, 0x12, 0x38, 0x3a, 0x1c, 0x2a, 0xbe, 0x24, 0x13, 0x06, 0xc4, 0x46, 0x11, 0x16, 0xa4, 0xec, 0xa1, 0xd9, 0xa7, 0x93, 0x5f, 0x81, 0x21, 0x7a, 0x38, 0x90, 0x1d, 0x14, 0xc7, 0xcc, 0xc7, 0xec, 0xce, 0xfd, 0x8d, 0x76, 0xd5, 0xdb, 0x6a, 0xf7, 0xf0, 0x0b, 0x6f, 0x93, 0xfe, 0x7c, 0x80, 0x0c, 0x25, 0xa3, 0xa5, 0xce, 0x7e, 0xfa, 0x65, 0x12, 0x31, 0xbe, 0xf3, 0x11, 0x67, 0x0b, 0xf9, 0xb9, 0x34, 0x17, 0x88, 0x43, 0xff, 0xcc, 0xe2, 0x25, 0x1d, 0x1e, 0x99, 0xf2, 0x20, 0xf8, 0xb4, 0xb0, 0x2a, 0xc9, 0x90, 0x13, 0xc0, 0x28, 0x21, 0xac, 0xbb, 0xf7, 0xd3, 0x72, 0x1e, 0xc8, 0xba, 0x96, 0xe1, 0x4a, 0xfa, 0xfc, 0xbe, 0xc8, 0x37, 0x32, 0xe6, 0x98, 0xd9, 0x88, 0x16, 0xdd, 0xbd, 0x0e, 0x56, 0xa7, 0x26, 0xf5, 0xcb, 0x49, 0x46, 0xbc, 0xc9, 0x2f, 0x52, 0x98, 0x9b, 0xa6, 0xc6, 0x9a, 0xd2, 0x28, 0x71, 0x1a, 0x6f, 0x4c, 0xfd, 0x37, 0x67, 0xab, 0x7b, 0x6b, 0x0e, 0x1d, 0x7e, 0x26, 0xbb, 0x6b, 0x03, 0xdf, 0xd3, 0x64, 0x98, 0x5c, 0x95, 0xab, 0x7e, 0x2e, 0xc9, 0xa4, 0x61, 0x0c, 0x83, 0x33, 0x0e, 0xc4, 0x1b, 0x25, 0x99, 0x55, 0x2d, 0x5f, 0x3e, 0x93, 0x1f, 0x2c, 0xd1, 0x0d, 0x6f, 0x4b, 0x36, 0x62, 0x47, 0xd1, 0x70, 0xf0, 0x53, 0xae, 0x50, 0x7e, 0x8d, 0xad, 0x53, 0xda, 0x71, 0x8e, 0xcd, 0xb6, 0xea, 0x5b, 0x16, 0xf8, 0xb3, 0x80, 0x4f, 0xec, 0x37, 0x11, 0x82, 0x8c, 0xd2, 0x22, 0x7c, 0xe3, 0x12, 0xfb, 0x20, 0x05, 0x06, 0x49, 0x90, 0x92, 0x85, 0x3e, 0xbf, 0x7b, 0x90, 0x41, 0xa7, 0x0a, 0x88, 0xda, 0x6d, 0x9e, 0x31, 0x17, 0x58, 0x3b, 0x5d, 0x02, 0x31, 0x6c, 0xbc, 0x41, 0x4a, 0x09, 0xd3, 0x2e, 0x7c, 0xaf, 0xf9, 0xf4, 0x23, 0x45, 0x5e, 0x44, 0x42, 0xf9, 0xeb, 0xd3, 0xbc, 0x3d, 0xce, 0x38, 0x8d, 0x1c, 0x01, 0xd9, 0x92, 0x70, 0x0a, 0x83, 0x26, 0x21, 0x9d, 0xf3, 0x82, 0x75, 0xb6, 0x5e, 0x2f, 0x83, 0x99, 0xeb, 0x87, 0xd7, 0x47, 0x67, 0xc9, 0x16, 0x34, 0xf0, 0xae, 0x91, 0xab, 0xe2, 0x7d, 0x27, 0x6b, 0xa6, 0x3b, 0xcb, 0x8f, 0xf9, 0x8e, 0x31, 0x36, 0x67, 0x93, 0x6d, 0x6b, 0x44, 0xd1, 0xe7, 0x40, 0x85, 0xd6, 0x30, 0x55, 0xcb, 0x94, 0x4c, 0xd3, 0xc0, 0xf5, 0xe8, 0x4c, 0x55, 0xae, 0x70, 0xb1, 0x36, 0x2a, 0x6f, 0x13, 0x13, 0x34, 0x85, 0x68, 0x38, 0x3b, 0x82, 0x02, 0x3b, 0x19, 0xfb, 0xa5, 0x8d, 0x8d, 0xdd, 0xbd, 0xab, 0x9c, 0xfd, 0x28, 0x8e, 0x1c, 0x76, 0xe0, 0x68, 0xca, 0x9e, 0x88, 0x0b, 0xa7, 0xfd, 0x0e, 0x90, 0x6c, 0x89, 0x4d, 0x59, 0x42, 0x24, 0xcd, 0xe0, 0x06, 0xec, 0x0e, 0x47, 0x9a, 0xdc, 0xc6, 0x68, 0x67, 0x23, 0xb1, 0xe9, 0xa5, 0x66, 0x97, 0x39, 0x7f, 0xda, 0x06, 0xbe, 0x0c, 0x89, 0x5d, 0xac, 0x6a, 0xeb, 0xc7, 0x4c, 0xed, 0x79, 0x8d, 0x62, 0x0c, 0xd5, 0x3b, 0x4e, 0xab, 0x73, 0x19, 0xdd, 0x98, 0x6e, 0x96, 0x6f, 0xad, 0xcb, 0xa4, 0xe8, 0xa8, 0x36, 0x7e, 0xdc, 0x48, 0xbc, 0xf4, 0xc4, 0x56, 0x96, 0x62, 0xee, 0x12, 0x88, 0x3c, 0x21, 0x60, 0x24, 0xb2, 0xbd, 0xc3, 0xb3, 0x6c, 0x9e, 0x2f, 0x72, 0xb2, 0xbd, 0xfc, 0x29, 0x0c, 0x63, 0x01, 0x42, 0x37, 0xa5, 0x1f, 0xc3, 0x29, 0x69, 0xca, 0x6f, 0x8a, 0x5f, 0x9b, 0x29, 0x91, 0x47, 0x8c, 0x33, 0x32, 0xe3, 0x56, 0x73, 0x7b, 0x42, 0x36, 0x69, 0x78, 0x4d, 0xe4, 0xd8, 0xde, 0xa5, 0x3e, 0x55, 0xde, 0xb9, 0x44, 0xf4, 0xd2, 0x33, 0x53, 0x4b, 0x96, 0x1f, 0xa7, 0xf5, 0xde, 0x5e, 0x57, 0xd0, 0xd5, 0x8e, 0xa2, 0xc4, 0x7e, 0x4f, 0x2d, 0x61, 0xbe, 0x3f, 0x3b, 0x4a, 0xb6, 0x50, 0x24, 0xf2, 0xec, 0xc9, 0xde, 0xfe, 0xb6, 0x9f, 0x59, 0xa2, 0x0c, 0x20, 0x94, 0x9b, 0x77, 0x1c, 0x92, 0xf5, 0x2e, 0xe0, 0xbc, 0x9c, 0xa6, 0xa2, 0x71, 0xb8, 0xa1, 0x67, 0xd9, 0x75, 0x3e, 0x45, 0x8d, 0x0e, 0x02, 0xf2, 0xe0, 0xc1, 0x93, 0xcc, 0x4c, 0x32, 0xd8, 0x71, 0x97, 0xd1, 0xcb, 0xb3, 0x37, 0x26, 0x92, 0xd5, 0x94, 0x91, 0x37, 0x6d, 0x68, 0xa0, 0x91, 0xbd, 0xf3, 0x67, 0x2d, 0x51, 0x82, 0xb4, 0xc7, 0x13, 0x84, 0x75, 0x71, 0x05, 0x0d, 0xe9, 0x18, 0x03, 0x17, 0xf8, 0x19, 0x0e, 0x65, 0xb3, 0x84, 0xf5, 0xda, 0xd8, 0x31, 0x32, 0x50, 0xba, 0x07, 0x28, 0x73, 0xda, 0x80, 0x20, 0x29, 0x48, 0xb8, 0xa7, 0x6e, 0x50, 0xbb, 0xfb, 0xbe, 0x26, 0xd4, 0x1e, 0x35, 0xf4, 0x94, 0x13, 0xe1, 0x18, 0xcd, 0x25, 0x3e, 0xe4, 0xbf, 0xc8, 0xc9, 0xd4, 0x66, 0x9f, 0x72, 0x3c, 0x38, 0x7b, 0xf1, 0x1a, 0x4e, 0x58, 0x51, 0x50, 0x7e, 0x9b, 0xea, 0xe3, 0x81, 0x1c, 0x37, 0xaf, 0xef, 0xa8, 0x10, 0x22, 0x29, 0xa4, 0xfe, 0x46, 0xf6, 0xfc, 0x18, 0xe6, 0x49, 0x9e, 0x9e, 0x8f, 0xe2, 0xe8, 0x21, 0xa5, 0xd8, 0xa6, 0x70, 0x84, 0xbe, 0x62, 0x15, 0xfc, 0xe6, 0x88, 0xa6, 0xe5, 0xac, 0x63, 0xb2, 0x63, 0x13, 0x3c, 0x81, 0x47, 0xdc, 0x8f, 0x43, 0x95, 0xc4, 0xf1, 0xe2, 0x9e, 0x6c, 0x50, 0x2a, 0xbb, 0xd7, 0x7f, 0x16, 0x0f, 0x8c, 0x79, 0xd4, 0x88, 0x05, 0xfe, 0x22, 0x0e, 0x78, 0x8f, 0xcf, 0xe9, 0x55, 0x20, 0xb1, 0x6b, 0xab, 0x0c, 0x39, 0x5d, 0x0d, 0xc9, 0xe2, 0x09, 0x6d, 0x5c, 0x68, 0xd1, 0x20, 0x6d, 0x90, 0x52, 0x02, 0x90, 0xf3, 0xd5, 0xb9, 0x9b, 0xec, 0xd8, 0x31, 0xd7, 0x65, 0xeb, 0x98, 0x83, 0x94, 0xc9, 0xe9, 0x9b, 0x1f, 0x94, 0x5b, 0xc6, 0x0c, 0x78, 0x72, 0x44, 0xfd, 0xc1, 0x66, 0x87, 0x19, 0x8b, 0x02, 0x99, 0x6a, 0xb9, 0x64, 0x7d, 0xb2, 0x9b, 0x88, 0xc2, 0xe1, 0xdb, 0x2e, 0x99, 0x11, 0x5b, 0xbd, 0xf1, 0x82, 0x7e, 0xd7, 0x8d, 0x35, 0x95, 0x6c, 0xc9, 0xfc, 0xf1, 0x47, 0xfe, 0x35, 0xf3, 0x58, 0xf3, 0xaf, 0xe6, 0x6a, 0xb5, 0x98, 0x98, 0xf3, 0x2c, 0x9a, 0x3f, 0x6e, 0x24, 0x1c, 0x6c, 0xbd, 0x90, 0xfd, 0x5c, 0x63, 0x76, 0xe6, 0x5a, 0xaf, 0xa3, 0xbe, 0xc5, 0xd6, 0xae, 0xf1, 0xec, 0xb4, 0x76, 0xc0, 0xe5, 0xe7, 0x99, 0xc3, 0x63, 0x5f, 0x76, 0xa0, 0xea, 0xbd, 0x37, 0xe4, 0xf9, 0xe3, 0xdb, 0x3f, 0xfd, 0xf8, 0xfc, 0xd1, 0xe3, 0xf4, 0x59, 0x3a, 0x7d, 0x7a, 0xf1, 0x79, 0xfa, 0x64, 0xf6, 0xe4, 0xd9, 0xf3, 0xfd, 0xcf, 0x9f, 0xa4, 0xcf, 0x1e, 0x5f, 0xa4, 0x4f, 0xf7, 0xb2, 0xbd, 0xe7, 0x17, 0xfb, 0x8f, 0x66, 0xb3, 0x8b, 0xec, 0xf3, 0xd9, 0xb3, 0x74, 0x63, 0x44, 0xe6, 0x97, 0x4e, 0x3d, 0x64, 0xb5, 0x1a, 0x78, 0x4b, 0x93, 0xf1, 0x37, 0x2f, 0x87, 0x7b, 0xc9, 0x55, 0x76, 0xab, 0x17, 0x8c, 0x3d, 0x9a, 0x36, 0xeb, 0x2e, 0x93, 0xbc, 0xea, 0xfe, 0xc5, 0x6a, 0xa1, 0x20, 0xb2, 0xa6, 0xe1, 0x2b, 0x21, 0x0d, 0x98, 0x77, 0x51, 0xb7, 0x95, 0xf3, 0xea, 0xac, 0xff, 0xf0, 0x40, 0x7d, 0xf6, 0x58, 0x57, 0xf7, 0xf2, 0x1f, 0x9b, 0x77, 0xe6, 0x6f, 0xd3, 0xa9, 0x51, 0x92, 0xcc, 0x9e, 0xc8, 0x83, 0x63, 0x63, 0xda, 0x1a, 0x36, 0x3d, 0x48, 0xe4, 0x2f, 0xf0, 0x12, 0x7b, 0x63, 0x7c, 0x5d, 0x95, 0xab, 0xe5, 0x69, 0x39, 0xcf, 0xa7, 0x77, 0xeb, 0x86, 0xf3, 0x1f, 0x6b, 0xfd, 0xe2, 0x90, 0x59, 0x78, 0x5e, 0x67, 0xff, 0x42, 0xd3, 0xca, 0x63, 0xc7, 0x0f, 0xb0, 0xad, 0x86, 0xd3, 0x7c, 0x79, 0x85, 0x38, 0xef, 0x0b, 0xca, 0xf2, 0x43, 0x68, 0x86, 0x7f, 0x10, 0xb7, 0xa9, 0xc6, 0x72, 0x23, 0x6b, 0x39, 0x4f, 0x7d, 0x5b, 0x34, 0xae, 0x5c, 0x4b, 0xe0, 0xd4, 0x4d, 0x25, 0x99, 0xa5, 0x79, 0xe0, 0xc7, 0x73, 0x1f, 0xe2, 0xdb, 0xae, 0xda, 0x36, 0x3b, 0x2f, 0xe4, 0x57, 0xa3, 0xe4, 0x8c, 0xe2, 0xe4, 0xab, 0x25, 0x9b, 0x17, 0xe4, 0xcf, 0xe7, 0xdf, 0x75, 0x2f, 0x1a, 0x26, 0x2f, 0x14, 0xc3, 0x85, 0x78, 0x66, 0x47, 0xdf, 0x9f, 0x1d, 0x1f, 0x74, 0xf7, 0x89, 0x8a, 0x8d, 0xea, 0x83, 0x9d, 0x1d, 0x0a, 0xf9, 0x5c, 0xa5, 0xb7, 0xb7, 0xa3, 0x3a, 0xdb, 0x99, 0x95, 0xd3, 0x7a, 0xa7, 0xae, 0xe7, 0xba, 0x1b, 0xed, 0xda, 0xbf, 0x4f, 0xe0, 0xcd, 0x2d, 0x17, 0xc4, 0xb6, 0xb2, 0xd9, 0xb0, 0xae, 0x83, 0xdc, 0xa0, 0xf1, 0x2b, 0xcd, 0x3c, 0x38, 0x94, 0x9c, 0x34, 0x92, 0x73, 0x43, 0xb3, 0xbb, 0xe3, 0xf1, 0x37, 0x89, 0xbe, 0x4c, 0xdb, 0x6b, 0x43, 0xe2, 0x36, 0x2f, 0x67, 0x10, 0x51, 0xc3, 0x52, 0x61, 0xd8, 0x7f, 0xf0, 0x1d, 0x3a, 0x50, 0xa7, 0x4b, 0xfe, 0x43, 0x6a, 0x57, 0xf2, 0x66, 0x6d, 0x22, 0xdf, 0xd3, 0x8e, 0x03, 0xc4, 0x2e, 0x22, 0x1e, 0xff, 0x57, 0x27, 0x58, 0x9a, 0xb8, 0x27, 0x9d, 0x47, 0xa8, 0x5b, 0x9c, 0x6e, 0xa8, 0xf7, 0xb2, 0xac, 0x8c, 0xf0, 0x58, 0xd4, 0x31, 0x2f, 0xa8, 0xde, 0xf2, 0x9a, 0xd5, 0xbe, 0x9a, 0x73, 0x11, 0xcd, 0x30, 0x85, 0x37, 0xb8, 0x39, 0x46, 0xca, 0x61, 0x1c, 0xf9, 0x87, 0x15, 0x8d, 0x6f, 0xe9, 0xe1, 0xf5, 0x79, 0xd1, 0x56, 0x85, 0x0b, 0x7e, 0x90, 0x38, 0x36, 0x93, 0x95, 0xc2, 0xb2, 0xc0, 0x42, 0xa0, 0xdc, 0x7f, 0x12, 0x13, 0xd0, 0x21, 0xaa, 0xaa, 0xf4, 0x94, 0xda, 0xe1, 0xb7, 0x64, 0x5c, 0x1a, 0xe9, 0x98, 0x5f, 0x6a, 0x78, 0xbd, 0x27, 0xc7, 0x0e, 0xa2, 0xab, 0xa1, 0xdc, 0x65, 0x29, 0x07, 0x87, 0x50, 0x40, 0x0a, 0x1b, 0xa5, 0x96, 0x48, 0x76, 0x26, 0xa7, 0x03, 0xb5, 0xaa, 0xe0, 0x83, 0x9b, 0x80, 0x9a, 0x1f, 0xf7, 0x38, 0xd2, 0xa8, 0xf4, 0x5e, 0xd2, 0xf0, 0xe2, 0xbe, 0xf0, 0x12, 0xdb, 0xa0, 0x95, 0x91, 0x9b, 0xc1, 0x3c, 0xd3, 0xb5, 0xf6, 0x28, 0xe7, 0xd6, 0xea, 0x7c, 0xb1, 0x12, 0xd7, 0xee, 0x7a, 0x34, 0xf5, 0x5e, 0xf7, 0x36, 0xa7, 0xa2, 0xea, 0x94, 0xf2, 0xfa, 0x63, 0xa2, 0xbd, 0xf4, 0x82, 0xb4, 0x18, 0x30, 0x94, 0x79, 0x8d, 0x4d, 0x9b, 0xd4, 0x4a, 0x25, 0x52, 0x08, 0x0c, 0x07, 0x32, 0x62, 0x0f, 0x19, 0xe7, 0x28, 0xa5, 0x9f, 0x97, 0x4e, 0xc1, 0x32, 0x84, 0x67, 0x78, 0x21, 0x55, 0x23, 0x8e, 0x02, 0xbe, 0xcd, 0x35, 0x49, 0x9c, 0x44, 0xc8, 0xb5, 0x75, 0x9c, 0xed, 0xc5, 0x3f, 0x23, 0xf1, 0x35, 0xd1, 0x18, 0xb9, 0xe3, 0x67, 0x38, 0xbf, 0x98, 0x6b, 0x48, 0xb2, 0xf2, 0xb9, 0xd0, 0x31, 0xa7, 0x12, 0x5e, 0x29, 0xfa, 0xe4, 0x22, 0x03, 0xf5, 0x6c, 0xd7, 0xa5, 0xa4, 0x6c, 0x62, 0xa2, 0x98, 0x27, 0xcf, 0xb1, 0x4b, 0xea, 0xb6, 0xa0, 0xb3, 0x65, 0x8c, 0xa4, 0xb5, 0xcb, 0xd5, 0xaf, 0xc3, 0x68, 0xa5, 0xdb, 0xcc, 0x98, 0xf5, 0x1a, 0xd4, 0x3d, 0xd0, 0x44, 0xaa, 0x4c, 0xbf, 0x50, 0x94, 0xdd, 0x49, 0xe9, 0x3c, 0x62, 0xf9, 0xa8, 0x9a, 0xdb, 0xef, 0x4d, 0x40, 0x73, 0xfc, 0xed, 0x29, 0xf7, 0x64, 0x6f, 0x66, 0x89, 0x7b, 0x24, 0x71, 0x76, 0xa6, 0x3b, 0x46, 0xf2, 0x37, 0x50, 0xc5, 0x46, 0xcd, 0x53, 0x3f, 0xc0, 0x9c, 0xbe, 0xd8, 0x8e, 0xf9, 0x89, 0xdd, 0x48, 0x4a, 0x51, 0xb8, 0xa7, 0xf3, 0xb2, 0xd6, 0xf8, 0x0b, 0x94, 0x0b, 0xae, 0xbb, 0x35, 0xdc, 0xe0, 0x7b, 0xf9, 0x01, 0x1f, 0x4d, 0x67, 0x38, 0x7e, 0x6a, 0x20, 0x53, 0xbc, 0x70, 0xca, 0x86, 0xd8, 0xaa, 0xae, 0x58, 0x18, 0xda, 0x86, 0xb5, 0x26, 0x0f, 0x92, 0x1f, 0x7f, 0x1c, 0x24, 0xc6, 0x48, 0xee, 0x0c, 0xf7, 0x63, 0x63, 0x7e, 0x6a, 0x68, 0xf1, 0x47, 0x2e, 0x58, 0xfa, 0xf1, 0x1a, 0x46, 0x20, 0x1c, 0xcc, 0xf5, 0x1c, 0xd1, 0x23, 0x56, 0xb3, 0xdb, 0x5e, 0x39, 0xae, 0x87, 0x5e, 0x93, 0x9a, 0xe5, 0xec, 0x76, 0x4e, 0xc5, 0x34, 0x07, 0xb6, 0x5a, 0x14, 0x62, 0x9d, 0x30, 0x71, 0xd2, 0xbd, 0x27, 0x39, 0xb0, 0xf9, 0xdb, 0x4d, 0x47, 0x48, 0xb1, 0xbd, 0xab, 0x32, 0x96, 0xf4, 0x24, 0xaa, 0x72, 0x4f, 0x4c, 0x69, 0xf5, 0x30, 0x99, 0x9b, 0x09, 0x87, 0x4b, 0xc1, 0x4c, 0x4f, 0xe0, 0x5c, 0xe7, 0x32, 0xb0, 0xae, 0x18, 0x77, 0xa6, 0x24, 0x6a, 0xe3, 0x96, 0x57, 0x77, 0x35, 0x32, 0x39, 0x64, 0x36, 0xc1, 0xed, 0xe9, 0x4d, 0x30, 0x96, 0xbd, 0x47, 0x51, 0x0f, 0xf8, 0x00, 0x98, 0x5f, 0x8b, 0x75, 0x9a, 0x19, 0x6d, 0x0e, 0x37, 0x6d, 0x2c, 0x4c, 0xf2, 0x65, 0x82, 0x5c, 0x7a, 0x9b, 0x9c, 0xed, 0x92, 0x0f, 0x83, 0x4f, 0x7a, 0x49, 0x71, 0xa5, 0x9f, 0xee, 0xe8, 0x8a, 0xdb, 0x51, 0x9d, 0xaa, 0x51, 0x7c, 0xf9, 0xbe, 0xf0, 0x9f, 0x88, 0xc3, 0x89, 0xd2, 0x22, 0xc9, 0xf4, 0xd0, 0x01, 0xc8, 0x1b, 0xe2, 0xc2, 0x43, 0xc3, 0x21, 0xe1, 0x8c, 0x2c, 0x19, 0x1b, 0x04, 0x24, 0x41, 0x99, 0x07, 0x77, 0xa8, 0x04, 0x5b, 0xce, 0x03, 0x7e, 0x2b, 0xa9, 0x80, 0x5a, 0x6c, 0x8d, 0x0b, 0x0e, 0x40, 0x8a, 0x9b, 0x42, 0x00, 0x05, 0xc6, 0x25, 0x79, 0x65, 0xa6, 0x94, 0xc3, 0x20, 0xe9, 0x32, 0x52, 0x53, 0x16, 0xb1, 0x02, 0x21, 0x03, 0x03, 0x1d, 0x08, 0xf3, 0xf9, 0x22, 0xd9, 0xe8, 0xd7, 0x84, 0x36, 0xba, 0x6f, 0x50, 0x06, 0xa4, 0x73, 0x71, 0x4a, 0xbd, 0x3c, 0x4d, 0x64, 0x4b, 0x32, 0xe9, 0x86, 0x7f, 0xe5, 0x84, 0x36, 0x2e, 0xe9, 0x12, 0xf9, 0xba, 0xcd, 0x09, 0xc2, 0x75, 0x24, 0xb2, 0xef, 0xb2, 0xac, 0x3c, 0xfa, 0x70, 0x79, 0x4a, 0x39, 0xb9, 0xaf, 0x49, 0x7a, 0xb1, 0xb4, 0xf3, 0x9e, 0x0e, 0x42, 0xf1, 0xfa, 0x36, 0x2a, 0x4e, 0xf0, 0x3d, 0x71, 0x49, 0xab, 0xe8, 0xb0, 0x37, 0x7a, 0x39, 0x27, 0x9c, 0x0e, 0xad, 0x75, 0x21, 0x95, 0x28, 0xd8, 0x9d, 0xbd, 0x6d, 0x5b, 0x1d, 0x49, 0x60, 0x1b, 0x9c, 0x99, 0x2d, 0x7a, 0xc2, 0xc6, 0x55, 0xc9, 0xb9, 0x44, 0x1b, 0x07, 0x28, 0xdc, 0x93, 0xdb, 0x48, 0x6b, 0x54, 0x18, 0x84, 0xce, 0x70, 0x94, 0xa9, 0xf5, 0xcd, 0xc9, 0xdb, 0xc3, 0x76, 0x06, 0x2e, 0xfd, 0x24, 0xe6, 0x7c, 0x35, 0xec, 0xea, 0x8d, 0xe1, 0x30, 0x4c, 0x03, 0x69, 0xa0, 0xcd, 0x31, 0x6d, 0x99, 0x69, 0x5d, 0x66, 0xcd, 0xf2, 0x66, 0x95, 0xcf, 0xb6, 0xb6, 0x41, 0x23, 0x28, 0x37, 0x19, 0x52, 0x8d, 0x13, 0x9b, 0x86, 0x75, 0xb2, 0xc5, 0x0a, 0x7a, 0x95, 0x35, 0xab, 0xaa, 0x60, 0x87, 0x39, 0xe6, 0xde, 0x35, 0xb2, 0x8c, 0x74, 0x66, 0x51, 0xe7, 0x3b, 0x07, 0x04, 0x33, 0x87, 0x53, 0x98, 0x78, 0x40, 0x63, 0xee, 0x9e, 0xd8, 0xbc, 0x0f, 0x3a, 0x78, 0x5a, 0x4b, 0x20, 0xbf, 0xfc, 0x9d, 0x48, 0x5e, 0x9e, 0x9e, 0xbe, 0x7e, 0x79, 0xfe, 0xd2, 0xae, 0x8d, 0x04, 0x34, 0x31, 0x17, 0xd2, 0x90, 0x0d, 0x1f, 0x82, 0xd6, 0x84, 0x27, 0x37, 0x7f, 0xf7, 0x7e, 0x7c, 0x78, 0xd6, 0x3d, 0xd8, 0xd3, 0xb3, 0x13, 0x00, 0x12, 0xfd, 0xee, 0xc7, 0x97, 0xcb, 0xe5, 0x5c, 0x83, 0x82, 0xaf, 0xd3, 0x26, 0xdd, 0x0c, 0x6e, 0xf5, 0xfe, 0x36, 0xe6, 0x77, 0x63, 0xe7, 0x77, 0x21, 0x42, 0x8e, 0x4c, 0xfd, 0xe4, 0x03, 0x0e, 0xb4, 0x9a, 0x6a, 0xfa, 0xad, 0xdd, 0x0d, 0xda, 0x00, 0xca, 0x9e, 0xed, 0x5f, 0x48, 0xe9, 0x38, 0x99, 0x26, 0x92, 0xe9, 0x66, 0xcd, 0x8d, 0x91, 0x9d, 0x4d, 0x57, 0x8d, 0x92, 0x3c, 0xd1, 0x17, 0xaa, 0xb8, 0xbb, 0xfb, 0x12, 0x1c, 0x8f, 0x0b, 0xa3, 0x30, 0x17, 0x20, 0x10, 0x01, 0x43, 0x68, 0x94, 0x22, 0x3d, 0x92, 0xd9, 0x32, 0x17, 0x8b, 0xd0, 0xd4, 0x2c, 0xe3, 0xb0, 0x0a, 0x81, 0x0a, 0xf0, 0x94, 0x82, 0x0d, 0xf9, 0xad, 0xb9, 0x8d, 0xc3, 0xe4, 0x50, 0xaa, 0xdd, 0x68, 0xe1, 0xe6, 0x07, 0xc1, 0x43, 0x8d, 0x35, 0x1f, 0x84, 0xdd, 0xc7, 0x79, 0x85, 0x07, 0xb4, 0xb1, 0xd1, 0x15, 0x01, 0x5c, 0xda, 0x6a, 0x1e, 0xc2, 0xb4, 0xb1, 0xe9, 0x64, 0x3d, 0x6d, 0x44, 0x92, 0x9e, 0x86, 0xe9, 0x25, 0xc8, 0xcb, 0x3c, 0x6a, 0xb4, 0x6b, 0x63, 0x34, 0xe1, 0x5f, 0x3b, 0x7b, 0xa3, 0xdd, 0x8d, 0x70, 0xf2, 0xb8, 0x2c, 0x04, 0x92, 0x62, 0xa3, 0x6a, 0xe0, 0x86, 0x4d, 0x59, 0xde, 0x3b, 0x3f, 0x66, 0x61, 0x46, 0x3f, 0x5d, 0x9a, 0xf1, 0xa3, 0x53, 0x19, 0x9e, 0x04, 0x59, 0x20, 0xc8, 0xdc, 0xad, 0x94, 0x29, 0x1a, 0x9e, 0x58, 0x94, 0x37, 0x58, 0x89, 0x21, 0xb5, 0xf9, 0xbc, 0x85, 0x66, 0xb3, 0x11, 0xdf, 0xe6, 0x82, 0x80, 0xa3, 0xb2, 0xee, 0x6e, 0x47, 0x23, 0xd7, 0xaa, 0x7c, 0xfa, 0x1a, 0x9e, 0x4d, 0x79, 0x25, 0x2b, 0xd2, 0x52, 0x82, 0x0f, 0x26, 0x60, 0xb8, 0x5c, 0xc0, 0xf7, 0xe6, 0x7e, 0x66, 0xc6, 0x50, 0xd3, 0x43, 0x86, 0x18, 0x04, 0x5a, 0xe9, 0x0b, 0xae, 0x55, 0x0f, 0x6c, 0xf9, 0xb7, 0xe9, 0x6d, 0xbe, 0x58, 0x2d, 0xe8, 0x63, 0xa0, 0x6d, 0x79, 0x4c, 0xe2, 0x09, 0xe4, 0x55, 0xe4, 0xf4, 0x14, 0x22, 0xf2, 0xcd, 0x3a, 0xf1, 0x2c, 0xfa, 0x98, 0x90, 0x31, 0x22, 0x79, 0xe4, 0x96, 0x47, 0xca, 0x02, 0x05, 0x1c, 0xea, 0x8e, 0x37, 0xc0, 0xe8, 0x07, 0x29, 0x72, 0x0e, 0xea, 0xd2, 0x26, 0xec, 0x44, 0xd8, 0x39, 0x83, 0x25, 0x88, 0x0e, 0xe7, 0xe5, 0xab, 0x66, 0x55, 0x5e, 0xce, 0xec, 0xbd, 0x81, 0xfe, 0x98, 0x17, 0x2b, 0xb3, 0xcf, 0xec, 0x4b, 0xe6, 0x20, 0x04, 0x7e, 0x15, 0x78, 0x08, 0x29, 0xab, 0x7e, 0x4c, 0xc5, 0x12, 0x9a, 0x82, 0xfa, 0x6c, 0xf4, 0x68, 0x7f, 0xb4, 0x3b, 0x68, 0x19, 0xf4, 0x82, 0x29, 0x61, 0x6e, 0xd7, 0x34, 0x5f, 0xd8, 0x7a, 0xd3, 0xd1, 0xbf, 0xcc, 0x71, 0x43, 0x19, 0xe1, 0x8b, 0xf4, 0x96, 0x8e, 0x2f, 0x7a, 0xac, 0x65, 0xf2, 0xe2, 0x9b, 0x93, 0xf1, 0xf9, 0xde, 0xc1, 0xe9, 0xc9, 0x99, 0xf9, 0x2f, 0xfe, 0xbe, 0x4f, 0x7f, 0xdf, 0x0f, 0xac, 0xca, 0x37, 0x92, 0x41, 0xab, 0xc5, 0x3a, 0xa4, 0xa1, 0x90, 0x46, 0xc3, 0xbb, 0x99, 0x78, 0x03, 0x41, 0x2f, 0x27, 0x36, 0x38, 0xb5, 0x15, 0x8d, 0xdd, 0x23, 0xf6, 0x3e, 0xa5, 0x49, 0x76, 0xa3, 0x24, 0x4c, 0xe4, 0xcb, 0x1b, 0xd5, 0xa6, 0xa4, 0x16, 0x5e, 0xab, 0xec, 0xbb, 0xbe, 0x6e, 0xae, 0x63, 0x96, 0xfa, 0x1c, 0xc5, 0xab, 0xa3, 0xdc, 0xb0, 0xf6, 0xaf, 0xa6, 0x73, 0xa3, 0xdd, 0x67, 0xc8, 0x25, 0x99, 0x65, 0x1c, 0x60, 0xc1, 0x4f, 0x62, 0x86, 0x89, 0xb9, 0x7e, 0x52, 0xb2, 0x10, 0x24, 0x18, 0x12, 0x45, 0x6a, 0x54, 0xc7, 0xcc, 0xc6, 0xcc, 0x31, 0x37, 0x9a, 0x38, 0x6f, 0x47, 0x91, 0x05, 0x15, 0x02, 0x8c, 0x23, 0xe7, 0x3b, 0xb1, 0xa8, 0x48, 0x9f, 0xca, 0xed, 0xdf, 0x9d, 0x9c, 0x27, 0xe9, 0xc5, 0x85, 0x62, 0x03, 0xa0, 0x2c, 0x01, 0x1a, 0xeb, 0xce, 0x92, 0x25, 0x59, 0xda, 0xc4, 0x52, 0x37, 0x44, 0x1f, 0x39, 0x3f, 0x1e, 0xef, 0xc0, 0x85, 0xc5, 0x49, 0x70, 0xe3, 0x77, 0x47, 0x83, 0x96, 0xaf, 0xda, 0x4f, 0x7d, 0xd9, 0x86, 0xa4, 0x8c, 0x2b, 0x14, 0xa9, 0x27, 0x0b, 0x1d, 0xe2, 0x0c, 0x92, 0xea, 0xe8, 0x48, 0x37, 0xa4, 0x1a, 0x6c, 0x83, 0x8e, 0x76, 0x23, 0xd1, 0xa8, 0x29, 0xd9, 0xc5, 0x8b, 0x65, 0x73, 0x17, 0xd6, 0x8b, 0x92, 0x6f, 0x03, 0x38, 0x2c, 0x50, 0x3a, 0x36, 0x60, 0x96, 0x60, 0x59, 0xb4, 0xa4, 0x8d, 0x11, 0x0f, 0xbb, 0xbf, 0x41, 0xa3, 0xd2, 0xa0, 0xe6, 0xef, 0x18, 0x93, 0x88, 0x76, 0x92, 0xc5, 0xd2, 0xfb, 0xf9, 0x43, 0xde, 0xe0, 0x89, 0x1d, 0xde, 0x4c, 0xcc, 0xd6, 0xa9, 0x29, 0x75, 0x80, 0xc1, 0x94, 0x55, 0x7e, 0x89, 0x3c, 0x81, 0x6e, 0xe9, 0x98, 0x9b, 0x48, 0xe0, 0x99, 0x82, 0x32, 0x56, 0x37, 0x1b, 0x9e, 0x2b, 0xa1, 0x09, 0x12, 0xf4, 0x29, 0x6d, 0xb4, 0x52, 0x93, 0x46, 0xa7, 0x03, 0xfe, 0xd3, 0x44, 0xf4, 0x78, 0x56, 0xf6, 0xcc, 0xea, 0x20, 0x77, 0x5c, 0x10, 0x48, 0x4b, 0x7f, 0xf4, 0x2e, 0x11, 0x12, 0xce, 0x51, 0xa3, 0x0c, 0x9c, 0xc3, 0x46, 0xdd, 0xe1, 0x18, 0xb1, 0xcd, 0x70, 0x04, 0xad, 0xfa, 0xd8, 0xd8, 0xdb, 0x7f, 0x36, 0xda, 0x35, 0xff, 0x67, 0x0e, 0x45, 0xf4, 0x23, 0x82, 0x8b, 0x72, 0xb0, 0x40, 0xf6, 0xc9, 0xec, 0xb6, 0x4b, 0x92, 0x2c, 0x80, 0xca, 0xea, 0x72, 0x63, 0x6d, 0x0d, 0x6b, 0x4b, 0xa4, 0xe0, 0x20, 0xad, 0x38, 0x49, 0x67, 0xf2, 0x13, 0xbd, 0xe3, 0xd5, 0x6a, 0x1e, 0x49, 0xeb, 0xf3, 0xdc, 0xc8, 0xd0, 0xce, 0xe6, 0xd7, 0xe2, 0x44, 0xfe, 0x06, 0xbc, 0x89, 0xeb, 0xf8, 0x46, 0xad, 0xa4, 0xa8, 0xe7, 0x2d, 0x9f, 0xe0, 0x2b, 0x31, 0xd9, 0x88, 0x33, 0x0f, 0xcd, 0x65, 0x78, 0x51, 0x5e, 0x5c, 0xd4, 0x59, 0xd3, 0x15, 0x40, 0xaf, 0xe4, 0x91, 0x9d, 0x33, 0x02, 0x38, 0x24, 0x4e, 0xa5, 0x15, 0x37, 0x49, 0x1b, 0x96, 0x27, 0x91, 0x2c, 0x34, 0x66, 0x5b, 0x3c, 0xdc, 0x28, 0x52, 0x64, 0xe0, 0xff, 0x5e, 0x33, 0x44, 0xb8, 0x2a, 0x5e, 0xc1, 0x5e, 0xa8, 0xdc, 0x8a, 0x71, 0x5c, 0x44, 0xd2, 0x75, 0x51, 0xd9, 0xf4, 0x4a, 0x7c, 0xcc, 0x97, 0x4b, 0x98, 0x37, 0x8c, 0x70, 0x46, 0x64, 0x6b, 0x03, 0x68, 0x14, 0xc7, 0x25, 0x52, 0xd6, 0x6c, 0x41, 0xa3, 0x24, 0x4f, 0x45, 0xe6, 0x4f, 0xb2, 0x8b, 0x30, 0x08, 0xc4, 0x49, 0x8d, 0x3e, 0xac, 0x8d, 0xd4, 0xe8, 0xce, 0x00, 0x61, 0x53, 0xa4, 0xca, 0x62, 0x2e, 0x3c, 0xc0, 0x07, 0x29, 0xfe, 0x1b, 0x44, 0xee, 0xbf, 0x2b, 0xce, 0xb2, 0x7e, 0xb8, 0xf1, 0xd1, 0xff, 0x39, 0x74, 0x20, 0x44, 0x16, 0xe5, 0x87, 0xcb, 0x5d, 0x62, 0xc5, 0x43, 0xe6, 0x16, 0x0e, 0x5f, 0x99, 0xf3, 0xda, 0xa0, 0xa9, 0xb8, 0x54, 0x93, 0xb2, 0x53, 0x8e, 0x41, 0x76, 0x0f, 0x34, 0x09, 0xd2, 0x86, 0x76, 0x50, 0xf7, 0x1f, 0x88, 0x06, 0xc6, 0xa8, 0x64, 0xff, 0xa2, 0xac, 0x91, 0x6e, 0x47, 0x23, 0x55, 0x73, 0x7e, 0xcd, 0x89, 0x28, 0x8b, 0x3b, 0x79, 0x01, 0x95, 0x91, 0x15, 0x98, 0xa0, 0x24, 0x43, 0xeb, 0x60, 0x19, 0xed, 0x64, 0xd5, 0xfc, 0x0b, 0x63, 0x27, 0x15, 0xe8, 0x97, 0x60, 0xec, 0x3c, 0xa2, 0x9e, 0x32, 0x51, 0x03, 0xab, 0x73, 0xf8, 0x17, 0x63, 0x65, 0xbf, 0x50, 0x37, 0x45, 0x1f, 0x30, 0x80, 0x3a, 0x35, 0x50, 0x44, 0x41, 0x46, 0x18, 0xd1, 0x86, 0xc5, 0xa7, 0xd1, 0xad, 0x66, 0x58, 0x9d, 0x94, 0x74, 0x19, 0x02, 0x02, 0xed, 0xde, 0xf9, 0x0b, 0x02, 0xbd, 0xf1, 0xca, 0xbf, 0x6d, 0xed, 0xe4, 0x08, 0x51, 0xaa, 0x39, 0x8f, 0x50, 0x73, 0x62, 0xa5, 0x8c, 0xa1, 0x46, 0x43, 0x1e, 0xc8, 0xdc, 0xbc, 0x18, 0x72, 0x71, 0xb5, 0x3e, 0x4b, 0xc1, 0x34, 0xa0, 0xb6, 0x09, 0x39, 0xf2, 0x11, 0xb1, 0x19, 0xde, 0x48, 0x62, 0x05, 0xa9, 0xb5, 0xf4, 0xd9, 0x98, 0x1b, 0x9d, 0x7d, 0x91, 0xe4, 0x40, 0xe4, 0x8f, 0xc3, 0x41, 0xf6, 0xd1, 0xe8, 0xce, 0xc5, 0x00, 0x3f, 0xa5, 0x42, 0x54, 0x7b, 0xc9, 0xd8, 0xb7, 0xd1, 0x64, 0x1c, 0xb4, 0xc8, 0x22, 0xba, 0xac, 0xf7, 0xac, 0x3c, 0xea, 0xb9, 0x51, 0xde, 0x65, 0x8d, 0xa4, 0x8e, 0xf0, 0xe4, 0xb5, 0x36, 0x8b, 0xea, 0xbb, 0x8e, 0x2e, 0x3a, 0xc3, 0x11, 0x5c, 0x5c, 0xd6, 0xb4, 0xab, 0xf5, 0x25, 0x86, 0xcb, 0x18, 0x59, 0xf0, 0x85, 0x0e, 0xcc, 0x35, 0xd8, 0x50, 0xbf, 0x2c, 0xaf, 0x20, 0x9e, 0xba, 0xa0, 0xd3, 0x81, 0x9b, 0xa8, 0x99, 0xc5, 0x68, 0x92, 0x75, 0x5f, 0xbd, 0x90, 0x02, 0x1d, 0xe8, 0xa7, 0x43, 0x00, 0x04, 0x8d, 0xa2, 0xf7, 0xee, 0x6b, 0x9a, 0xb8, 0x12, 0xa9, 0x2a, 0xf4, 0xaa, 0x4a, 0x91, 0x42, 0x53, 0xcd, 0xd4, 0x33, 0xa2, 0x13, 0x35, 0x5c, 0x58, 0xec, 0xa2, 0x9b, 0x94, 0x28, 0xcd, 0x8e, 0x1f, 0xab, 0x7d, 0xf0, 0xf2, 0x1f, 0x87, 0x13, 0x47, 0xce, 0x0e, 0x3e, 0x27, 0x9a, 0xa6, 0x24, 0x0f, 0x81, 0xe6, 0x8d, 0x60, 0xd9, 0x6c, 0xbc, 0xe2, 0x52, 0x42, 0xa4, 0xb1, 0x9b, 0xc2, 0x5b, 0x78, 0x73, 0x55, 0xce, 0xb3, 0x58, 0x88, 0xc4, 0x2b, 0xf9, 0x25, 0x70, 0x17, 0xa4, 0xf5, 0x92, 0xb7, 0xf9, 0x9a, 0x32, 0x86, 0x5b, 0xa1, 0x13, 0xa3, 0xdf, 0x65, 0x29, 0x0a, 0x8e, 0x6c, 0xd2, 0xfc, 0xf5, 0x20, 0x48, 0x63, 0x37, 0xf7, 0x7c, 0x52, 0xd6, 0x96, 0x5e, 0x50, 0x58, 0x0b, 0x09, 0x72, 0x93, 0x56, 0xc4, 0x98, 0x05, 0x25, 0x4b, 0x01, 0x44, 0xfd, 0x9c, 0x41, 0xa8, 0x82, 0xdd, 0x7a, 0x87, 0x1c, 0xc5, 0xe8, 0x86, 0x4c, 0x8c, 0x02, 0x00, 0x37, 0x2d, 0xd1, 0x0e, 0x86, 0x14, 0xfc, 0xab, 0x2b, 0x82, 0xc2, 0x95, 0x8a, 0x75, 0x73, 0x0f, 0xaf, 0x20, 0xd3, 0xf3, 0x66, 0x95, 0x36, 0x0f, 0x4b, 0xd8, 0xee, 0xe3, 0x4d, 0xcc, 0x9c, 0xfc, 0x7c, 0xd4, 0x3e, 0xcc, 0x86, 0x9e, 0x28, 0xa2, 0x7f, 0x90, 0x2f, 0x70, 0xd7, 0xfe, 0xf3, 0x1e, 0xc6, 0x74, 0x4a, 0x88, 0x7e, 0x57, 0x6d, 0x48, 0x28, 0xaa, 0xc9, 0x15, 0x79, 0xa2, 0x95, 0x6f, 0x3c, 0xa6, 0x8a, 0xfb, 0xa3, 0x48, 0xa0, 0x9f, 0xa2, 0x63, 0x66, 0x3a, 0xf3, 0x3b, 0x37, 0xa0, 0x57, 0x32, 0xab, 0x19, 0xde, 0x1e, 0x5c, 0x9e, 0xfd, 0x42, 0x90, 0xb5, 0xb4, 0x31, 0x36, 0x2a, 0x38, 0x7f, 0xf3, 0x60, 0x43, 0xd1, 0x47, 0x2d, 0x9c, 0x92, 0x70, 0x11, 0x29, 0xda, 0xd2, 0xfa, 0x0f, 0xf5, 0xd5, 0xe3, 0xfa, 0x77, 0x87, 0x03, 0x14, 0xf7, 0xde, 0x17, 0xdf, 0xbd, 0x3c, 0x7e, 0x7f, 0xb8, 0xf7, 0x87, 0x04, 0xff, 0xda, 0xe7, 0x7f, 0xed, 0x6f, 0xc4, 0x8e, 0xcb, 0x30, 0xaa, 0xcd, 0x2f, 0x36, 0x93, 0xfa, 0x6e, 0x31, 0x29, 0xe7, 0xf6, 0xc0, 0x64, 0x2b, 0x34, 0x90, 0x36, 0x10, 0x29, 0x6e, 0x4b, 0xb7, 0xc5, 0x55, 0xde, 0x65, 0xd9, 0xb5, 0x24, 0x1d, 0x2a, 0xbb, 0xa1, 0x08, 0x9e, 0x5f, 0x4b, 0xdc, 0x50, 0xa5, 0xb5, 0xf2, 0x30, 0x89, 0xe5, 0xf5, 0x25, 0x82, 0x92, 0x50, 0xd2, 0x8b, 0x5d, 0x47, 0x38, 0x07, 0x8b, 0x17, 0x07, 0xe9, 0xec, 0x33, 0x8c, 0x30, 0xdb, 0xcc, 0x70, 0x27, 0xba, 0x52, 0x16, 0x77, 0x9a, 0x5f, 0x17, 0x03, 0x01, 0x68, 0x1c, 0x77, 0x82, 0x3f, 0xb0, 0x59, 0x65, 0x96, 0xf5, 0xd2, 0xaa, 0xf1, 0x6e, 0x77, 0xb8, 0x89, 0xe8, 0x2e, 0x1e, 0x34, 0xd7, 0x31, 0xd0, 0xc0, 0x86, 0x9a, 0x9e, 0xe1, 0x5c, 0x1d, 0x30, 0x46, 0x67, 0xd0, 0xac, 0xd5, 0x9f, 0x91, 0x78, 0xe0, 0xcf, 0x16, 0x46, 0x52, 0x70, 0x18, 0x93, 0x56, 0x48, 0x90, 0x7d, 0xcd, 0x21, 0xf4, 0x0a, 0x03, 0xc1, 0x98, 0xcd, 0xa1, 0x74, 0x93, 0x45, 0x90, 0x9d, 0x55, 0x18, 0x4d, 0x72, 0xcb, 0xb0, 0xf7, 0x6d, 0x1f, 0x13, 0x44, 0x8f, 0x4f, 0xdc, 0x12, 0x8d, 0x8d, 0xa8, 0xf6, 0xc4, 0x0a, 0xce, 0xaf, 0x5a, 0x82, 0x46, 0x55, 0x3e, 0x2d, 0x70, 0xe6, 0xf8, 0xac, 0x48, 0x0e, 0x1e, 0x86, 0xc9, 0x14, 0xd9, 0x9b, 0xf3, 0x34, 0x40, 0xa2, 0xa1, 0xbb, 0xa6, 0x70, 0x18, 0x08, 0xf4, 0x5b, 0xc2, 0x37, 0xdf, 0xbf, 0x9b, 0x67, 0xdb, 0x6a, 0x18, 0xa8, 0xb0, 0xdb, 0x79, 0x5b, 0xfe, 0xcd, 0xcc, 0x3b, 0x95, 0x8f, 0xc4, 0x64, 0xa6, 0x88, 0xc0, 0xde, 0x99, 0x3b, 0xfe, 0xc2, 0x65, 0xe2, 0x3e, 0xd7, 0x68, 0xd9, 0xc6, 0x14, 0x04, 0x86, 0x5e, 0x46, 0xa9, 0xda, 0x01, 0xe9, 0x88, 0x76, 0x11, 0x48, 0x68, 0x0f, 0x6f, 0xc6, 0x90, 0x72, 0x29, 0x19, 0x3a, 0x96, 0xc4, 0x44, 0xec, 0x74, 0x59, 0x78, 0x57, 0xa7, 0xea, 0x11, 0x44, 0x87, 0xb7, 0x59, 0x35, 0x05, 0xd4, 0xc4, 0xd4, 0xe8, 0xa5, 0xc4, 0x4f, 0x2f, 0xc4, 0x3d, 0x85, 0x5c, 0x2a, 0xc9, 0x8a, 0x6f, 0xe3, 0xc2, 0x90, 0xf8, 0x55, 0x3a, 0xeb, 0x25, 0x31, 0xca, 0x7d, 0x98, 0x1a, 0xc2, 0x18, 0x59, 0x08, 0x3c, 0x15, 0x90, 0x6d, 0xf6, 0xa1, 0x45, 0x66, 0x14, 0x4e, 0x08, 0x32, 0xf6, 0x68, 0x87, 0xf5, 0x45, 0xef, 0x34, 0x85, 0x5c, 0x68, 0x2e, 0x0c, 0x68, 0xe6, 0xa2, 0x43, 0x80, 0x0a, 0x20, 0x5c, 0xa8, 0xfe, 0xf4, 0x44, 0x7b, 0x3a, 0x84, 0xdf, 0x41, 0xd1, 0x92, 0xe2, 0x4e, 0xd1, 0xa4, 0xb6, 0x48, 0x6c, 0xb2, 0x72, 0xa8, 0x98, 0x83, 0xa4, 0x79, 0x85, 0xc5, 0xc8, 0xf3, 0xf2, 0x06, 0x31, 0x98, 0x36, 0x02, 0xa8, 0x82, 0xfd, 0x70, 0x4e, 0x1d, 0xf3, 0xe5, 0x21, 0x74, 0x25, 0xfe, 0xec, 0x48, 0xa3, 0xb5, 0x51, 0x0a, 0xd0, 0x72, 0xda, 0x6e, 0x25, 0x52, 0xea, 0x32, 0x28, 0x1a, 0x76, 0x26, 0xb3, 0x7e, 0xe1, 0x00, 0xb8, 0x62, 0x82, 0x8d, 0x56, 0x3c, 0x29, 0x9b, 0x2b, 0x2f, 0x0f, 0x15, 0xa0, 0x7e, 0xf0, 0xf3, 0x5c, 0xac, 0x1a, 0x32, 0x02, 0xd4, 0x0c, 0x6c, 0x24, 0xd5, 0x58, 0x9c, 0x45, 0x41, 0xd6, 0xc3, 0x47, 0x80, 0xbf, 0x61, 0x89, 0x16, 0xc0, 0x16, 0x09, 0xb4, 0x05, 0x65, 0x8a, 0x83, 0x2e, 0x8d, 0x01, 0x4c, 0xf8, 0x82, 0xe6, 0x9b, 0x48, 0x54, 0xaa, 0x6b, 0x60, 0xc9, 0x51, 0x4a, 0xaa, 0xd9, 0xd8, 0x00, 0x72, 0x82, 0x40, 0x92, 0x0a, 0xff, 0x48, 0xb7, 0x18, 0xfe, 0xc6, 0x01, 0x37, 0x31, 0x2e, 0x06, 0xac, 0xf6, 0x89, 0x1c, 0x4d, 0x4d, 0xf7, 0x17, 0xf4, 0x10, 0x71, 0x8a, 0x58, 0xfd, 0xb5, 0xe7, 0xc2, 0xfe, 0xd3, 0x46, 0x4d, 0x60, 0xe4, 0x55, 0x35, 0x03, 0xe8, 0x12, 0x04, 0xb1, 0x4d, 0x8c, 0xa7, 0xed, 0x0e, 0x19, 0x57, 0xea, 0xe2, 0x6f, 0xb1, 0x38, 0xef, 0x6a, 0x39, 0x23, 0xb5, 0x4f, 0xdf, 0x21, 0x45, 0xc9, 0x03, 0xc2, 0xac, 0x4b, 0xb9, 0x8d, 0x34, 0x3c, 0x98, 0x8c, 0xe3, 0x32, 0x31, 0x90, 0x9c, 0xee, 0xfd, 0xf7, 0x03, 0x2c, 0x2d, 0xa4, 0x36, 0xf6, 0xe1, 0x2c, 0x7c, 0xde, 0x60, 0x5e, 0x24, 0xe1, 0x3b, 0x34, 0xb4, 0x5f, 0xc7, 0x02, 0x95, 0x2a, 0xc0, 0x0d, 0x87, 0xff, 0xcb, 0xaa, 0x98, 0x76, 0x64, 0x54, 0x39, 0xf0, 0xf0, 0x38, 0x25, 0x2a, 0x6b, 0x25, 0x44, 0x97, 0xe8, 0xe9, 0x43, 0x02, 0x7f, 0x83, 0x8a, 0x50, 0x54, 0x6f, 0x40, 0xbc, 0xcd, 0xbd, 0x12, 0xda, 0xab, 0xdc, 0x9c, 0x50, 0x35, 0xbd, 0x22, 0x24, 0x01, 0xf2, 0x23, 0x65, 0xea, 0x1c, 0x0d, 0x14, 0x61, 0xf1, 0xfc, 0xd3, 0xb0, 0xa2, 0x8b, 0xe5, 0x60, 0x47, 0x40, 0x0b, 0x29, 0x0b, 0x65, 0xd2, 0x7d, 0xf3, 0x0c, 0x33, 0xbb, 0xae, 0xb0, 0xe7, 0xd9, 0xbc, 0x76, 0x02, 0xd2, 0xbe, 0xe3, 0x24, 0x25, 0x19, 0xe1, 0x05, 0xf9, 0x64, 0x59, 0x14, 0xe7, 0xd1, 0x1b, 0x4e, 0x33, 0x31, 0x6a, 0x8e, 0x4c, 0x06, 0x76, 0x25, 0xe8, 0xe4, 0x4e, 0x31, 0x66, 0x64, 0x84, 0x2e, 0xcc, 0x4c, 0x20, 0x79, 0x4a, 0xbb, 0x6f, 0x02, 0x60, 0xa3, 0x5b, 0x95, 0x2b, 0xde, 0x3a, 0x93, 0x0a, 0x1c, 0x19, 0x28, 0x9f, 0xa6, 0x3e, 0x20, 0x88, 0x7f, 0x0d, 0x87, 0x17, 0x4d, 0x90, 0xae, 0xe5, 0x9d, 0x75, 0x9b, 0x04, 0xe6, 0x17, 0x82, 0xd1, 0xf3, 0x56, 0xd1, 0xf8, 0xae, 0x51, 0xc3, 0x93, 0x1c, 0xbf, 0x61, 0x2f, 0xde, 0xab, 0x33, 0xfc, 0x2d, 0xb7, 0x08, 0x45, 0x54, 0x87, 0x4b, 0x8d, 0x3d, 0x38, 0x41, 0xf6, 0xed, 0x77, 0xdd, 0x32, 0xcc, 0xad, 0x93, 0xf1, 0xce, 0xa3, 0xe7, 0xbb, 0xdb, 0x91, 0x9c, 0x65, 0xf3, 0x0d, 0x1f, 0xa7, 0xf0, 0xf1, 0xee, 0x68, 0x77, 0xbb, 0x33, 0x1b, 0x6c, 0xf7, 0x1a, 0x00, 0x15, 0x45, 0x57, 0xb7, 0x42, 0x83, 0x92, 0x91, 0x5d, 0xb1, 0x96, 0xe4, 0x4d, 0xfb, 0xc5, 0xa4, 0x67, 0xd9, 0xb5, 0x21, 0xb5, 0x68, 0xfe, 0xda, 0x71, 0x5e, 0x8b, 0x61, 0x03, 0x49, 0xa6, 0xb2, 0x05, 0xd5, 0xda, 0xed, 0x9c, 0x60, 0x7a, 0x04, 0xc2, 0x92, 0x73, 0x1d, 0x22, 0xd1, 0x96, 0xda, 0x4c, 0xaa, 0xa2, 0xc4, 0x3c, 0x8a, 0xe9, 0x7f, 0x72, 0x67, 0xcb, 0xcb, 0x16, 0xda, 0xe3, 0x33, 0xff, 0x4c, 0xa1, 0xe9, 0x0f, 0xd3, 0x7a, 0x9a, 0xe7, 0x6c, 0xcf, 0xf4, 0x98, 0x31, 0x9a, 0xf1, 0x48, 0x18, 0x72, 0x54, 0x49, 0x9d, 0xa7, 0x1c, 0xaa, 0x75, 0x40, 0xa5, 0xc1, 0xb0, 0x50, 0x56, 0x0d, 0x89, 0xad, 0x1b, 0x57, 0x6c, 0x78, 0x34, 0x6b, 0x11, 0x6c, 0x65, 0xab, 0x5f, 0xd6, 0x5d, 0x35, 0xca, 0xdc, 0x05, 0x86, 0x2b, 0x5b, 0x56, 0x61, 0x7d, 0x1f, 0x72, 0x33, 0x29, 0xe3, 0x39, 0x6d, 0xea, 0x12, 0xfb, 0x14, 0xdb, 0x54, 0xf2, 0x50, 0x10, 0x3a, 0xad, 0x35, 0xa0, 0xec, 0xdd, 0x97, 0x7c, 0xa0, 0x2f, 0x07, 0x2e, 0x5d, 0xa7, 0x65, 0x00, 0xa5, 0x11, 0x45, 0x90, 0xc1, 0xf5, 0x13, 0x0a, 0x8f, 0x73, 0x25, 0x15, 0x16, 0x22, 0x2d, 0x26, 0xc8, 0xed, 0xc1, 0x39, 0x22, 0xd2, 0x60, 0x02, 0x30, 0x44, 0x76, 0xb7, 0x22, 0xe0, 0x52, 0x03, 0xb3, 0x3e, 0x82, 0xee, 0x24, 0x0a, 0x2a, 0xb2, 0x1b, 0x70, 0xe3, 0x5a, 0x54, 0x89, 0xaa, 0xca, 0xe1, 0x37, 0xb2, 0xc9, 0x05, 0xac, 0x8e, 0x21, 0x0b, 0x13, 0xc2, 0x79, 0x16, 0xa9, 0xed, 0x9e, 0xd2, 0xed, 0xac, 0x6d, 0xce, 0x76, 0x41, 0xf0, 0x93, 0xc0, 0x97, 0x0b, 0xf6, 0x86, 0xfa, 0x03, 0xd0, 0xe4, 0x14, 0x74, 0xb6, 0x69, 0xa7, 0x7f, 0x40, 0x6b, 0xe7, 0xfc, 0x66, 0x86, 0x37, 0x2b, 0x5b, 0x06, 0x66, 0xdd, 0x1f, 0x2e, 0xd9, 0xb9, 0x1d, 0xde, 0xdc, 0xdc, 0x0c, 0x71, 0xe1, 0x90, 0x93, 0x23, 0x65, 0x16, 0xa3, 0x16, 0x78, 0x34, 0xd9, 0x95, 0x6c, 0x72, 0x82, 0x89, 0x84, 0xf1, 0x0d, 0x2f, 0x45, 0xaa, 0x9a, 0xe4, 0x0d, 0xd5, 0xf3, 0x09, 0x71, 0xd1, 0x6b, 0x52, 0x57, 0x27, 0xd3, 0x21, 0x0d, 0x47, 0x1d, 0x51, 0x91, 0xdb, 0xe7, 0xd6, 0x02, 0xf8, 0xa9, 0x69, 0x93, 0xa1, 0x7e, 0xdd, 0x7c, 0x62, 0x71, 0x90, 0x0c, 0xbf, 0x49, 0x36, 0x5e, 0xc9, 0x6a, 0xcf, 0xcd, 0x13, 0x07, 0xed, 0xb5, 0xf0, 0xc3, 0x61, 0x30, 0xc7, 0xbc, 0xbb, 0xf1, 0x30, 0xf8, 0xc4, 0xde, 0x8b, 0x4c, 0xdd, 0x55, 0x5c, 0xd6, 0x4c, 0x13, 0x71, 0xd6, 0x21, 0xed, 0x85, 0xdd, 0x5a, 0x8c, 0x79, 0x46, 0x4b, 0x4f, 0x6b, 0xe9, 0xc4, 0x33, 0xe1, 0x1b, 0xbe, 0xe6, 0x3a, 0x56, 0xe9, 0xcd, 0xfd, 0x77, 0xdc, 0xbb, 0x89, 0x42, 0xbd, 0x73, 0x72, 0x75, 0x79, 0x78, 0xc4, 0xf0, 0xef, 0xd8, 0x24, 0xcc, 0xc8, 0x4c, 0xa5, 0x0f, 0x86, 0x2b, 0xa6, 0x62, 0xc3, 0x54, 0xf4, 0xd2, 0x2f, 0xd7, 0xd4, 0xa1, 0x39, 0xa7, 0xb0, 0x5b, 0x45, 0x2b, 0xf2, 0xd1, 0x81, 0x35, 0xa5, 0x65, 0x59, 0xaa, 0x7a, 0x00, 0xa3, 0x71, 0xab, 0x1b, 0xd8, 0xcb, 0x29, 0xb4, 0xcc, 0x8e, 0x3d, 0x6f, 0x99, 0x82, 0x80, 0x1b, 0x4b, 0xef, 0xe4, 0x38, 0x07, 0xae, 0xaa, 0x02, 0x94, 0x89, 0xcb, 0x2a, 0xab, 0x40, 0xe8, 0x94, 0x05, 0x3f, 0xd4, 0x14, 0xe6, 0x98, 0xb0, 0x36, 0x0c, 0xe5, 0xd5, 0xd7, 0x47, 0x94, 0xcd, 0x6d, 0x18, 0x69, 0x21, 0x20, 0x0e, 0x3c, 0x7f, 0x6e, 0x79, 0x64, 0x8d, 0xda, 0x4b, 0xb0, 0x12, 0x2e, 0x89, 0x4c, 0x93, 0x18, 0x00, 0xaa, 0xda, 0x1c, 0x89, 0x1a, 0x17, 0x92, 0xb4, 0x2a, 0x36, 0x82, 0x5c, 0x5e, 0x1b, 0xde, 0x4d, 0x5d, 0x89, 0x40, 0x74, 0xbf, 0xe8, 0xeb, 0x0a, 0x36, 0x92, 0xd6, 0x12, 0xc1, 0x25, 0x65, 0x2d, 0x48, 0x1f, 0x77, 0xf4, 0xca, 0x2d, 0xa4, 0xb2, 0x30, 0xef, 0x4d, 0x3e, 0x1f, 0xef, 0xf0, 0x46, 0x67, 0xd2, 0xf1, 0xa4, 0xd8, 0xad, 0xcb, 0x7c, 0x8f, 0x01, 0xd7, 0x62, 0xc1, 0x97, 0x16, 0xf3, 0xdc, 0xda, 0xc4, 0x48, 0xc3, 0x8c, 0xff, 0x03, 0x12, 0x8a, 0xe4, 0xae, 0xe1, 0x79, 0xd0, 0x3c, 0xb4, 0x5e, 0xd2, 0x1f, 0x4d, 0xa1, 0xfc, 0x24, 0x21, 0x36, 0x3e, 0x1c, 0xec, 0xbf, 0x2f, 0xa0, 0x2d, 0x7d, 0x29, 0x8e, 0x2a, 0xe4, 0xc1, 0xd7, 0x9e, 0x35, 0x22, 0xc5, 0xb2, 0x34, 0x77, 0xad, 0x11, 0xc2, 0x36, 0xc4, 0x87, 0xe3, 0x08, 0xa7, 0xb7, 0x7b, 0x4c, 0x71, 0x80, 0x9d, 0xaf, 0xb9, 0x8d, 0xd8, 0x6f, 0xba, 0x9b, 0xf7, 0xc5, 0xfd, 0xbb, 0xf7, 0x73, 0xb7, 0x6f, 0xfd, 0xee, 0x71, 0xfb, 0x06, 0x4d, 0x96, 0xfd, 0xc2, 0x73, 0xd0, 0x51, 0xb2, 0x07, 0x5b, 0x5f, 0xd6, 0x51, 0xd7, 0xe6, 0x32, 0x9e, 0x91, 0xf9, 0xc5, 0xaf, 0x75, 0xea, 0x44, 0x8c, 0x64, 0xd1, 0x63, 0xf2, 0xf1, 0xe1, 0x38, 0xac, 0x48, 0x67, 0xef, 0x63, 0x2f, 0x8a, 0x1e, 0x4e, 0x23, 0x08, 0x7e, 0xf1, 0xb4, 0x61, 0x62, 0x9e, 0x50, 0x9a, 0xe7, 0x30, 0x3e, 0x9c, 0x16, 0x02, 0x8a, 0x22, 0x1e, 0xac, 0xef, 0x4b, 0x15, 0xfc, 0x0f, 0x5f, 0x1c, 0xa5, 0x15, 0xb9, 0x96, 0x81, 0x7e, 0x46, 0x08, 0x87, 0x60, 0xb6, 0x42, 0xbf, 0xa1, 0x5e, 0x1f, 0x81, 0x81, 0xe4, 0x16, 0x52, 0xaa, 0x12, 0x6c, 0x0f, 0xda, 0x1b, 0x06, 0xa8, 0x3b, 0x12, 0x06, 0x7a, 0xca, 0x79, 0xef, 0x19, 0xeb, 0xd9, 0xa1, 0x2d, 0x43, 0xf4, 0xec, 0xfe, 0x6f, 0x5a, 0x1f, 0xd1, 0xb3, 0x23, 0x03, 0x44, 0x18, 0x6a, 0xc6, 0xf0, 0xa6, 0xa4, 0xfb, 0x84, 0xaa, 0x15, 0x20, 0xe2, 0x7b, 0x66, 0x47, 0xe8, 0x03, 0x50, 0x8a, 0x10, 0x6f, 0x9d, 0x0b, 0x5c, 0x28, 0xc3, 0xbc, 0x7f, 0xe1, 0x94, 0x99, 0x21, 0x16, 0x39, 0x14, 0x92, 0x1d, 0x11, 0x11, 0xae, 0xa1, 0x54, 0x4b, 0x99, 0x71, 0xa2, 0x0c, 0xc8, 0xaf, 0x5f, 0x34, 0x2a, 0xbe, 0xaa, 0xc8, 0xf6, 0x96, 0xa4, 0xdc, 0xfb, 0xbc, 0x25, 0x29, 0xdd, 0x3b, 0xeb, 0x64, 0xe4, 0x38, 0xe3, 0x84, 0x34, 0xdf, 0x81, 0x49, 0x2f, 0x71, 0x95, 0x35, 0x1a, 0x79, 0x84, 0xa9, 0x4d, 0x78, 0x35, 0x28, 0x3a, 0xe6, 0xdc, 0x22, 0xaf, 0x76, 0x92, 0x12, 0xcc, 0x11, 0x35, 0x13, 0xeb, 0x28, 0x99, 0x54, 0xe5, 0x4d, 0x4d, 0xea, 0xa8, 0x1a, 0xa8, 0x29, 0xa7, 0xc0, 0x5e, 0x05, 0x25, 0xd1, 0x66, 0x7b, 0xe7, 0x16, 0x07, 0xf6, 0x9b, 0xf3, 0xb7, 0xc7, 0xdc, 0xd8, 0x81, 0xab, 0x73, 0x51, 0x84, 0x24, 0x73, 0x5e, 0x4d, 0x16, 0xc6, 0x92, 0x36, 0xda, 0x49, 0xc3, 0xac, 0x4c, 0xb9, 0x63, 0x50, 0x42, 0x4c, 0x21, 0x3d, 0x09, 0x08, 0x2f, 0x63, 0xf1, 0x19, 0x51, 0x24, 0x3d, 0x1c, 0x2a, 0x4f, 0x03, 0xfe, 0xf9, 0xba, 0xae, 0xb1, 0x93, 0x29, 0x23, 0x86, 0xf4, 0xa8, 0x37, 0x38, 0x0a, 0x3c, 0x12, 0xdc, 0x3e, 0x4f, 0x4d, 0xa3, 0xfe, 0x63, 0x04, 0x29, 0x6d, 0x3d, 0x34, 0xd0, 0xba, 0x6c, 0xf3, 0x11, 0x42, 0xcd, 0x4a, 0xdb, 0x9a, 0x56, 0x50, 0x56, 0x6b, 0x35, 0x2f, 0xd7, 0x46, 0xc4, 0x57, 0xbe, 0xa0, 0x87, 0x40, 0x1f, 0x92, 0x40, 0xd2, 0xaa, 0x82, 0x33, 0x8f, 0xb5, 0xea, 0x41, 0x24, 0xe7, 0x5e, 0x14, 0x12, 0xf5, 0xe6, 0xdb, 0xd0, 0x66, 0xcb, 0xd4, 0xd3, 0x7e, 0x09, 0x18, 0xdb, 0xbb, 0xc1, 0x11, 0x25, 0x91, 0x11, 0xaa, 0xa8, 0x98, 0x82, 0x4e, 0xd3, 0x10, 0x9b, 0x19, 0x9d, 0xda, 0x81, 0xa5, 0xe4, 0x1c, 0x0f, 0xd4, 0xbb, 0xa8, 0x82, 0xed, 0x9a, 0x89, 0xd4, 0xae, 0x7f, 0x84, 0xda, 0xcb, 0x04, 0xd4, 0x45, 0xd0, 0x5c, 0xd4, 0x40, 0xa2, 0x6c, 0xfb, 0xbb, 0x42, 0xff, 0xa3, 0xf8, 0xbf, 0x06, 0x5e, 0x78, 0x2d, 0x87, 0x07, 0xca, 0x8f, 0x17, 0xba, 0xc8, 0xfa, 0x22, 0xab, 0x2e, 0xb9, 0x0c, 0x81, 0x21, 0x61, 0xa3, 0x28, 0x16, 0x69, 0xe2, 0xa1, 0xb4, 0x25, 0xc9, 0xff, 0x1a, 0xb2, 0x44, 0x25, 0x57, 0xd5, 0x0a, 0xf5, 0x2f, 0xe2, 0x4f, 0xdf, 0x1c, 0xce, 0x98, 0xad, 0xcc, 0xd2, 0xc2, 0xec, 0x84, 0xb9, 0xb1, 0x61, 0x7e, 0xcc, 0x7c, 0xfe, 0xc5, 0xbc, 0x5c, 0xd5, 0x77, 0x9b, 0x89, 0xf4, 0xf2, 0x91, 0xf6, 0x17, 0x8d, 0xe4, 0xf2, 0xe0, 0x2c, 0xcd, 0xf9, 0xae, 0x8a, 0x8f, 0x2a, 0x14, 0x51, 0xa9, 0x50, 0xb3, 0xa3, 0xb6, 0x33, 0xdc, 0xa6, 0xf7, 0xb1, 0xff, 0xe5, 0x8f, 0x1d, 0xdd, 0x65, 0x72, 0xff, 0xb3, 0xe1, 0xfc, 0x30, 0xcb, 0xd9, 0x85, 0x64, 0x62, 0x66, 0x73, 0xd2, 0x8a, 0xd4, 0xd9, 0x01, 0x21, 0x3c, 0x18, 0x86, 0x57, 0x43, 0x0e, 0x2e, 0x75, 0x83, 0xf8, 0x4d, 0x4f, 0xf1, 0x89, 0x93, 0x3c, 0x1c, 0x50, 0x72, 0xc8, 0x79, 0x0c, 0x61, 0x62, 0x7b, 0xdf, 0xf8, 0x25, 0x70, 0xa3, 0xe4, 0xd4, 0xec, 0x57, 0x00, 0x35, 0x81, 0x48, 0xb6, 0x1d, 0x2e, 0xf5, 0x41, 0x4f, 0xfd, 0x9f, 0x50, 0x56, 0x39, 0x55, 0x0a, 0x24, 0x2d, 0xcb, 0x3c, 0xb0, 0x34, 0xc9, 0x52, 0xa7, 0xf2, 0x13, 0x35, 0xe6, 0xad, 0xd3, 0x1d, 0x28, 0xeb, 0x80, 0xf5, 0x40, 0x62, 0x83, 0x5a, 0xc3, 0x1c, 0xb6, 0xb0, 0x36, 0xf1, 0x97, 0x7d, 0x95, 0x6a, 0xd8, 0x8d, 0x18, 0x0b, 0xf0, 0xae, 0x3c, 0x25, 0xfc, 0x79, 0x1c, 0x25, 0x12, 0x9a, 0xe4, 0x8c, 0xd2, 0x35, 0xd9, 0x68, 0xfe, 0xcd, 0xf6, 0x64, 0x8d, 0x33, 0xb8, 0xba, 0x02, 0xa8, 0xdf, 0xfd, 0xea, 0xa0, 0x6b, 0x1d, 0x03, 0xe4, 0xd7, 0x8f, 0xc8, 0xe7, 0x40, 0x2d, 0x71, 0x59, 0xd3, 0x1b, 0x9e, 0xd3, 0x4f, 0xd8, 0x81, 0x38, 0x8c, 0x90, 0x4f, 0xcb, 0x02, 0xcc, 0xe6, 0xd9, 0x25, 0x2f, 0xf9, 0xc5, 0xf1, 0xe1, 0x77, 0x87, 0xc7, 0x81, 0x68, 0xfb, 0x7a, 0x3c, 0xde, 0xf9, 0x98, 0x55, 0x13, 0x6a, 0x9c, 0x8a, 0xe5, 0xc1, 0x5d, 0x89, 0x27, 0x6d, 0x1a, 0x96, 0xc7, 0xf1, 0xb5, 0xd5, 0x1d, 0xf1, 0x5f, 0xb2, 0xaa, 0xc2, 0xa4, 0x0e, 0xf9, 0xa4, 0x40, 0xb1, 0x53, 0x59, 0x90, 0xe4, 0xfb, 0x91, 0xfc, 0x9a, 0x56, 0xd9, 0x8c, 0xfb, 0x8a, 0x86, 0x99, 0x7e, 0x84, 0xbe, 0x81, 0xde, 0x19, 0x38, 0x66, 0xce, 0xf6, 0xa6, 0x20, 0x93, 0x5d, 0x44, 0xf0, 0xc6, 0x92, 0x2a, 0xdc, 0x93, 0xd7, 0xf2, 0xcd, 0x1a, 0x37, 0x03, 0xbb, 0xc4, 0xd0, 0x6b, 0x6c, 0x47, 0x9c, 0x7c, 0x3b, 0x7c, 0x39, 0x1e, 0xbe, 0x3e, 0x3c, 0x3e, 0xfc, 0xfa, 0xe5, 0xf9, 0x21, 0x23, 0x8e, 0x2b, 0x0c, 0x71, 0x5c, 0x11, 0xb1, 0x72, 0xf9, 0x5b, 0xd9, 0x18, 0x96, 0xd9, 0x80, 0xac, 0x47, 0x4b, 0x65, 0x6a, 0x9c, 0xe2, 0xe0, 0x50, 0x53, 0x98, 0x2e, 0x4d, 0xab, 0xb3, 0x71, 0x37, 0x1b, 0xcd, 0x08, 0x2b, 0x99, 0x6a, 0xb0, 0x82, 0x74, 0x7e, 0x83, 0xe6, 0x69, 0xef, 0x0b, 0xa4, 0xbb, 0xe7, 0xb6, 0xdc, 0x93, 0x57, 0xef, 0x7b, 0x6d, 0xdc, 0xce, 0xb6, 0x0e, 0x98, 0xd0, 0xe3, 0xe3, 0xfa, 0x8a, 0x56, 0x6a, 0x53, 0x88, 0xf7, 0x35, 0x3d, 0xd8, 0x81, 0x01, 0x77, 0xe8, 0xe5, 0xd4, 0xb8, 0x45, 0x7e, 0x17, 0x01, 0x15, 0xa1, 0x3b, 0x53, 0x4f, 0xaf, 0xb2, 0x85, 0x85, 0xcb, 0x42, 0x06, 0x01, 0xc5, 0xaa, 0xb9, 0xf4, 0x51, 0x60, 0x7d, 0x88, 0x0d, 0x4c, 0x32, 0xb2, 0x79, 0x29, 0x6e, 0x76, 0x1d, 0x70, 0x7e, 0xca, 0xcb, 0x41, 0x53, 0x00, 0x84, 0x43, 0x90, 0x59, 0x43, 0x35, 0xc0, 0x23, 0xca, 0x01, 0xf4, 0x42, 0xfb, 0x61, 0x28, 0x5f, 0x3a, 0xfc, 0x75, 0xd5, 0x02, 0x0b, 0x32, 0x6e, 0x11, 0xd1, 0x4b, 0x72, 0x6f, 0xd1, 0x8f, 0xb8, 0xc1, 0x88, 0xe8, 0xc5, 0x98, 0xe1, 0xcf, 0xf1, 0x43, 0x75, 0x1d, 0x51, 0x44, 0x55, 0xae, 0xe2, 0x91, 0xaa, 0x70, 0x62, 0x99, 0xd5, 0x6b, 0x98, 0x86, 0x9b, 0x2c, 0x33, 0x07, 0x06, 0x3f, 0x9f, 0xc9, 0xe1, 0xd0, 0x8f, 0xa4, 0x55, 0xc0, 0xc8, 0xd5, 0x66, 0x44, 0xdd, 0xed, 0x1e, 0xcb, 0x68, 0xf5, 0x13, 0x00, 0x8e, 0xbb, 0xfe, 0x35, 0xec, 0xfa, 0x60, 0xcb, 0xe1, 0x86, 0xd9, 0x32, 0x00, 0xd5, 0xde, 0x7a, 0xa3, 0x18, 0xf9, 0x56, 0xff, 0xf3, 0xfb, 0xa1, 0x79, 0xed, 0x8b, 0x0e, 0x4f, 0xcf, 0xb8, 0x03, 0xfa, 0x31, 0xfe, 0x22, 0xd1, 0xb1, 0x3a, 0x86, 0x51, 0x27, 0x1d, 0x3a, 0x90, 0x30, 0x92, 0x51, 0x78, 0xc5, 0x06, 0xbc, 0x35, 0x61, 0x90, 0x73, 0x44, 0x05, 0x0c, 0x5d, 0xae, 0x03, 0x6d, 0x70, 0x90, 0xa0, 0x6f, 0xbb, 0xa6, 0xd2, 0x54, 0x30, 0x07, 0x81, 0x11, 0xa2, 0x59, 0x70, 0xa2, 0xab, 0x46, 0x31, 0x4e, 0xf0, 0x4b, 0x28, 0x85, 0x42, 0x3e, 0x3d, 0x9c, 0xd7, 0x15, 0x3d, 0x61, 0x48, 0xbc, 0x95, 0x54, 0xd4, 0x6f, 0x35, 0x35, 0xf3, 0x18, 0xb9, 0x75, 0xf2, 0x27, 0xd8, 0xa9, 0x4c, 0xd0, 0x98, 0x61, 0xcc, 0x82, 0x0a, 0xcc, 0xad, 0xde, 0xaf, 0xc9, 0xe3, 0x9c, 0x1c, 0x6b, 0x93, 0xe2, 0x07, 0x02, 0x1d, 0x24, 0x71, 0x61, 0x64, 0xf5, 0x97, 0x85, 0xdf, 0xe8, 0xab, 0x65, 0x23, 0xd4, 0x9a, 0x2d, 0x96, 0xdd, 0x49, 0x68, 0x9b, 0x95, 0xb6, 0x0b, 0x09, 0x21, 0xa6, 0x04, 0xfa, 0x4a, 0xe6, 0xc7, 0x84, 0xb5, 0x0c, 0xca, 0xbc, 0xbb, 0x4a, 0x8b, 0xc8, 0x9d, 0x33, 0x1b, 0x6f, 0xfb, 0x96, 0xd1, 0x42, 0xe5, 0xd8, 0x22, 0x8a, 0x36, 0x68, 0xa3, 0x0b, 0x3d, 0x65, 0x8c, 0x31, 0xc3, 0xc0, 0x72, 0xc4, 0x1e, 0x64, 0x2a, 0xbc, 0x39, 0xd4, 0xbc, 0x47, 0xe8, 0xad, 0x8c, 0x51, 0x15, 0x73, 0x17, 0x2f, 0x22, 0xd2, 0x22, 0xc1, 0xbe, 0x44, 0x3f, 0xeb, 0x3b, 0xa7, 0x1a, 0x18, 0x0f, 0xf7, 0x16, 0x5d, 0x80, 0xdb, 0x45, 0x32, 0xac, 0x73, 0x92, 0xc0, 0x37, 0xbb, 0xda, 0x2d, 0xb5, 0xe1, 0xc2, 0x08, 0xf3, 0x6d, 0x9a, 0x2e, 0x5c, 0x35, 0x36, 0x6a, 0x0a, 0xda, 0x09, 0xbe, 0xff, 0x9a, 0x26, 0x47, 0x5a, 0x27, 0xbd, 0x41, 0x97, 0x1e, 0xf8, 0x40, 0x97, 0xda, 0x88, 0x89, 0x69, 0x79, 0x92, 0x99, 0x2f, 0xe6, 0x68, 0x54, 0xd7, 0xf2, 0xd5, 0x77, 0xbf, 0x5f, 0x1b, 0xfa, 0x9b, 0x5e, 0xa9, 0x29, 0x85, 0x17, 0x17, 0x50, 0x0d, 0xbc, 0x06, 0x8f, 0x5e, 0x9f, 0xa8, 0xe1, 0x29, 0xc9, 0x76, 0x84, 0x1c, 0x29, 0x03, 0x31, 0x29, 0xab, 0xb0, 0x4c, 0x75, 0x6a, 0xf1, 0x90, 0xf4, 0xd1, 0xb4, 0xbe, 0x8e, 0xdf, 0xf0, 0xfa, 0x3a, 0x7a, 0xc3, 0xf5, 0x0f, 0xba, 0xe9, 0x5e, 0xdb, 0xcd, 0xbe, 0xbb, 0x3e, 0xfe, 0xae, 0x07, 0xd8, 0xc1, 0xbb, 0xe1, 0xba, 0x3a, 0xa2, 0x76, 0xef, 0x8e, 0xf3, 0x25, 0x97, 0x33, 0xb2, 0xd7, 0x5c, 0xee, 0x79, 0xd4, 0x87, 0xef, 0x77, 0xcb, 0xe5, 0x7b, 0x6e, 0xbe, 0x2f, 0x97, 0xfb, 0xf4, 0xe5, 0xf8, 0xbb, 0xce, 0xb5, 0xf6, 0x2e, 0x72, 0x0c, 0x06, 0x83, 0x7a, 0x58, 0x56, 0x8a, 0x8d, 0x8b, 0xb1, 0xa2, 0xf4, 0x5e, 0x5f, 0x3f, 0x84, 0xde, 0xcd, 0x44, 0x02, 0x7a, 0x0f, 0xf6, 0x78, 0x1d, 0xbd, 0xfb, 0x07, 0xd5, 0x05, 0x22, 0xf0, 0x28, 0xbe, 0xe0, 0x5e, 0xd7, 0x28, 0xc3, 0x88, 0x90, 0x3a, 0x51, 0x3a, 0xa2, 0x7d, 0x44, 0xda, 0x61, 0xba, 0x1f, 0xcd, 0xf3, 0xe7, 0x10, 0x3a, 0xbd, 0x10, 0xd0, 0xb9, 0x9e, 0xe8, 0xcf, 0x26, 0x74, 0xb9, 0x20, 0x01, 0x9d, 0x93, 0xd5, 0x7a, 0x3a, 0xf0, 0x08, 0xdc, 0xa3, 0x5a, 0xbf, 0x54, 0x3b, 0xb2, 0x43, 0x16, 0x14, 0xc4, 0x89, 0x5f, 0x07, 0xb7, 0x10, 0x81, 0x00, 0x19, 0xd8, 0x7a, 0xd8, 0x6a, 0x1a, 0xba, 0xdc, 0x6d, 0x75, 0xb6, 0x5f, 0xa0, 0x40, 0xd6, 0x96, 0xa4, 0x34, 0x1b, 0xfb, 0x07, 0x32, 0x9b, 0x2c, 0x78, 0xbf, 0xe6, 0xdf, 0x6f, 0x36, 0xd9, 0xc6, 0x84, 0xd2, 0x49, 0xc4, 0x2a, 0xc8, 0xeb, 0x0c, 0xb9, 0x18, 0x04, 0x15, 0xd6, 0xbd, 0xa7, 0x50, 0xf3, 0x48, 0x1f, 0x80, 0xa2, 0x32, 0x34, 0x46, 0x48, 0x98, 0xaa, 0xdc, 0x0e, 0x05, 0x37, 0x84, 0x20, 0xeb, 0x59, 0x7d, 0xa8, 0x25, 0x84, 0xaa, 0x2b, 0xc1, 0x88, 0x34, 0x91, 0x12, 0x46, 0x38, 0xee, 0x49, 0xf4, 0x46, 0x8a, 0x5e, 0xa3, 0x28, 0x68, 0xed, 0x96, 0x2c, 0x4d, 0xd9, 0x72, 0x98, 0x3d, 0xed, 0x20, 0x0d, 0xcf, 0x8a, 0x7a, 0xe8, 0xba, 0xa8, 0xbf, 0xb0, 0x7f, 0x0d, 0xec, 0x8b, 0xd7, 0xef, 0xc6, 0x1d, 0x95, 0xa2, 0xce, 0xb8, 0x80, 0xe3, 0x92, 0xf8, 0x86, 0xf9, 0xbd, 0x2d, 0xba, 0xaa, 0x5d, 0xdf, 0x42, 0x19, 0x32, 0x44, 0xb8, 0x37, 0x9f, 0x18, 0x75, 0xaa, 0x56, 0xa5, 0x54, 0x78, 0x45, 0x26, 0x1e, 0x45, 0xaf, 0xb1, 0x06, 0x37, 0x3b, 0x29, 0x3b, 0x87, 0x77, 0x28, 0x86, 0x43, 0xc4, 0x02, 0x02, 0xf3, 0xd4, 0x06, 0xca, 0x4b, 0xc6, 0x4c, 0x17, 0x94, 0x30, 0xdb, 0x83, 0x0a, 0xaa, 0xa1, 0x1d, 0x34, 0x16, 0x6a, 0xda, 0x12, 0x5c, 0x23, 0xc9, 0xeb, 0xda, 0x8e, 0x6e, 0x31, 0xef, 0xb1, 0x6e, 0xe1, 0xf2, 0xfa, 0xf1, 0x10, 0x8f, 0x27, 0x6a, 0x2c, 0xf2, 0x0f, 0x9f, 0xd2, 0x0f, 0x47, 0xdd, 0x8d, 0x0e, 0xca, 0x5c, 0xa4, 0xcb, 0xa9, 0xf5, 0x9c, 0xae, 0x8a, 0x19, 0x5a, 0x63, 0x60, 0xda, 0xda, 0xe8, 0x00, 0x68, 0x86, 0xae, 0xb7, 0x8c, 0x05, 0x2d, 0x32, 0x24, 0x14, 0x14, 0x74, 0x55, 0x94, 0xc3, 0xef, 0x0e, 0xfd, 0xd1, 0xa3, 0xc8, 0xa1, 0xdb, 0x19, 0xbf, 0x90, 0x65, 0x3e, 0xe0, 0xc8, 0x27, 0x39, 0xf7, 0xa0, 0x7a, 0x91, 0x2f, 0x87, 0xfa, 0x16, 0x0b, 0x8f, 0x45, 0xfa, 0x51, 0x84, 0xfa, 0x63, 0x22, 0x85, 0xd0, 0x49, 0xa0, 0x2d, 0x91, 0xfd, 0x38, 0x15, 0x3f, 0x29, 0x34, 0x23, 0x9a, 0x56, 0x93, 0xb9, 0xe2, 0x74, 0x02, 0x6d, 0xe5, 0xef, 0xc4, 0xea, 0xb2, 0x34, 0x83, 0xda, 0xf7, 0xc3, 0x68, 0x0d, 0x06, 0xcd, 0xc4, 0xbe, 0x7b, 0xef, 0xf9, 0x39, 0x7a, 0x58, 0x77, 0x7e, 0xba, 0x67, 0xff, 0x3d, 0xce, 0xef, 0xe9, 0x27, 0x39, 0xbf, 0xa7, 0xff, 0x6d, 0xce, 0xef, 0xe9, 0x3f, 0x7f, 0x7e, 0x8f, 0xbb, 0xe7, 0xf7, 0xf4, 0xbf, 0xcb, 0xf9, 0x69, 0x0f, 0x34, 0x3d, 0xbd, 0x2c, 0x38, 0xbf, 0xb1, 0xa4, 0x76, 0x28, 0x78, 0x1e, 0x36, 0x5b, 0xdf, 0xe2, 0x40, 0x8a, 0x24, 0x23, 0xb2, 0xa7, 0x5a, 0xf3, 0x61, 0x19, 0xbe, 0xb1, 0xa7, 0xa9, 0x88, 0x34, 0xc6, 0xd2, 0x21, 0x8f, 0x4e, 0x13, 0xfb, 0x79, 0xef, 0x10, 0x1c, 0x14, 0x96, 0xb8, 0x77, 0xa3, 0x6e, 0xe4, 0x1a, 0xbe, 0x45, 0xb3, 0x01, 0x5c, 0x02, 0x59, 0xbb, 0xc2, 0xdd, 0x18, 0xda, 0x95, 0xd9, 0xbc, 0x83, 0x17, 0xd8, 0xaf, 0x21, 0x3f, 0xfe, 0xc7, 0x68, 0x41, 0x1a, 0x75, 0x55, 0x76, 0x93, 0x8a, 0x85, 0x0e, 0xbc, 0xad, 0x7b, 0xf0, 0xb1, 0xf5, 0x75, 0xe4, 0xd2, 0x23, 0x9c, 0x0e, 0xef, 0x3f, 0xb2, 0xf2, 0x8a, 0xb0, 0x76, 0x5e, 0xbc, 0x3f, 0x0b, 0x7d, 0x6f, 0x66, 0xa9, 0xb6, 0x34, 0xcf, 0xe1, 0x17, 0x9a, 0xf3, 0x1a, 0xc2, 0xb8, 0x1f, 0x12, 0x94, 0xbb, 0xb9, 0x8e, 0x27, 0xdf, 0x6c, 0x7b, 0x5e, 0x20, 0x8a, 0x2c, 0x94, 0x91, 0x8b, 0xc6, 0xa5, 0xb1, 0x5a, 0xfd, 0x5d, 0x0f, 0xfc, 0x13, 0x76, 0x79, 0xe9, 0x99, 0x43, 0xcb, 0x66, 0xe7, 0x48, 0x22, 0x45, 0xb5, 0x55, 0xd0, 0x83, 0x12, 0xca, 0x60, 0x5e, 0x0b, 0xb2, 0x1b, 0xa0, 0x2e, 0x54, 0x12, 0xd2, 0xc4, 0x3e, 0x61, 0x67, 0x99, 0xd7, 0xa4, 0x0b, 0xae, 0x16, 0x4b, 0x29, 0xef, 0xbd, 0xa7, 0xbc, 0x91, 0x4c, 0xec, 0xed, 0xe4, 0x7b, 0xaa, 0x5d, 0x64, 0x1f, 0xbb, 0x94, 0xfa, 0xa8, 0xd5, 0x6d, 0xeb, 0x1b, 0x34, 0x80, 0xd5, 0x03, 0x4e, 0x16, 0xc5, 0x83, 0xea, 0x54, 0xee, 0x73, 0x4d, 0x8a, 0x22, 0x9c, 0x83, 0x07, 0x7a, 0x3a, 0xb1, 0x94, 0x1a, 0xf0, 0x3e, 0xcb, 0x47, 0xa3, 0x00, 0xd9, 0x50, 0x26, 0xb8, 0xcc, 0x09, 0x93, 0x66, 0x8c, 0x3f, 0xf3, 0xba, 0x19, 0x6a, 0x24, 0xb5, 0x4e, 0xb5, 0x8b, 0x16, 0xeb, 0xec, 0x09, 0x60, 0x29, 0x96, 0xa1, 0xaf, 0xda, 0x2b, 0x79, 0x02, 0x04, 0x3a, 0xc3, 0x62, 0x23, 0x15, 0xd7, 0xb6, 0xf6, 0x65, 0x72, 0xd7, 0xa6, 0x84, 0xe1, 0x24, 0x2c, 0x64, 0xd3, 0x0c, 0x69, 0x5e, 0xf1, 0x6f, 0xe8, 0xf0, 0x7b, 0x6a, 0x23, 0x58, 0xf3, 0xf2, 0x3d, 0x0f, 0xc1, 0x4d, 0xf1, 0x2b, 0x2f, 0x46, 0x9f, 0xad, 0xcb, 0x8c, 0xe6, 0x94, 0xdb, 0xab, 0xcc, 0x2f, 0x26, 0xb6, 0xc8, 0x8c, 0x1c, 0x1c, 0x60, 0xf7, 0x8b, 0x59, 0x9c, 0x24, 0x88, 0x06, 0x7d, 0x78, 0x08, 0x2c, 0x40, 0x76, 0x6b, 0x43, 0xc0, 0x8d, 0x56, 0x82, 0xc8, 0xca, 0x9d, 0x88, 0x09, 0x0b, 0xe6, 0x5f, 0x57, 0xbc, 0xeb, 0x25, 0x4c, 0xfb, 0x5c, 0x21, 0xbb, 0xe4, 0xa8, 0xf8, 0xba, 0xe4, 0xdc, 0x0e, 0x0e, 0x19, 0xf7, 0xd8, 0xb6, 0x48, 0x64, 0x64, 0x98, 0x17, 0x4d, 0x55, 0x2e, 0xef, 0x92, 0xaf, 0x53, 0x2c, 0x8b, 0x94, 0xe9, 0x34, 0x5b, 0x04, 0x15, 0x5b, 0xdc, 0x75, 0x5b, 0x74, 0x5b, 0xee, 0xc0, 0xad, 0x2b, 0x24, 0x6d, 0x9c, 0xb7, 0xc5, 0xf0, 0x01, 0xb3, 0x5f, 0x10, 0xbf, 0x52, 0x4d, 0xc1, 0x19, 0xc9, 0xe3, 0xf1, 0x71, 0x68, 0x3e, 0x69, 0xbf, 0x9f, 0xb5, 0xa5, 0xfa, 0x34, 0xda, 0xb0, 0x1b, 0x90, 0x90, 0xc1, 0x5f, 0x44, 0x2f, 0xb3, 0xac, 0x3b, 0x9b, 0x2b, 0x94, 0x85, 0xc2, 0xab, 0x4f, 0xab, 0xbb, 0x25, 0x4c, 0x72, 0xa9, 0x4d, 0xe5, 0xbb, 0x87, 0xf9, 0x31, 0x36, 0xea, 0xda, 0x6a, 0xe0, 0xf7, 0xb5, 0x07, 0x31, 0x4e, 0x02, 0x0c, 0xbe, 0x18, 0x60, 0x05, 0x03, 0xf3, 0x49, 0x04, 0x1a, 0x38, 0xfd, 0x8c, 0x40, 0x4e, 0x7a, 0x5b, 0x7f, 0x49, 0x43, 0xaf, 0x4e, 0xd3, 0x08, 0xf2, 0xdd, 0x50, 0xb1, 0x33, 0x80, 0x02, 0x29, 0x82, 0xb1, 0xad, 0x22, 0x55, 0xde, 0x90, 0x62, 0xb6, 0xae, 0xe0, 0xb2, 0x3d, 0x05, 0x52, 0x00, 0x1f, 0x14, 0x01, 0xc2, 0x0a, 0x27, 0x3f, 0xec, 0xed, 0xee, 0xde, 0x0b, 0x9d, 0x23, 0x06, 0xe2, 0x5a, 0x04, 0x1d, 0xf0, 0x28, 0x8e, 0x29, 0xd8, 0x52, 0xef, 0x34, 0x97, 0x3a, 0x9e, 0x2e, 0xd8, 0x98, 0xf9, 0xa4, 0x45, 0xb2, 0x71, 0x57, 0x90, 0x79, 0x1d, 0x23, 0x4c, 0x11, 0x8e, 0x8e, 0x61, 0x61, 0x87, 0x34, 0xc7, 0xfa, 0xa0, 0xf5, 0x4e, 0xb4, 0xd3, 0x32, 0x26, 0x84, 0x97, 0x44, 0xeb, 0x1b, 0x25, 0x5f, 0xdd, 0x39, 0x53, 0xd9, 0xf3, 0x10, 0xd1, 0xac, 0xe8, 0x86, 0xc9, 0xfc, 0x47, 0xeb, 0xf0, 0x8a, 0xe2, 0xf0, 0x38, 0xbf, 0x61, 0xc6, 0x42, 0xc3, 0x1a, 0x06, 0xb4, 0xac, 0x69, 0x54, 0x42, 0xd9, 0x88, 0xfb, 0x88, 0xec, 0x6a, 0xd3, 0x3a, 0xe8, 0x3d, 0xe4, 0xb5, 0x11, 0x62, 0xa1, 0xb2, 0x16, 0xe6, 0xb8, 0x0d, 0x76, 0xd4, 0x4e, 0xce, 0x7c, 0xd6, 0xd6, 0x0c, 0x50, 0x71, 0x3c, 0xa4, 0xba, 0xe2, 0x2e, 0x98, 0x02, 0x4a, 0x91, 0xc1, 0xbb, 0xc8, 0xb2, 0x2f, 0x0b, 0xcf, 0xe5, 0x01, 0x90, 0x2d, 0x4e, 0x88, 0xd1, 0x12, 0xa4, 0x0e, 0xb6, 0xab, 0xcf, 0x58, 0x15, 0x90, 0x5e, 0x6f, 0xfa, 0xac, 0xf4, 0x20, 0x9d, 0x6c, 0xd5, 0x59, 0xc7, 0x77, 0xc2, 0xce, 0x93, 0x10, 0x2d, 0x82, 0x13, 0x6b, 0x9d, 0x63, 0x8e, 0xeb, 0xa7, 0x29, 0x69, 0x80, 0x94, 0x2f, 0xd6, 0xd6, 0x8c, 0x92, 0x30, 0x48, 0xa4, 0x41, 0x37, 0xf2, 0xa8, 0xf9, 0x94, 0xa3, 0x1a, 0xa5, 0x73, 0xbc, 0x73, 0xfb, 0x2d, 0x5e, 0x49, 0xed, 0x50, 0xd2, 0xc0, 0xb4, 0xb9, 0x95, 0x98, 0x19, 0xb5, 0xb6, 0x19, 0x53, 0xa1, 0x13, 0xd2, 0x2b, 0x5c, 0x36, 0x4f, 0x02, 0xb8, 0xa5, 0x5e, 0x91, 0xcb, 0x98, 0x87, 0xb7, 0xc0, 0x64, 0x7c, 0x27, 0xb9, 0xa0, 0x1b, 0xae, 0x29, 0x29, 0x4c, 0x8d, 0x06, 0xa5, 0x81, 0x69, 0x98, 0xd0, 0xe1, 0x50, 0x65, 0xf8, 0xaa, 0xf2, 0x42, 0xd3, 0x1b, 0x57, 0xb9, 0x39, 0xd5, 0x62, 0x83, 0xf0, 0x12, 0x57, 0x13, 0x86, 0xe2, 0x6c, 0xf4, 0xa3, 0xc1, 0x62, 0x57, 0x73, 0xcf, 0x1d, 0x1a, 0xef, 0xbe, 0xdd, 0x8a, 0x3f, 0x0d, 0x92, 0xd6, 0x85, 0x50, 0x25, 0x8e, 0xf3, 0xda, 0x5d, 0x4d, 0x3a, 0x9f, 0x5b, 0xd4, 0x81, 0xea, 0xea, 0xd3, 0x70, 0xf3, 0xa9, 0x61, 0xd5, 0xc0, 0xef, 0x16, 0xe3, 0xf2, 0x5d, 0xd2, 0x05, 0xbc, 0x26, 0x9c, 0x00, 0x83, 0x5d, 0x8e, 0xab, 0x2a, 0x95, 0x45, 0x32, 0x89, 0x40, 0xed, 0x4a, 0xc6, 0x5b, 0x7a, 0x47, 0xc5, 0x38, 0xf6, 0xd3, 0x44, 0xdd, 0x01, 0x2e, 0x1a, 0x30, 0x02, 0x4b, 0xd2, 0xb6, 0x85, 0x8e, 0xb1, 0x85, 0xd3, 0x2a, 0x5f, 0x36, 0x9c, 0x06, 0x20, 0x39, 0xc7, 0xf7, 0xa9, 0x60, 0x97, 0xf3, 0x72, 0x92, 0xf2, 0x1d, 0xb1, 0x29, 0x3f, 0xea, 0x64, 0x6c, 0xe1, 0xf8, 0x82, 0xbd, 0x81, 0x3c, 0x23, 0x7d, 0x08, 0xcc, 0x92, 0x87, 0x07, 0xd4, 0x34, 0x1d, 0xc1, 0xc7, 0x75, 0x1f, 0xb4, 0x9f, 0x60, 0x54, 0xbc, 0xe1, 0xc5, 0x40, 0x6e, 0xaf, 0x16, 0x2b, 0x53, 0xc6, 0x54, 0xed, 0xdd, 0xa9, 0x40, 0x0d, 0x22, 0x74, 0x81, 0xd9, 0x2a, 0x6b, 0x27, 0x50, 0x6d, 0x4a, 0x68, 0x56, 0x3a, 0xbd, 0x51, 0x12, 0x8f, 0x05, 0xf0, 0x97, 0x10, 0x68, 0x34, 0x39, 0x08, 0xb8, 0xb9, 0x92, 0xcc, 0x33, 0x30, 0x0a, 0xff, 0x0d, 0x15, 0x2e, 0x14, 0x90, 0x4a, 0x6e, 0x72, 0x9a, 0x94, 0xea, 0xed, 0x15, 0xe3, 0x0d, 0x84, 0x14, 0x7f, 0xc1, 0x3a, 0x1a, 0x79, 0x0c, 0xf9, 0x4c, 0xd6, 0xec, 0x8c, 0x0f, 0xbe, 0xbd, 0xdf, 0xe2, 0x68, 0xf6, 0xd3, 0x71, 0xf1, 0x44, 0x6c, 0xad, 0x86, 0x1e, 0x0f, 0x97, 0xfa, 0x96, 0x21, 0x16, 0x29, 0x0a, 0x4b, 0x29, 0xd6, 0x4f, 0x90, 0x91, 0xda, 0xe5, 0x8e, 0x79, 0x41, 0xbc, 0x60, 0x0d, 0x37, 0x05, 0xa9, 0x5f, 0xf3, 0x3b, 0xaa, 0xd5, 0xe0, 0x33, 0x27, 0x0d, 0x54, 0xdc, 0xf4, 0x4a, 0x50, 0x59, 0x33, 0xf5, 0x7e, 0x39, 0xcb, 0xd2, 0x79, 0xac, 0x89, 0x04, 0x26, 0x0c, 0xb7, 0x29, 0xb3, 0x36, 0xa0, 0x87, 0x14, 0x12, 0xa6, 0x90, 0xd4, 0x63, 0x4e, 0xbe, 0x2b, 0xa4, 0x50, 0x5a, 0x67, 0x48, 0xb7, 0x2a, 0x62, 0x1a, 0xa2, 0xad, 0x0d, 0x3d, 0x40, 0x25, 0xb5, 0x53, 0x29, 0xd4, 0x27, 0x1c, 0x38, 0x57, 0x99, 0x42, 0xba, 0xff, 0xdb, 0x63, 0xfb, 0x00, 0x51, 0x00, 0x85, 0xcc, 0xbb, 0xc3, 0x89, 0xeb, 0x92, 0xcb, 0x25, 0x49, 0xc8, 0x68, 0x35, 0x03, 0x26, 0xc6, 0x69, 0x27, 0x60, 0x92, 0xdb, 0x72, 0x0f, 0x39, 0xb9, 0x81, 0x39, 0xc7, 0x32, 0x3c, 0xe9, 0xeb, 0x4c, 0x13, 0x86, 0xc8, 0xb6, 0xe0, 0x03, 0x68, 0x6c, 0x0d, 0x29, 0x46, 0x13, 0x3e, 0xc3, 0x4c, 0x66, 0x7f, 0xbf, 0x07, 0x54, 0x44, 0xda, 0x87, 0x0b, 0x8d, 0xd1, 0x65, 0xaf, 0xd3, 0x8b, 0x4c, 0xf1, 0x44, 0x85, 0x7d, 0x97, 0x53, 0xb3, 0x85, 0x14, 0x17, 0x25, 0xac, 0x1e, 0x68, 0x47, 0x81, 0xd1, 0xca, 0x5c, 0x13, 0x5c, 0xd2, 0x8a, 0x5c, 0x5c, 0x04, 0x61, 0xb7, 0xf5, 0x3c, 0x5f, 0xaa, 0x4f, 0x78, 0x90, 0x64, 0x92, 0xcd, 0x33, 0xbf, 0x93, 0x53, 0x59, 0x0d, 0x23, 0xd6, 0x90, 0xed, 0x71, 0x2e, 0xa8, 0xb0, 0x73, 0x28, 0xfe, 0x5b, 0x9d, 0xd1, 0x1f, 0xef, 0xee, 0xd1, 0x64, 0x1f, 0xef, 0x3e, 0xdb, 0x6e, 0x4b, 0xe5, 0x79, 0x9d, 0x0d, 0x29, 0x97, 0x2b, 0xae, 0x9d, 0x9e, 0x77, 0xfc, 0xef, 0xa4, 0x89, 0xe2, 0x25, 0x49, 0x00, 0x9b, 0xad, 0x2a, 0xcd, 0x8a, 0x44, 0x6f, 0x3f, 0x58, 0x8b, 0xf5, 0x15, 0xc0, 0x08, 0x03, 0x29, 0xef, 0xde, 0xe1, 0x24, 0x12, 0xc8, 0x24, 0xde, 0xa7, 0x94, 0x5e, 0x95, 0xbe, 0x61, 0xbc, 0x0f, 0xf4, 0x1c, 0xcc, 0x44, 0xce, 0x06, 0x8e, 0x75, 0xf9, 0x54, 0x23, 0x8f, 0x2b, 0x85, 0x24, 0x60, 0xd6, 0xee, 0xc2, 0x6b, 0xf9, 0xce, 0x9b, 0xdc, 0x58, 0xf6, 0x57, 0xd4, 0xbd, 0xb7, 0xae, 0xd3, 0xcb, 0x2c, 0xac, 0xfb, 0x36, 0x0c, 0xc9, 0x98, 0x4c, 0xdc, 0x5d, 0xae, 0x22, 0xc0, 0x76, 0x64, 0x64, 0xf1, 0xbe, 0x4b, 0x1d, 0x87, 0xb4, 0x9e, 0x23, 0xc0, 0x30, 0xb7, 0xcc, 0x18, 0xbd, 0xe4, 0xb5, 0xd7, 0x17, 0xb1, 0xaf, 0x2d, 0x22, 0x9a, 0x74, 0x11, 0x72, 0x14, 0xb7, 0xcc, 0xe1, 0x9e, 0x39, 0xb1, 0x66, 0x28, 0x46, 0xd5, 0x36, 0x87, 0x7b, 0x32, 0x36, 0x2c, 0xc8, 0xb5, 0xf0, 0xa5, 0xcc, 0x38, 0xf3, 0xb3, 0x1f, 0x8c, 0x2e, 0x3a, 0x7a, 0x6e, 0x7f, 0xbc, 0xfd, 0xb0, 0x3e, 0x8a, 0xfb, 0x1d, 0xdd, 0x0c, 0x29, 0xaa, 0xe2, 0xfe, 0x27, 0x53, 0xe5, 0x0b, 0xfe, 0x47, 0x8f, 0xfb, 0x81, 0x4a, 0x31, 0x93, 0xa3, 0xb7, 0x2f, 0x09, 0x69, 0xc9, 0x01, 0x1f, 0xfb, 0xc9, 0x5c, 0x7e, 0xe9, 0x1a, 0x35, 0x95, 0x84, 0xaa, 0x1a, 0xc5, 0xbd, 0xb3, 0x50, 0xb5, 0x9c, 0x58, 0xe7, 0xc2, 0x5c, 0xaa, 0xcb, 0x19, 0xc1, 0xdb, 0xc0, 0x30, 0x05, 0x22, 0x4d, 0x72, 0x9c, 0x71, 0x0f, 0x99, 0x64, 0xf3, 0xcb, 0xcd, 0x48, 0x91, 0xdb, 0xe6, 0x0b, 0x0f, 0x78, 0xbb, 0x76, 0xfd, 0xa9, 0x36, 0xff, 0x80, 0x5c, 0x5d, 0x60, 0x8c, 0xf0, 0x37, 0xe5, 0x0c, 0x38, 0xed, 0x54, 0x02, 0x8c, 0x3d, 0x75, 0x4b, 0x02, 0x9b, 0xd7, 0x4e, 0xd8, 0xe1, 0x7e, 0xd0, 0x80, 0x24, 0xef, 0xac, 0x5b, 0xf5, 0xb9, 0xcd, 0xa0, 0x08, 0x0e, 0x19, 0xed, 0x0c, 0x62, 0x23, 0x4d, 0xb3, 0x5d, 0x77, 0x4f, 0x9e, 0x13, 0x4f, 0x86, 0xdc, 0x83, 0xd3, 0x69, 0x0e, 0xcd, 0x85, 0xae, 0xbe, 0xf9, 0xe5, 0xe5, 0x65, 0x34, 0xab, 0xc8, 0x6c, 0x01, 0x0e, 0x1e, 0x6b, 0xbe, 0xc8, 0xd2, 0x86, 0xf4, 0x0d, 0xc8, 0xf9, 0xfe, 0x9c, 0x62, 0xa7, 0xbb, 0x47, 0x9e, 0xf1, 0x56, 0xf1, 0xc2, 0x2f, 0xdb, 0x88, 0x53, 0x01, 0x11, 0x01, 0xd3, 0x00, 0x80, 0x2e, 0xe9, 0x67, 0xd6, 0xff, 0x74, 0x91, 0x1a, 0xa2, 0xb8, 0x93, 0x58, 0xee, 0x9c, 0xd2, 0xec, 0x99, 0x83, 0x64, 0x8b, 0x80, 0x87, 0xcd, 0x35, 0x63, 0x95, 0x13, 0xbb, 0xd1, 0x62, 0x83, 0x73, 0x80, 0xb1, 0xcf, 0x2c, 0x0f, 0x5c, 0x2e, 0x78, 0xa2, 0x7d, 0x26, 0x5c, 0x8a, 0x77, 0xd7, 0x2b, 0xe2, 0x27, 0x7c, 0x8b, 0xaa, 0xa2, 0x36, 0x20, 0xe5, 0xac, 0x0b, 0xc3, 0xf0, 0xfd, 0x42, 0x7e, 0x8d, 0x5f, 0xd7, 0x2d, 0x48, 0x26, 0x84, 0xe1, 0x46, 0x3b, 0x74, 0x49, 0x38, 0xd1, 0x7e, 0x0a, 0x74, 0x17, 0x62, 0x32, 0x65, 0x82, 0xde, 0x65, 0xfb, 0x8f, 0x3e, 0xff, 0x7c, 0x14, 0x85, 0xff, 0xe4, 0xaa, 0x65, 0x43, 0x84, 0xd8, 0x29, 0x07, 0x15, 0x39, 0xb0, 0xa0, 0xbf, 0xf8, 0x3e, 0x28, 0x8c, 0xaa, 0xaa, 0xca, 0x05, 0x10, 0x7d, 0xc0, 0x1c, 0x57, 0xf3, 0xd0, 0xbc, 0xa7, 0x58, 0xdf, 0x02, 0x6a, 0x85, 0x70, 0x31, 0x52, 0xaf, 0xc0, 0x35, 0x16, 0x79, 0x8f, 0x4a, 0x97, 0x49, 0x4a, 0x1c, 0x67, 0x4f, 0x0a, 0x62, 0x9e, 0xa4, 0x70, 0x72, 0x36, 0xac, 0xd1, 0x1a, 0x28, 0xf5, 0x9b, 0x13, 0x2d, 0x78, 0x3b, 0x36, 0x7b, 0xaa, 0x24, 0x37, 0x13, 0x0d, 0x37, 0x4e, 0x32, 0x0b, 0x3b, 0xc0, 0x0d, 0xa9, 0x3a, 0xc0, 0x30, 0x5c, 0x49, 0x5d, 0xa0, 0x54, 0x0a, 0x0d, 0x20, 0xcc, 0x07, 0x3a, 0xc3, 0x51, 0xe1, 0xf0, 0x65, 0xd6, 0x84, 0xe5, 0x3d, 0x5e, 0x62, 0xed, 0x9a, 0xc1, 0x63, 0x36, 0x91, 0x54, 0x27, 0x25, 0x2f, 0xc4, 0x7b, 0x9f, 0xcc, 0xf2, 0x0b, 0xbd, 0xa4, 0xb6, 0x69, 0xc2, 0x97, 0x74, 0x1a, 0x2f, 0x64, 0xeb, 0xa5, 0x5a, 0xef, 0xcb, 0x28, 0xf4, 0x97, 0x64, 0xf7, 0x12, 0x0e, 0x55, 0xd3, 0x18, 0xb5, 0xda, 0xf1, 0x6e, 0x4a, 0xae, 0x66, 0x88, 0x7e, 0x2e, 0x69, 0xe1, 0x0d, 0xe6, 0x34, 0xc9, 0x79, 0x0c, 0x7b, 0xe2, 0x85, 0x1d, 0x54, 0x3a, 0x80, 0x20, 0xbf, 0x1d, 0x53, 0x89, 0xed, 0x84, 0xc2, 0x77, 0x83, 0x3f, 0x98, 0xa7, 0x03, 0xab, 0x07, 0xef, 0x7a, 0xfb, 0x14, 0x9e, 0xbd, 0x1f, 0xcc, 0x12, 0xa0, 0x09, 0xde, 0x62, 0x97, 0x17, 0xed, 0xbb, 0xcb, 0x65, 0xa5, 0xd6, 0x5d, 0xda, 0x75, 0x92, 0x62, 0xa9, 0xae, 0xc0, 0x99, 0x28, 0xeb, 0xb2, 0xcc, 0x78, 0x96, 0x84, 0x36, 0xa1, 0xbb, 0x0a, 0x5f, 0x65, 0x53, 0xad, 0xa6, 0x50, 0x2c, 0xc9, 0x28, 0xa7, 0x4f, 0xc5, 0x9a, 0x54, 0x49, 0x4b, 0x3c, 0xb7, 0x62, 0x6a, 0x25, 0x47, 0xe7, 0x45, 0xbb, 0x2c, 0x38, 0x79, 0x6c, 0xe1, 0x09, 0x8c, 0x22, 0x27, 0x85, 0x0e, 0xa3, 0xed, 0x4d, 0x33, 0x72, 0xb7, 0xd4, 0xf9, 0xdf, 0x58, 0x29, 0x93, 0x6c, 0x5a, 0x45, 0x0d, 0x23, 0x07, 0x47, 0x06, 0x1c, 0xfb, 0xe4, 0x35, 0x9a, 0x6f, 0xb2, 0x28, 0x07, 0xbd, 0x05, 0x7c, 0xda, 0xcf, 0xf7, 0x66, 0x89, 0x04, 0x35, 0xae, 0xca, 0x2e, 0x57, 0x90, 0x72, 0xb4, 0x4f, 0x5b, 0x8a, 0x12, 0xaa, 0x4f, 0x2c, 0xf3, 0x25, 0x35, 0xf8, 0x30, 0xf6, 0x5c, 0x90, 0x42, 0x6e, 0xde, 0xe2, 0xb6, 0x9a, 0xab, 0xc2, 0x6c, 0x57, 0xb3, 0x42, 0xe4, 0x4f, 0x60, 0x52, 0x0c, 0xff, 0xfa, 0x0b, 0xb9, 0xfe, 0x4a, 0x59, 0x3a, 0xb7, 0xa4, 0x98, 0x59, 0xd3, 0x3b, 0xbb, 0x08, 0x6c, 0x97, 0x8c, 0x92, 0x4d, 0x08, 0xdf, 0x0b, 0xe9, 0x1b, 0x8d, 0x32, 0x00, 0xee, 0xbf, 0x06, 0x47, 0xcc, 0x1f, 0x10, 0x1a, 0x9c, 0x66, 0x0e, 0xdd, 0x94, 0x36, 0x85, 0x92, 0x3c, 0x83, 0x5b, 0x4d, 0x40, 0x81, 0xaa, 0x3b, 0xf9, 0xf0, 0x91, 0xd2, 0x03, 0x64, 0xc0, 0x80, 0xa8, 0x5c, 0xf5, 0x23, 0x58, 0x38, 0x69, 0xcd, 0x55, 0x05, 0x75, 0xd8, 0x97, 0x94, 0x84, 0x00, 0x6b, 0xd5, 0x7f, 0xb1, 0x06, 0x2f, 0x38, 0x5f, 0x04, 0x55, 0x88, 0xe0, 0x54, 0x0f, 0x38, 0x3b, 0x82, 0xba, 0xbc, 0x09, 0x43, 0x53, 0xd3, 0x43, 0xab, 0x86, 0x58, 0x45, 0xdc, 0x34, 0xac, 0x13, 0x7b, 0xbf, 0x29, 0x17, 0x37, 0x06, 0x65, 0xe3, 0xec, 0x7c, 0x62, 0xd5, 0x7c, 0x4d, 0x2c, 0x00, 0xa4, 0xe5, 0x21, 0x50, 0xa9, 0xaa, 0xd4, 0x70, 0xcc, 0xbf, 0x2c, 0x2f, 0x7b, 0xb0, 0x06, 0xb9, 0x95, 0x8c, 0xb1, 0x15, 0xc2, 0xde, 0x55, 0x44, 0x87, 0xc3, 0x37, 0x89, 0xcc, 0xe7, 0x8b, 0x2f, 0x5b, 0xc3, 0x69, 0x3f, 0x07, 0x1f, 0xae, 0x5c, 0xa0, 0x2f, 0xa6, 0x97, 0xf9, 0x3d, 0x9b, 0xc0, 0x58, 0xff, 0x36, 0x83, 0xb7, 0xbe, 0x2a, 0x33, 0x39, 0xbb, 0x82, 0x4c, 0x60, 0xdb, 0x9a, 0xc8, 0xac, 0xab, 0x8e, 0x36, 0x9a, 0x50, 0x8d, 0xb7, 0x7f, 0xda, 0x24, 0xd7, 0xff, 0xa3, 0xbc, 0x2a, 0xf0, 0x0f, 0x7c, 0x01, 0x1f, 0xf8, 0x62, 0x6f, 0x2f, 0x3a, 0xf3, 0xde, 0xf9, 0xf2, 0x84, 0x75, 0xc6, 0x10, 0x46, 0x92, 0x95, 0xe9, 0xf1, 0xb6, 0x96, 0xe9, 0x3f, 0xa2, 0x62, 0xb2, 0xd0, 0xcd, 0x46, 0x77, 0x88, 0x60, 0xba, 0xbc, 0x57, 0x39, 0xe1, 0x2d, 0xca, 0x12, 0x73, 0x2b, 0x1f, 0xe6, 0x21, 0xe6, 0x83, 0xd1, 0xd5, 0x70, 0x24, 0xfd, 0x8b, 0xdf, 0x40, 0x78, 0xe6, 0xee, 0x8b, 0x17, 0x57, 0xab, 0xcb, 0x8c, 0xf8, 0x66, 0x73, 0xdb, 0x6c, 0x3c, 0x68, 0xe5, 0xf0, 0x52, 0xb0, 0x9b, 0x82, 0xa3, 0xe9, 0x8d, 0x97, 0x49, 0x48, 0x45, 0x02, 0x2d, 0x15, 0x82, 0x03, 0xdf, 0xb0, 0x94, 0xb4, 0x49, 0x7d, 0xb7, 0xdc, 0x86, 0x95, 0xd1, 0x01, 0x6f, 0x9a, 0xc0, 0x41, 0xb8, 0x02, 0xf4, 0x35, 0x2b, 0xb8, 0xc9, 0x26, 0x5f, 0x7c, 0x09, 0xdf, 0xd6, 0x2d, 0xc1, 0xea, 0xb3, 0x56, 0x8b, 0xad, 0xdb, 0x21, 0x94, 0xfd, 0xc4, 0x5b, 0x44, 0x77, 0x90, 0xb2, 0xea, 0x1f, 0xd6, 0x2b, 0xff, 0xf1, 0x86, 0xbc, 0x28, 0xcb, 0xb5, 0x23, 0xaa, 0xef, 0x86, 0xf6, 0xc4, 0xcb, 0x1f, 0xe4, 0xac, 0x3a, 0x57, 0xda, 0xc8, 0x04, 0x41, 0x72, 0xa6, 0x25, 0x2e, 0x63, 0xa5, 0xe6, 0xf0, 0x90, 0x49, 0x9b, 0x6f, 0x95, 0x38, 0x5f, 0x0c, 0xb4, 0xc2, 0x26, 0xd2, 0x48, 0xc5, 0xad, 0x81, 0xaf, 0x23, 0x21, 0x03, 0xe1, 0xaf, 0x7f, 0xb0, 0xaf, 0xe3, 0x3f, 0xe6, 0x36, 0x13, 0x50, 0xf5, 0x9a, 0xd5, 0x20, 0xed, 0x4e, 0xdf, 0xd9, 0xa1, 0xf0, 0x93, 0xed, 0x8f, 0xb4, 0x39, 0x60, 0x45, 0xfb, 0x0f, 0x9b, 0xe4, 0xc6, 0xd5, 0xb8, 0x30, 0x75, 0x2d, 0x22, 0x1e, 0x37, 0x2b, 0x03, 0xb5, 0x16, 0x09, 0x90, 0xdc, 0xd6, 0x88, 0x66, 0xdf, 0x33, 0x71, 0xcc, 0x5c, 0xa7, 0xfe, 0xe3, 0x86, 0x9d, 0xfc, 0x8f, 0x1b, 0x6e, 0xfa, 0x3f, 0x6e, 0xb8, 0x05, 0xfc, 0xb8, 0x01, 0x74, 0x46, 0x2c, 0x22, 0x34, 0x88, 0x7f, 0xee, 0xa1, 0x6f, 0xf2, 0x57, 0xdd, 0x47, 0xbd, 0x6f, 0x7a, 0x9f, 0xdc, 0xd8, 0x5c, 0xb7, 0x69, 0x7e, 0x6c, 0x08, 0x90, 0x46, 0x69, 0x77, 0x0f, 0x0d, 0xbb, 0x6e, 0x6d, 0x93, 0xdb, 0x16, 0x18, 0x67, 0x41, 0x63, 0x6b, 0xef, 0x01, 0xec, 0xb8, 0xeb, 0xd9, 0xe4, 0xf5, 0x22, 0xb0, 0xe0, 0x8e, 0x7a, 0x0e, 0xda, 0x12, 0x39, 0x90, 0x47, 0xf6, 0xf5, 0x40, 0xfe, 0xfc, 0x6f, 0xf3, 0x05, 0xd2, 0xff, 0x69, 0x0c, 0xb9, 0xd5, 0x84, 0xeb, 0x22, 0xc9, 0x70, 0x94, 0xa7, 0x5c, 0x70, 0xd4, 0x92, 0xc5, 0xdf, 0x05, 0x17, 0xf7, 0x30, 0x49, 0x04, 0xe9, 0xeb, 0x8b, 0x9c, 0x3a, 0x78, 0x99, 0x55, 0xcd, 0xd9, 0x42, 0xdd, 0x81, 0x54, 0xa0, 0x74, 0x53, 0x6a, 0xac, 0x55, 0x93, 0x89, 0x2e, 0xc6, 0xab, 0xb4, 0x27, 0xe3, 0x7d, 0xe8, 0x27, 0x69, 0x28, 0xe2, 0xf3, 0xb2, 0xaa, 0xbf, 0xd8, 0xa8, 0xd0, 0x10, 0x35, 0xb9, 0xac, 0x8c, 0x06, 0xfb, 0x07, 0x90, 0xd6, 0xca, 0x1c, 0x96, 0xbb, 0xa7, 0xb7, 0xc3, 0xc5, 0x9d, 0x99, 0xf7, 0xe6, 0xcf, 0xa2, 0x0c, 0x8f, 0xa5, 0xcd, 0x28, 0x78, 0x6e, 0x98, 0xe3, 0x22, 0xe9, 0x66, 0x0e, 0xf0, 0xd5, 0xf5, 0x2e, 0xa5, 0xfc, 0xfe, 0x8b, 0x18, 0xfa, 0x5b, 0xb0, 0x10, 0x8f, 0xf3, 0x92, 0xa9, 0xf6, 0xc5, 0xc9, 0xb7, 0x7f, 0xd0, 0x01, 0x7e, 0xdc, 0xf8, 0x61, 0xc8, 0x3f, 0xa5, 0x32, 0xda, 0x83, 0xe4, 0xe4, 0x5b, 0x50, 0xf7, 0xcf, 0x63, 0x60, 0xeb, 0x3e, 0xf0, 0x25, 0xff, 0x85, 0x28, 0x7b, 0xdd, 0xb0, 0xe7, 0x2e, 0xe3, 0xe0, 0x0b, 0xf4, 0xf5, 0xa5, 0xba, 0x1e, 0xb2, 0xc2, 0x97, 0x4b, 0x54, 0xeb, 0x68, 0xd9, 0x68, 0xc3, 0x65, 0xa3, 0x14, 0x35, 0x4a, 0x27, 0x25, 0x67, 0xdf, 0x37, 0x21, 0x64, 0x34, 0x41, 0xd6, 0xd2, 0xd9, 0x8a, 0xef, 0x6a, 0x49, 0x8e, 0x0b, 0x52, 0x87, 0x75, 0x77, 0xe1, 0x2d, 0x24, 0x05, 0xae, 0x65, 0xed, 0x1c, 0x46, 0x7a, 0x03, 0x38, 0xcc, 0x1f, 0xfe, 0x1b, 0xe9, 0x65, 0xb6, 0x65, 0x35, 0xfa, 0x8c, 0xa5, 0x55, 0xa6, 0x8d, 0x63, 0xa4, 0xd5, 0x1d, 0x05, 0x98, 0x0c, 0xc1, 0x44, 0x42, 0x01, 0x12, 0x9d, 0x94, 0xdc, 0xef, 0x8b, 0x72, 0x2e, 0xcd, 0xcd, 0x6b, 0x43, 0xf5, 0x7c, 0xc0, 0xb6, 0xbb, 0x9c, 0xd1, 0x38, 0xb0, 0x15, 0x12, 0xa9, 0x90, 0xcf, 0x46, 0x54, 0x0e, 0x89, 0x26, 0xb2, 0x37, 0x4e, 0x7a, 0x99, 0x11, 0x8e, 0x16, 0x13, 0xfe, 0x1f, 0x60, 0xf4, 0x4f, 0x32, 0x72, 0x3e, 0xd9, 0xea, 0xc8, 0xa1, 0x38, 0x87, 0x23, 0x1e, 0x9c, 0xc4, 0xde, 0x1b, 0xbd, 0x38, 0x9c, 0x06, 0xa1, 0x15, 0x92, 0x00, 0x58, 0xfa, 0x06, 0x2a, 0xa1, 0x64, 0x8e, 0x6b, 0xc3, 0x17, 0x88, 0x97, 0xf8, 0x62, 0xe9, 0x0e, 0xab, 0x1a, 0x11, 0xde, 0xb6, 0xe4, 0xb7, 0xe2, 0x4b, 0xd6, 0xc7, 0x52, 0xd1, 0xb7, 0xe4, 0xb0, 0x46, 0xc1, 0x0b, 0x3f, 0x48, 0x9e, 0xce, 0x70, 0xef, 0xc0, 0x6b, 0xde, 0xc3, 0x3f, 0x8b, 0x0f, 0xef, 0x63, 0xa3, 0x68, 0x80, 0xb8, 0x96, 0xed, 0x5f, 0x33, 0xfe, 0xbe, 0x1d, 0xff, 0xb3, 0x08, 0x1c, 0x09, 0x03, 0x86, 0xc4, 0x3f, 0x0b, 0x14, 0x50, 0xc9, 0xda, 0x52, 0x2f, 0xaa, 0xf5, 0x64, 0xb4, 0x7c, 0x08, 0x8a, 0x84, 0xcc, 0x50, 0x25, 0x1c, 0x6e, 0x08, 0x7b, 0x1f, 0x30, 0x8a, 0x23, 0x99, 0x81, 0xb4, 0x0e, 0xb3, 0x8d, 0x5d, 0x13, 0x51, 0x5a, 0xd7, 0x33, 0x61, 0x95, 0x0b, 0x20, 0x93, 0xce, 0x0e, 0x5c, 0x2b, 0x48, 0xc6, 0x56, 0xc8, 0xfd, 0x84, 0x76, 0x57, 0xbf, 0x1a, 0x54, 0x12, 0xb6, 0x70, 0x7f, 0x83, 0x4f, 0x19, 0x56, 0xcc, 0x88, 0x44, 0x5e, 0x9f, 0xc2, 0xcd, 0xad, 0x4d, 0x71, 0xaa, 0xe0, 0x43, 0xe8, 0xa0, 0x48, 0xd9, 0x49, 0x54, 0xa3, 0x9c, 0x12, 0x94, 0x84, 0xf8, 0x72, 0x86, 0x11, 0xad, 0xe3, 0x80, 0x58, 0xbb, 0xbd, 0x13, 0x8c, 0x9f, 0x43, 0xf0, 0x39, 0x6a, 0x37, 0x33, 0xd6, 0x55, 0x0b, 0x33, 0x27, 0x34, 0x92, 0xbd, 0x2d, 0x96, 0xc1, 0xd8, 0x36, 0xa5, 0x14, 0x41, 0xb9, 0x14, 0x9b, 0x5f, 0x6c, 0x6f, 0xda, 0xa5, 0xf5, 0x9b, 0x45, 0x41, 0x23, 0x44, 0x0d, 0x42, 0xda, 0xf6, 0xa8, 0xe4, 0x59, 0x5a, 0x20, 0xf7, 0x21, 0x1b, 0xd2, 0x81, 0x46, 0x81, 0xe5, 0xea, 0x46, 0xbc, 0x9d, 0x30, 0xb1, 0x0a, 0xba, 0x9d, 0x0c, 0x81, 0xc2, 0x24, 0x9e, 0xce, 0x1b, 0x64, 0xc7, 0x53, 0xfd, 0x02, 0x83, 0xe0, 0xd5, 0x07, 0x9e, 0x3e, 0x1e, 0xb9, 0x9e, 0x08, 0xe4, 0x50, 0x6f, 0x01, 0x71, 0x89, 0x78, 0x1e, 0x8d, 0x75, 0xaa, 0xf7, 0xe6, 0x17, 0x5b, 0x2c, 0xb0, 0x9c, 0x3f, 0xcd, 0xfb, 0xf6, 0x66, 0xf2, 0x63, 0xbc, 0x94, 0x34, 0xe1, 0x77, 0x3d, 0x0b, 0x41, 0xc8, 0xf6, 0xbe, 0x37, 0x92, 0x17, 0x93, 0x72, 0x76, 0xf7, 0x47, 0x0a, 0x3b, 0xc9, 0x2b, 0x2f, 0x76, 0xe8, 0x47, 0x1d, 0x95, 0xb9, 0x6f, 0x20, 0x1a, 0xc5, 0x1c, 0x15, 0xfd, 0xf9, 0x25, 0x1e, 0x57, 0x8b, 0x61, 0x33, 0x19, 0x8d, 0x0c, 0x13, 0xaa, 0x17, 0xd4, 0xa5, 0x6a, 0x8d, 0x60, 0x61, 0x18, 0x38, 0x12, 0xb1, 0x50, 0x52, 0x04, 0xc9, 0x83, 0x3c, 0x3b, 0x6a, 0x65, 0xb3, 0x13, 0x92, 0x7f, 0x55, 0x7d, 0x31, 0x4a, 0x5e, 0xda, 0x2c, 0x99, 0x2c, 0x02, 0x1d, 0x8d, 0x6b, 0xcc, 0xb2, 0xc3, 0xab, 0xc2, 0xfe, 0x7c, 0x92, 0x8b, 0x9b, 0x7d, 0x56, 0xb6, 0xe0, 0x28, 0x19, 0xea, 0xc0, 0x08, 0xf7, 0x38, 0x80, 0xd8, 0xb4, 0xac, 0x38, 0x46, 0xc4, 0xee, 0x74, 0x6b, 0xbf, 0xc8, 0xd4, 0x86, 0x87, 0x82, 0x57, 0xa5, 0x6c, 0x74, 0x90, 0x3c, 0xb3, 0x5f, 0x8a, 0x40, 0xb8, 0xb3, 0xc5, 0x5f, 0x27, 0x9f, 0x0f, 0xf1, 0x94, 0xd7, 0x44, 0x55, 0xe8, 0xbe, 0x9d, 0xc1, 0x31, 0x10, 0xa5, 0x70, 0x48, 0x89, 0x49, 0x91, 0x1a, 0x18, 0x92, 0x04, 0x93, 0xb4, 0xce, 0x9e, 0x3e, 0x56, 0xf5, 0x92, 0x77, 0xa9, 0x56, 0xff, 0x6d, 0xcb, 0x09, 0xcb, 0x72, 0xc8, 0x5b, 0x50, 0xf7, 0x22, 0x50, 0x29, 0x2f, 0x94, 0x33, 0xf4, 0xc4, 0xe2, 0xbc, 0x57, 0x48, 0x53, 0xa3, 0x48, 0x5e, 0x36, 0x54, 0xc4, 0xf3, 0xec, 0xa9, 0x37, 0xe9, 0x7b, 0xdc, 0x15, 0x1d, 0x4e, 0x2a, 0x2b, 0xec, 0xae, 0x48, 0xed, 0x75, 0xf3, 0xdd, 0xe0, 0x5e, 0xc2, 0xd7, 0xc1, 0x78, 0x5c, 0xb2, 0x46, 0xeb, 0x60, 0xbc, 0xef, 0x1a, 0xf9, 0x97, 0xe0, 0x0f, 0x4a, 0x38, 0xdd, 0x4f, 0xaf, 0x25, 0x6a, 0xcf, 0x44, 0xd2, 0xf7, 0x79, 0x12, 0x4c, 0xd8, 0xf7, 0xd3, 0x35, 0x82, 0x08, 0x17, 0xab, 0x8a, 0xa4, 0x8f, 0x3c, 0xc6, 0x4a, 0x82, 0x96, 0x06, 0x89, 0x9e, 0xfe, 0xf6, 0xe5, 0xbb, 0xf7, 0x2f, 0x8f, 0x1f, 0xde, 0x2c, 0xa7, 0xd5, 0x7f, 0x6d, 0xb4, 0xbe, 0x71, 0x9b, 0xab, 0x06, 0x0e, 0x10, 0x70, 0x8e, 0xb4, 0x4f, 0x0e, 0xff, 0xf3, 0x9c, 0x2a, 0x90, 0x83, 0x00, 0x22, 0xa1, 0x09, 0x74, 0xb3, 0xf5, 0x50, 0xa7, 0x05, 0xba, 0x42, 0x92, 0x48, 0x1c, 0x19, 0x87, 0x33, 0x6f, 0x25, 0x44, 0xee, 0x65, 0x6e, 0xa6, 0xb5, 0xb4, 0x2a, 0xdc, 0xd0, 0xf7, 0xf1, 0xfa, 0x86, 0xe4, 0x6b, 0xdb, 0xd2, 0xec, 0x18, 0x95, 0xdb, 0x5a, 0x72, 0x9b, 0x7a, 0xa5, 0xbd, 0x9e, 0x45, 0xa0, 0xb5, 0xbc, 0x6f, 0xe5, 0xc5, 0x85, 0x03, 0xa2, 0xe9, 0x46, 0xf8, 0x5e, 0xbd, 0xea, 0xaf, 0x72, 0xfd, 0x94, 0x20, 0xa2, 0x9d, 0x24, 0x70, 0xda, 0x46, 0xc7, 0xdd, 0x87, 0x4d, 0xc9, 0x25, 0xe0, 0x2f, 0x64, 0x6e, 0xf1, 0x5d, 0x35, 0x13, 0xf4, 0xab, 0xf5, 0x55, 0xc5, 0xa5, 0x2e, 0xac, 0xe3, 0xc3, 0x33, 0xda, 0xac, 0xd3, 0x97, 0xe3, 0xb1, 0x95, 0x85, 0xb5, 0xa4, 0x25, 0x0c, 0x02, 0x63, 0x8c, 0xd4, 0x48, 0xbf, 0x1b, 0xc8, 0x28, 0xb1, 0x0d, 0x54, 0x25, 0x9d, 0x93, 0x62, 0x3f, 0xc6, 0xe6, 0x3b, 0x5f, 0x2d, 0xcc, 0x85, 0x31, 0x1a, 0xef, 0x6c, 0xb3, 0x96, 0x50, 0x6c, 0x97, 0xf0, 0xc0, 0xb9, 0x44, 0x93, 0xa2, 0xb3, 0x06, 0xed, 0xe1, 0xec, 0xc7, 0x1a, 0x43, 0x02, 0x97, 0xe7, 0xe0, 0xb5, 0x8f, 0xfc, 0x3a, 0x88, 0x3b, 0xd3, 0x37, 0xc6, 0x47, 0xe7, 0x87, 0x66, 0xfb, 0xde, 0x9f, 0x7f, 0xb3, 0x21, 0xa9, 0x0b, 0x5d, 0xd8, 0x09, 0x72, 0xda, 0xa3, 0xf3, 0xe9, 0xb5, 0x2d, 0x4e, 0xad, 0xd8, 0x91, 0x62, 0xac, 0x85, 0x98, 0x06, 0xee, 0x3e, 0x3a, 0x5a, 0x73, 0x4a, 0x4f, 0x46, 0x4f, 0xba, 0xa7, 0xd4, 0x8f, 0xe2, 0xcc, 0xb8, 0xbe, 0x01, 0xb9, 0x0b, 0x58, 0x30, 0xb2, 0xa7, 0x76, 0x5c, 0x4f, 0x11, 0x0a, 0xb2, 0x11, 0xe8, 0x0c, 0x65, 0xed, 0x46, 0x40, 0xe5, 0x14, 0x61, 0xcf, 0x8b, 0x8b, 0x13, 0xa4, 0xb1, 0x45, 0xe1, 0x11, 0x6f, 0x2f, 0x87, 0x43, 0xcd, 0x89, 0xa5, 0xd5, 0xcc, 0x56, 0x62, 0x86, 0xfa, 0xa1, 0xe6, 0xfa, 0xa1, 0x53, 0x91, 0x21, 0x01, 0xed, 0x54, 0xd2, 0xaa, 0x8f, 0x0d, 0x5b, 0x0e, 0xb8, 0x7c, 0xbe, 0x38, 0xc6, 0x34, 0x79, 0xd1, 0xa9, 0x79, 0x89, 0x05, 0x4b, 0x5e, 0x9b, 0xfd, 0x18, 0x87, 0x45, 0xc6, 0xbe, 0x4a, 0xbe, 0xc8, 0x0b, 0xfe, 0x33, 0x4e, 0xef, 0x24, 0x72, 0xab, 0x72, 0xce, 0x0e, 0x44, 0x79, 0x83, 0x93, 0x38, 0xb9, 0xc2, 0xc4, 0x56, 0x3e, 0xa4, 0x14, 0x02, 0x25, 0xfb, 0x84, 0x7a, 0x7d, 0x87, 0xdd, 0xa8, 0xb6, 0xc6, 0xdb, 0xd6, 0xd3, 0x7a, 0x4e, 0x11, 0x45, 0x1a, 0x2d, 0x52, 0x38, 0xe4, 0x01, 0x0e, 0x8a, 0x7a, 0x19, 0x03, 0xbd, 0xf1, 0x6e, 0x6f, 0x68, 0x31, 0x11, 0xa3, 0x9e, 0xde, 0xcc, 0x7a, 0x20, 0xdc, 0xc8, 0xad, 0x45, 0x49, 0x64, 0x64, 0x03, 0x72, 0x99, 0xd2, 0xab, 0xef, 0x5f, 0x7b, 0x3d, 0x68, 0x34, 0x4f, 0x8d, 0xe9, 0x45, 0x14, 0xd2, 0x3e, 0x90, 0xb4, 0xcc, 0x25, 0x5b, 0x8e, 0x28, 0xa8, 0x3a, 0xcb, 0xb2, 0xa5, 0x45, 0xfc, 0xce, 0xa9, 0xae, 0x25, 0xaf, 0x29, 0x88, 0x2a, 0x68, 0xeb, 0xd4, 0x65, 0xad, 0x67, 0x76, 0xc2, 0x3a, 0x6c, 0x4d, 0x25, 0xfe, 0x1f, 0x3d, 0xb5, 0x10, 0xc6, 0xdd, 0x7b, 0xf6, 0xe8, 0x73, 0x23, 0x9b, 0xef, 0x08, 0x82, 0xdb, 0x6d, 0x19, 0x43, 0xe4, 0xf6, 0xc3, 0xdf, 0x89, 0x51, 0xa3, 0xe9, 0xbd, 0x82, 0x60, 0x90, 0xd4, 0x30, 0x23, 0xc8, 0x41, 0x25, 0xf5, 0xc4, 0x21, 0xfc, 0x8b, 0xd9, 0x44, 0xd9, 0x30, 0x49, 0xba, 0xa3, 0x7d, 0xe2, 0x04, 0xb1, 0x91, 0x47, 0xc0, 0xe8, 0xdb, 0x81, 0x06, 0x63, 0x86, 0xa5, 0x9c, 0x1d, 0x9e, 0x9f, 0x99, 0x3f, 0xc6, 0xe7, 0x27, 0x67, 0x3d, 0x80, 0x85, 0x0d, 0x23, 0x63, 0x60, 0xd3, 0x34, 0x5d, 0x85, 0xb6, 0xb9, 0x0d, 0x66, 0x46, 0x99, 0xd0, 0xcc, 0x76, 0xea, 0x28, 0xfe, 0x95, 0x07, 0x83, 0x55, 0x8f, 0x5a, 0x0b, 0xbd, 0x30, 0xf2, 0x61, 0xed, 0xc2, 0xf8, 0xcc, 0xd7, 0x53, 0x08, 0x2d, 0x18, 0xc4, 0x88, 0x15, 0x5b, 0x46, 0x4f, 0xb3, 0x35, 0x46, 0x1b, 0x9c, 0xff, 0x0e, 0xdd, 0x5d, 0xbb, 0x36, 0xf7, 0x80, 0xfc, 0x71, 0x6a, 0x2e, 0xf7, 0x2c, 0x71, 0x4d, 0xcc, 0x0d, 0xa7, 0xd5, 0xf2, 0xfb, 0x8d, 0x64, 0x8b, 0x1c, 0xc8, 0xa2, 0x97, 0xdc, 0x43, 0xbf, 0x46, 0x17, 0xda, 0x76, 0x0b, 0xae, 0xcb, 0x45, 0xc6, 0x1e, 0x7e, 0x4e, 0xce, 0x55, 0xe6, 0xc4, 0xb2, 0x85, 0xe1, 0x5a, 0x93, 0x18, 0x04, 0x85, 0x45, 0xd6, 0xc2, 0x29, 0x6f, 0xda, 0x1a, 0xfe, 0x52, 0xa8, 0x83, 0xcf, 0x25, 0x33, 0x96, 0x6a, 0x43, 0x90, 0x65, 0x9b, 0x3a, 0x2b, 0x0f, 0x72, 0xab, 0xcd, 0xbc, 0xf7, 0xba, 0x4c, 0x06, 0x38, 0x08, 0x71, 0xce, 0x42, 0xed, 0xe5, 0x5a, 0xf8, 0x0b, 0x9a, 0x63, 0x43, 0xba, 0x84, 0xdf, 0x56, 0xf3, 0x54, 0x9e, 0x8a, 0x86, 0xd5, 0xa8, 0x5c, 0x10, 0xf8, 0x19, 0x96, 0xb6, 0xe5, 0xc8, 0x39, 0x44, 0xb3, 0xea, 0x32, 0xdd, 0x96, 0x3e, 0x17, 0xb2, 0x59, 0x55, 0xda, 0x12, 0xd7, 0xa8, 0xa8, 0x53, 0x20, 0xbf, 0xa6, 0x1b, 0xd6, 0xaf, 0x0e, 0x5a, 0x93, 0xbc, 0x2f, 0x04, 0xac, 0xa5, 0x30, 0xb6, 0x05, 0xe5, 0x3f, 0xcc, 0xec, 0xa6, 0x01, 0xc3, 0x08, 0x69, 0x5b, 0x2c, 0xb4, 0x66, 0x25, 0x2b, 0xf4, 0x04, 0x75, 0x1c, 0x62, 0xe1, 0x91, 0x0f, 0x99, 0xb2, 0x09, 0x54, 0xd2, 0xc8, 0x78, 0xce, 0x2e, 0x99, 0x36, 0xdd, 0x95, 0x12, 0xb0, 0x42, 0xb0, 0xd0, 0x53, 0xff, 0xd0, 0x98, 0xa5, 0x91, 0xf5, 0xe3, 0x78, 0x41, 0xc3, 0xf8, 0x06, 0x2d, 0x98, 0x0a, 0x59, 0x6b, 0x34, 0x57, 0xbc, 0x10, 0x10, 0x09, 0xed, 0x11, 0xdf, 0x42, 0x67, 0x50, 0x35, 0x70, 0xb4, 0x06, 0xf5, 0xcb, 0x07, 0x73, 0x68, 0x91, 0x64, 0xbb, 0x44, 0xbe, 0xbd, 0xba, 0xde, 0x62, 0x5b, 0x22, 0xd0, 0x33, 0x1c, 0x99, 0x02, 0x35, 0x2a, 0x6d, 0xe5, 0x45, 0x0e, 0xf0, 0x9e, 0xb2, 0xda, 0x41, 0x95, 0x0a, 0xa0, 0xec, 0x8c, 0x55, 0x59, 0xce, 0xa9, 0xe3, 0x8d, 0xaa, 0x6e, 0xb1, 0x3e, 0xc5, 0xa4, 0x82, 0x71, 0xfd, 0xa5, 0x19, 0xbc, 0xdd, 0x79, 0xd6, 0xeb, 0xe1, 0x06, 0x69, 0xea, 0x21, 0x35, 0x8c, 0x62, 0x5d, 0xd2, 0x38, 0x23, 0x84, 0x32, 0x1e, 0xdb, 0xea, 0x98, 0x76, 0xec, 0xd4, 0x9e, 0x1b, 0x74, 0xae, 0xa4, 0xf2, 0x51, 0xfe, 0x7d, 0x4f, 0x79, 0x9d, 0xf6, 0x3b, 0x21, 0x3c, 0x26, 0xb3, 0x2b, 0x03, 0xce, 0x0e, 0x69, 0xdf, 0x4c, 0xb2, 0x1c, 0xda, 0x5f, 0xab, 0xb3, 0x66, 0xb5, 0x0c, 0xe5, 0xbc, 0x2b, 0xf8, 0xb4, 0x23, 0x6a, 0x50, 0xd4, 0x9b, 0x22, 0x80, 0x0c, 0xdc, 0xf6, 0xfb, 0xa0, 0xf5, 0xdd, 0xdb, 0x48, 0x9a, 0x40, 0x20, 0xdd, 0xfb, 0x8a, 0xef, 0x55, 0xbc, 0xa0, 0x6f, 0x6e, 0xb2, 0x61, 0xf4, 0x8b, 0xdd, 0x0d, 0xd2, 0xa0, 0xb5, 0xf1, 0x81, 0xe0, 0x83, 0xe9, 0xdb, 0x66, 0x5f, 0xbc, 0xf9, 0x86, 0x77, 0x46, 0xeb, 0x51, 0xa4, 0x8e, 0x10, 0xa7, 0xb3, 0x85, 0x16, 0xed, 0x74, 0x7f, 0xb7, 0x3f, 0xeb, 0x5d, 0xfa, 0x9a, 0x59, 0x6d, 0xec, 0x3d, 0xdf, 0x1f, 0xed, 0x3d, 0xfd, 0x7c, 0xb4, 0x47, 0x0d, 0x5e, 0xbd, 0xb9, 0xb9, 0x46, 0xa4, 0xde, 0x40, 0x91, 0x36, 0xb7, 0x49, 0x3f, 0xd0, 0x2d, 0x7f, 0x61, 0x71, 0x37, 0xc2, 0x73, 0x23, 0x6e, 0x36, 0x13, 0x7c, 0x63, 0x61, 0x74, 0x9a, 0xbc, 0x08, 0xe2, 0x20, 0x43, 0x97, 0x55, 0xc4, 0xb4, 0xb8, 0xcc, 0x41, 0x46, 0x0a, 0x3e, 0xe9, 0xed, 0x93, 0xf6, 0xc9, 0xb3, 0x7d, 0x3f, 0xe8, 0x76, 0xc6, 0x67, 0xa4, 0x2c, 0x7d, 0x2a, 0x6a, 0xa4, 0xe3, 0xea, 0xf6, 0xfb, 0x01, 0xdb, 0xfc, 0xd9, 0x56, 0x1f, 0x50, 0x53, 0xec, 0xa5, 0xeb, 0xa2, 0xe5, 0x10, 0xaa, 0x52, 0x17, 0x98, 0x47, 0x70, 0x56, 0xf8, 0x41, 0x1f, 0xc3, 0x2a, 0xd1, 0xa6, 0xc3, 0x3a, 0x1c, 0xc1, 0x0d, 0xb9, 0x4a, 0x1c, 0xdb, 0xd7, 0x4d, 0x47, 0xd6, 0xe0, 0x79, 0x17, 0x41, 0xc9, 0x22, 0x1b, 0x31, 0x93, 0xd6, 0xe1, 0xf0, 0xce, 0xef, 0x7f, 0xef, 0x38, 0x12, 0x77, 0x1b, 0xa7, 0x16, 0x17, 0x4f, 0x08, 0xc1, 0x94, 0x63, 0xd5, 0x0c, 0x96, 0xbf, 0x71, 0xf0, 0x67, 0x72, 0x0e, 0xff, 0x34, 0xfc, 0xb3, 0xf9, 0xe7, 0x4f, 0x1b, 0x7a, 0xa9, 0x19, 0x0c, 0xcb, 0x15, 0x8c, 0x38, 0xc4, 0x41, 0x3a, 0xa0, 0x41, 0xd2, 0xee, 0xd6, 0x4a, 0x9a, 0xc1, 0xf9, 0xab, 0x53, 0xbe, 0x8c, 0x15, 0x87, 0xbd, 0x89, 0x9a, 0xc1, 0x87, 0x48, 0xad, 0x07, 0x0b, 0xa7, 0x46, 0x13, 0x4c, 0x27, 0x76, 0x2f, 0xbd, 0x57, 0x06, 0x2e, 0xa9, 0xe1, 0x86, 0x39, 0x40, 0x6a, 0xf4, 0xdb, 0x4b, 0xf8, 0x57, 0xb8, 0x0a, 0xdc, 0xf0, 0x5d, 0x55, 0xa4, 0xa5, 0x91, 0x2e, 0x90, 0xb4, 0x0c, 0x1b, 0xb0, 0xd7, 0xe1, 0xc6, 0x4c, 0x69, 0x90, 0x08, 0x2a, 0x2c, 0xd7, 0x46, 0x34, 0x0a, 0x5e, 0x58, 0xc0, 0x50, 0x51, 0x6e, 0x5b, 0xe5, 0xf5, 0x47, 0xac, 0x4f, 0xca, 0x7c, 0xbc, 0x5c, 0x21, 0xcc, 0xe7, 0x33, 0xab, 0xf5, 0xdd, 0x29, 0x4c, 0x8c, 0x2d, 0xdc, 0xf3, 0x76, 0xd6, 0x49, 0x07, 0x3d, 0x76, 0x85, 0x13, 0x88, 0x22, 0x5d, 0xc9, 0x63, 0x55, 0xf6, 0x00, 0x00, 0x36, 0x49, 0x85, 0x39, 0x35, 0x7a, 0xae, 0x25, 0x0d, 0x0f, 0x0c, 0x09, 0x55, 0xe4, 0x20, 0x16, 0x48, 0xbf, 0xed, 0xae, 0xd4, 0x42, 0xe3, 0x16, 0x38, 0x8a, 0x19, 0x94, 0xc9, 0x42, 0x8a, 0x51, 0x2b, 0x29, 0x94, 0x4f, 0x54, 0x66, 0x1a, 0xb3, 0x81, 0xd6, 0xc3, 0xf3, 0xcd, 0x40, 0x90, 0x57, 0x75, 0xba, 0xcf, 0xa2, 0xb6, 0x02, 0x5d, 0x34, 0xa7, 0x8c, 0xce, 0xd9, 0xa7, 0x8e, 0xcd, 0xa7, 0x5d, 0xc7, 0x9f, 0x86, 0x5b, 0x6b, 0xa3, 0xb1, 0x9b, 0x82, 0xba, 0x06, 0x27, 0xa1, 0x41, 0x43, 0xd3, 0x5f, 0xc4, 0x90, 0x6b, 0x3d, 0xa1, 0xba, 0xbf, 0x1b, 0xba, 0x52, 0xd0, 0x0b, 0x99, 0x36, 0x79, 0x98, 0x2f, 0xef, 0xdf, 0x40, 0x1c, 0x9b, 0xa2, 0xf1, 0xb6, 0x38, 0x8b, 0x95, 0x30, 0xf5, 0xea, 0xf2, 0x92, 0x90, 0x28, 0xc2, 0xcc, 0x3c, 0xaa, 0x58, 0x94, 0xc2, 0x01, 0x81, 0xf9, 0x37, 0x8c, 0x9c, 0x66, 0xae, 0xbb, 0xe1, 0xca, 0x22, 0x85, 0xe1, 0xd4, 0xae, 0x61, 0x47, 0x6f, 0xe9, 0x2c, 0x5a, 0xbc, 0xc9, 0xf5, 0x76, 0x9a, 0x4c, 0x95, 0x0d, 0x75, 0xa2, 0x5d, 0x3e, 0x88, 0xd4, 0xa0, 0x20, 0x03, 0x96, 0x39, 0x22, 0xf9, 0x1a, 0xfa, 0x79, 0xdf, 0x5a, 0x77, 0x23, 0x3c, 0x6c, 0x16, 0x48, 0x0a, 0x61, 0x24, 0x86, 0xcd, 0x63, 0xdc, 0xb3, 0xca, 0x02, 0x49, 0xb1, 0x5e, 0x29, 0xfc, 0xa8, 0x2b, 0x35, 0x2f, 0x68, 0x3b, 0xd6, 0xf9, 0x05, 0x1c, 0x2b, 0xf4, 0xb5, 0xa5, 0xc7, 0xa3, 0xfd, 0xe0, 0x60, 0xeb, 0xf9, 0x70, 0x3a, 0x9d, 0x0e, 0x49, 0x0f, 0x78, 0xc1, 0xca, 0xc9, 0x8e, 0x28, 0x07, 0x3d, 0x3e, 0x83, 0x71, 0x26, 0xfb, 0xfd, 0xea, 0xd5, 0x2b, 0xd1, 0x63, 0xce, 0xaf, 0x3a, 0x1a, 0x85, 0x05, 0x79, 0x12, 0x8d, 0x2a, 0xd6, 0xfd, 0xaf, 0xbe, 0x5a, 0x35, 0x33, 0x6a, 0x12, 0x0c, 0x96, 0xa1, 0xac, 0xd7, 0xd6, 0xc8, 0x76, 0x80, 0x38, 0xd1, 0xab, 0x7d, 0xe0, 0x32, 0x13, 0xcd, 0xd8, 0xc1, 0xd1, 0x2c, 0xb9, 0x2f, 0x08, 0xbd, 0x28, 0x63, 0x77, 0x3b, 0x8f, 0xf2, 0x54, 0x7d, 0xb4, 0x2c, 0x9d, 0x60, 0x1d, 0xcb, 0x64, 0xd3, 0x51, 0xe8, 0xb3, 0x69, 0x2e, 0x19, 0x60, 0xa9, 0x7c, 0xab, 0x3b, 0xf6, 0x3d, 0xe7, 0x21, 0x5b, 0xdd, 0x3e, 0x92, 0xa7, 0xbd, 0x47, 0x12, 0xdd, 0x7c, 0x58, 0x55, 0xd8, 0xf6, 0xad, 0x57, 0x84, 0xe2, 0xf9, 0x4a, 0x2e, 0xc4, 0xab, 0x2b, 0xe4, 0x6f, 0x11, 0xb2, 0x85, 0x99, 0x72, 0xcd, 0x4c, 0x40, 0xe4, 0xc7, 0x78, 0x7c, 0xbc, 0x73, 0x7e, 0x3c, 0x0e, 0x32, 0xde, 0xef, 0xe0, 0x32, 0xe6, 0xde, 0xd2, 0x2d, 0x97, 0x27, 0x6f, 0x11, 0x61, 0x26, 0x97, 0x17, 0x6d, 0x0a, 0xe7, 0xaf, 0x44, 0x21, 0x46, 0x56, 0x85, 0x16, 0xc3, 0x58, 0xd9, 0x5d, 0x64, 0x05, 0x15, 0x91, 0x43, 0x84, 0xd3, 0x0d, 0xa0, 0x84, 0xd8, 0x3a, 0x79, 0xf7, 0xf2, 0x1c, 0xe5, 0x2d, 0x8d, 0xa4, 0x78, 0xc0, 0x05, 0x14, 0x7a, 0xc6, 0x6f, 0x2c, 0x2e, 0x01, 0x45, 0x6d, 0xd2, 0xa9, 0xeb, 0x11, 0xa2, 0xca, 0x3a, 0x1f, 0x5f, 0xad, 0x84, 0xb7, 0x6e, 0xfb, 0xcd, 0x96, 0x8a, 0x74, 0xe8, 0xd2, 0x7c, 0xf7, 0x34, 0xf6, 0xa2, 0xa7, 0xc1, 0x1b, 0x10, 0xbf, 0x0e, 0x67, 0xc2, 0xca, 0x75, 0xa3, 0xa5, 0x8a, 0x5f, 0xa7, 0x3f, 0x2f, 0x2f, 0x73, 0x78, 0x02, 0xe9, 0xbc, 0xfc, 0xc0, 0x5b, 0xe0, 0x26, 0xe5, 0xdd, 0xa9, 0xb9, 0x14, 0xa7, 0x0d, 0x1a, 0xcb, 0x57, 0x04, 0x72, 0xc2, 0xee, 0xa9, 0x6d, 0x4f, 0xa4, 0x25, 0x90, 0x61, 0x85, 0x21, 0x21, 0x31, 0xe6, 0x53, 0x63, 0x22, 0x4c, 0x91, 0xfd, 0x41, 0xe5, 0x80, 0x75, 0x3b, 0xc5, 0x36, 0x6f, 0x21, 0x3f, 0xaa, 0x87, 0xb4, 0x0e, 0x63, 0x15, 0xa4, 0x29, 0xc8, 0x0a, 0xd7, 0xfa, 0xe1, 0x9f, 0xb6, 0x84, 0xc7, 0xd7, 0xb0, 0xc8, 0x2e, 0x03, 0xa1, 0x6b, 0x51, 0x28, 0x22, 0x50, 0x7b, 0xa4, 0xa2, 0x52, 0x79, 0xbf, 0xb4, 0xfc, 0xf5, 0x91, 0xce, 0x61, 0x61, 0x0d, 0x67, 0x83, 0x28, 0x4c, 0xfd, 0xa0, 0xdb, 0xe5, 0x8b, 0x81, 0x00, 0xdb, 0xf8, 0xd0, 0x2d, 0x34, 0x1e, 0x4d, 0xf4, 0xed, 0x0c, 0xf7, 0xf5, 0xa1, 0xeb, 0x2a, 0xd0, 0x81, 0xec, 0x69, 0x75, 0x1c, 0xe0, 0x38, 0x24, 0x62, 0x50, 0x37, 0x68, 0x4e, 0x7a, 0xd3, 0x63, 0xe4, 0xb0, 0x12, 0x7b, 0xee, 0x40, 0xca, 0xf9, 0x7e, 0xb0, 0x16, 0x98, 0xd9, 0x2c, 0x55, 0xa0, 0xbd, 0x68, 0x80, 0xfe, 0xdf, 0x37, 0x5d, 0xd3, 0x9c, 0x51, 0x2f, 0x34, 0x5f, 0x0c, 0xb4, 0xd7, 0x85, 0x9e, 0x06, 0x6e, 0xc2, 0xee, 0xbb, 0x3d, 0x90, 0xdb, 0xf7, 0xcc, 0xe7, 0x9b, 0xc3, 0x97, 0xaf, 0x2d, 0x8c, 0xc0, 0x2f, 0x0b, 0xea, 0xb0, 0x4f, 0x44, 0x5d, 0x63, 0x84, 0x39, 0x49, 0x88, 0x03, 0x3d, 0x7e, 0x11, 0xeb, 0xfb, 0x9a, 0x64, 0xdc, 0x1c, 0x61, 0xa5, 0x8e, 0x12, 0x3a, 0x1d, 0x25, 0x54, 0xa2, 0x15, 0xa3, 0xae, 0xd5, 0x19, 0xdf, 0x90, 0xde, 0x1e, 0x01, 0xbd, 0x9e, 0x11, 0x3f, 0xfb, 0x40, 0x3c, 0xd6, 0xd0, 0x94, 0xb9, 0xb6, 0xca, 0x23, 0xe4, 0x4b, 0x22, 0xe4, 0x79, 0x39, 0x29, 0x2f, 0x2e, 0xd6, 0x48, 0x77, 0x46, 0x64, 0xa4, 0x1a, 0x28, 0x26, 0x98, 0x0d, 0x6c, 0x23, 0xde, 0x9b, 0x30, 0x62, 0x67, 0x65, 0xae, 0xda, 0x86, 0x14, 0x26, 0x48, 0x77, 0xfa, 0x40, 0xf0, 0xf8, 0x85, 0xe9, 0x6a, 0x33, 0xa8, 0x89, 0x47, 0x85, 0xf9, 0xec, 0x8e, 0xd1, 0x34, 0x21, 0x8b, 0x77, 0x5f, 0x27, 0x7f, 0xff, 0xc7, 0x9f, 0x7f, 0x8a, 0x80, 0xfe, 0xc3, 0xe1, 0x77, 0xc5, 0x95, 0x85, 0xe6, 0x69, 0x05, 0x8b, 0xb6, 0xf8, 0xec, 0x9c, 0x68, 0xc2, 0xf1, 0x8c, 0xa6, 0xce, 0xe6, 0x17, 0x23, 0x2f, 0xa7, 0x32, 0x14, 0x8b, 0x30, 0xa1, 0xf4, 0x83, 0xd4, 0xc4, 0x0d, 0xa5, 0xe0, 0x5c, 0xbe, 0x0b, 0xb0, 0x6c, 0xea, 0x9c, 0xe3, 0x52, 0xa6, 0x2d, 0x98, 0x2e, 0x9f, 0x44, 0x80, 0x1f, 0xe3, 0xba, 0xdb, 0x74, 0x83, 0xe9, 0xef, 0xcf, 0x8e, 0xac, 0xab, 0xd3, 0xe7, 0xca, 0x57, 0x86, 0x52, 0xef, 0x86, 0xd9, 0x5d, 0x36, 0x31, 0x5c, 0xa2, 0x56, 0xe0, 0x87, 0xe1, 0xa2, 0x4e, 0x5e, 0x2c, 0x0c, 0x8d, 0xe7, 0x3d, 0x90, 0x1d, 0xdf, 0xe0, 0xb5, 0x44, 0x5f, 0xb3, 0x90, 0xa1, 0x97, 0x65, 0x65, 0x76, 0x68, 0x21, 0xd5, 0xb8, 0x52, 0x92, 0xdc, 0x76, 0x66, 0x24, 0x54, 0x60, 0x12, 0xb8, 0x03, 0xae, 0x1f, 0x8b, 0xc6, 0x4d, 0xf8, 0x67, 0x1e, 0x3a, 0x17, 0x29, 0xeb, 0x2b, 0xa3, 0x3c, 0x9a, 0xd9, 0x1b, 0x23, 0x1b, 0xd6, 0x7a, 0x3d, 0x10, 0x92, 0xaa, 0x14, 0xba, 0x2d, 0x0a, 0x23, 0x60, 0xcb, 0x10, 0xd9, 0xc2, 0x32, 0x4c, 0xc7, 0x5f, 0x91, 0x6d, 0xee, 0xe9, 0x03, 0xae, 0x49, 0x4b, 0xdf, 0x70, 0x5f, 0x75, 0x01, 0xec, 0x06, 0x4d, 0x5c, 0xf6, 0x2a, 0x0a, 0x36, 0x72, 0x6d, 0xbb, 0xeb, 0x7b, 0x62, 0xad, 0xa9, 0x1c, 0x5c, 0xca, 0x45, 0x3a, 0xb3, 0x85, 0xf4, 0x3e, 0x5a, 0x1f, 0x95, 0x21, 0xa6, 0xa8, 0x8b, 0xcc, 0xe6, 0x23, 0x69, 0x36, 0x4d, 0x69, 0x55, 0x6e, 0x4c, 0x62, 0xb8, 0x5d, 0x5c, 0x97, 0x1a, 0x29, 0x02, 0x5c, 0x0d, 0x2b, 0x0e, 0x7d, 0x2a, 0x2b, 0x17, 0xcf, 0x43, 0x34, 0xd6, 0x7b, 0x2e, 0x78, 0x39, 0x97, 0x64, 0xf6, 0x8b, 0xfd, 0x40, 0x08, 0xc5, 0xd4, 0x52, 0x8b, 0x61, 0x48, 0xf0, 0x36, 0xa5, 0x57, 0x80, 0x87, 0xf0, 0x81, 0x1f, 0xca, 0x81, 0x77, 0x86, 0x43, 0xac, 0xe5, 0xe9, 0x93, 0x27, 0x4f, 0x38, 0xd6, 0xb2, 0x71, 0x44, 0x1f, 0x3e, 0x3b, 0x7c, 0x75, 0xf2, 0xf6, 0xed, 0xe1, 0xbb, 0xd7, 0x87, 0xaf, 0x35, 0xe3, 0xc3, 0x5b, 0x89, 0xa3, 0x8e, 0x70, 0x45, 0xc8, 0x12, 0x34, 0xfb, 0xbc, 0xf7, 0x64, 0x77, 0xb8, 0xff, 0x64, 0x37, 0x31, 0xb4, 0x98, 0xda, 0x3a, 0xb5, 0x74, 0x9e, 0xc2, 0xbe, 0xbd, 0x5a, 0x19, 0x55, 0x0d, 0x68, 0x9a, 0x0d, 0x30, 0x37, 0xc8, 0xf5, 0x0a, 0x6f, 0x4f, 0xd6, 0xc0, 0x8e, 0x8e, 0x64, 0x06, 0x8c, 0x36, 0x2c, 0x30, 0x9a, 0x0b, 0x58, 0x8a, 0xee, 0x43, 0x04, 0xba, 0xbf, 0x8b, 0x0f, 0x8d, 0x92, 0x37, 0x46, 0xfb, 0xb8, 0x28, 0x6f, 0x99, 0x16, 0x5f, 0x5d, 0x19, 0xa5, 0x34, 0x0b, 0x43, 0x95, 0xed, 0xf7, 0xf1, 0xfa, 0x23, 0x7e, 0xfd, 0x5f, 0x18, 0xa3, 0x7f, 0xf2, 0xbc, 0x6d, 0x58, 0x9a, 0x8b, 0x4c, 0x50, 0xec, 0x5a, 0x92, 0xd8, 0x03, 0xc2, 0x3a, 0x66, 0x73, 0xfc, 0x9b, 0x97, 0xa7, 0x78, 0xda, 0x98, 0xe5, 0x27, 0x3f, 0xfc, 0xc9, 0x95, 0x79, 0x5e, 0xef, 0x69, 0x36, 0xa3, 0x54, 0xb2, 0x52, 0x7f, 0xba, 0x22, 0x0c, 0x7a, 0x3b, 0x65, 0xd6, 0x1a, 0x84, 0x2a, 0x64, 0x68, 0x85, 0xc8, 0x40, 0x35, 0x5b, 0xc7, 0xad, 0xa3, 0xe4, 0xd0, 0xaa, 0x5a, 0xae, 0x78, 0xac, 0xae, 0xdf, 0xb0, 0x72, 0x4c, 0xe3, 0x36, 0xe7, 0x56, 0x0b, 0x79, 0x31, 0xe3, 0x7e, 0xad, 0x2d, 0xc7, 0x6c, 0x53, 0xad, 0xb2, 0x98, 0xd7, 0x74, 0x2d, 0xc6, 0x0e, 0x94, 0xda, 0x2a, 0x5f, 0xa4, 0x55, 0xce, 0x5d, 0xd9, 0x41, 0xe0, 0x37, 0xdc, 0x42, 0x92, 0x53, 0xa5, 0x28, 0xf6, 0x65, 0xd1, 0x1c, 0xe1, 0xac, 0x89, 0x60, 0x99, 0xe7, 0x53, 0xb9, 0x52, 0x0c, 0x6b, 0x24, 0x31, 0x4a, 0xde, 0xac, 0x75, 0xc7, 0xf4, 0xb4, 0x6d, 0xff, 0x5b, 0x85, 0x22, 0x5a, 0x82, 0x0b, 0x15, 0xf7, 0xcd, 0xd1, 0xf1, 0xe1, 0x76, 0xf2, 0x26, 0x6b, 0xa4, 0xc4, 0x49, 0x33, 0x8c, 0x21, 0xf2, 0x7f, 0x43, 0x0a, 0x96, 0xc5, 0x01, 0x94, 0x1a, 0xe1, 0x68, 0x2e, 0x98, 0xf8, 0xe0, 0x48, 0xd9, 0xd0, 0x7a, 0x29, 0x3e, 0x1c, 0x5a, 0x22, 0xe2, 0x71, 0x9a, 0x5b, 0xa6, 0xf1, 0x4d, 0x39, 0xf9, 0x48, 0xde, 0xad, 0xe2, 0x3c, 0x8c, 0x3c, 0xc4, 0xb3, 0xd2, 0x4f, 0x21, 0xc0, 0xa4, 0x25, 0xe7, 0x59, 0xe3, 0xc5, 0x79, 0xbd, 0x9c, 0x83, 0x1b, 0x44, 0x51, 0x5e, 0xe6, 0x99, 0xab, 0xec, 0x23, 0xca, 0xe7, 0x06, 0xea, 0x62, 0xf4, 0x10, 0x43, 0xc5, 0x7a, 0xbd, 0x8d, 0xfb, 0x46, 0x37, 0x0e, 0x69, 0x27, 0xfc, 0xe7, 0xce, 0x97, 0x51, 0xf0, 0x31, 0x21, 0xf4, 0x43, 0x6a, 0x25, 0x2b, 0x6f, 0x10, 0x45, 0x71, 0x6b, 0x71, 0x11, 0xf2, 0xaa, 0x76, 0xb6, 0x28, 0x21, 0xa2, 0xbe, 0x92, 0xef, 0x4e, 0xcd, 0xdd, 0x3f, 0x49, 0xfb, 0x22, 0xd5, 0x1f, 0x50, 0x02, 0xee, 0xa4, 0x0b, 0x37, 0xaf, 0xb5, 0x59, 0xc6, 0x49, 0xac, 0x53, 0x18, 0x73, 0x65, 0xe9, 0x54, 0xcb, 0xda, 0x14, 0xb2, 0xf5, 0x53, 0x4d, 0xd7, 0xd7, 0xf9, 0xe2, 0xb1, 0x2b, 0x41, 0x8b, 0x26, 0x5f, 0x0a, 0x57, 0x91, 0xd5, 0x51, 0x97, 0xbf, 0x94, 0xb7, 0x49, 0x68, 0x8f, 0x3a, 0x8d, 0xb2, 0x53, 0x86, 0x75, 0xe8, 0x15, 0x14, 0x3a, 0xae, 0xec, 0x22, 0xe8, 0xff, 0x8a, 0x21, 0x2a, 0x23, 0xda, 0x92, 0x7c, 0xdd, 0x67, 0x41, 0x5d, 0x9d, 0xdd, 0xff, 0x4c, 0xdb, 0x12, 0x0d, 0xd5, 0x45, 0xb3, 0x77, 0xa4, 0x53, 0xa2, 0xcf, 0x06, 0xaa, 0xde, 0xa7, 0x1f, 0x73, 0x2a, 0x44, 0x5c, 0x91, 0x3a, 0x97, 0x16, 0x5a, 0x6f, 0xc5, 0xd3, 0x74, 0xd8, 0xea, 0x33, 0x44, 0x3c, 0xfe, 0xd4, 0xa7, 0x7d, 0x32, 0x64, 0x19, 0x9c, 0x06, 0x80, 0x3d, 0xd5, 0xf9, 0xcc, 0xa9, 0xa2, 0xc1, 0xde, 0x16, 0x55, 0xd4, 0x50, 0x0f, 0x49, 0xba, 0x62, 0x04, 0x8a, 0x39, 0xa3, 0x3e, 0xc4, 0xe4, 0xf2, 0xd3, 0xfe, 0xf6, 0x9b, 0x55, 0xc6, 0x70, 0xf0, 0x23, 0x63, 0x89, 0x2e, 0x50, 0x12, 0x40, 0x69, 0xb6, 0xb2, 0x64, 0xd9, 0x1e, 0xc3, 0xdb, 0x2e, 0xf3, 0xeb, 0x58, 0x96, 0x05, 0xf2, 0x23, 0x64, 0x62, 0x94, 0xa5, 0xe1, 0xba, 0xa8, 0x6a, 0xda, 0xb1, 0x0d, 0x69, 0xb3, 0x5f, 0x1a, 0x38, 0x80, 0xb2, 0xb3, 0xc1, 0x0d, 0x9e, 0x43, 0x63, 0x05, 0xa0, 0x57, 0xc1, 0x7d, 0x6b, 0xbf, 0x31, 0x9a, 0xcf, 0xc1, 0x86, 0x05, 0x31, 0x27, 0xbf, 0x2a, 0x63, 0x84, 0xfb, 0x94, 0x23, 0x9d, 0x94, 0x87, 0xd1, 0x76, 0x5c, 0xa2, 0xb9, 0x37, 0xca, 0xb8, 0x6c, 0xc1, 0x4d, 0x98, 0xd6, 0x6c, 0x0b, 0x60, 0xb8, 0x62, 0x34, 0x04, 0x69, 0xc7, 0x94, 0x7e, 0x18, 0xbe, 0xa2, 0x8f, 0x0f, 0xbf, 0xa1, 0xe1, 0xfe, 0xb0, 0x61, 0x1d, 0xbe, 0xdd, 0x5f, 0x1d, 0x84, 0xfd, 0x73, 0x9d, 0xdf, 0x90, 0x0d, 0x8f, 0x95, 0x56, 0x65, 0x50, 0x22, 0x89, 0x4c, 0x90, 0x5b, 0x53, 0x99, 0x2b, 0xb2, 0xa3, 0x07, 0x2e, 0x9d, 0x6f, 0x8a, 0xa6, 0xaf, 0x71, 0xab, 0x91, 0x22, 0x4b, 0x02, 0xd3, 0x99, 0x0d, 0xcb, 0x8b, 0x21, 0x65, 0x48, 0x1b, 0xe6, 0xff, 0x11, 0xc9, 0x48, 0xde, 0xad, 0x23, 0x80, 0x10, 0x82, 0xbb, 0x9e, 0xcd, 0x62, 0xaa, 0x39, 0x17, 0x32, 0x42, 0xeb, 0x10, 0xc2, 0xd7, 0x42, 0x0b, 0x3e, 0xc8, 0x03, 0xf1, 0xca, 0xd3, 0xeb, 0xb6, 0xf9, 0x13, 0x90, 0xb9, 0xa4, 0x20, 0x22, 0xf0, 0xa7, 0x51, 0x79, 0xc4, 0x80, 0xb5, 0x77, 0x5a, 0x35, 0xd9, 0x70, 0x0b, 0x76, 0xe5, 0x92, 0xff, 0x79, 0xb5, 0x24, 0x95, 0x15, 0x10, 0x9a, 0x81, 0xf7, 0x45, 0x8b, 0x44, 0xa8, 0xb5, 0x8f, 0x11, 0xfe, 0x4f, 0x46, 0xbb, 0x83, 0x20, 0x50, 0xdf, 0x90, 0xb1, 0x5f, 0xb8, 0x2c, 0x21, 0xf3, 0x30, 0xf1, 0xc8, 0x61, 0xac, 0xba, 0xb6, 0x6e, 0xee, 0xc0, 0xaf, 0x6d, 0x31, 0x2d, 0xa5, 0x16, 0xbb, 0xba, 0x07, 0x97, 0xd3, 0x43, 0x5b, 0x28, 0x6c, 0x93, 0xab, 0x68, 0x63, 0xa8, 0xa3, 0x92, 0xb1, 0xf5, 0xe5, 0xb0, 0xdb, 0x3d, 0xd2, 0x36, 0x01, 0xf3, 0xab, 0x37, 0xbc, 0x76, 0x5e, 0xbd, 0x9e, 0x26, 0x02, 0xaf, 0x7f, 0xa9, 0xfd, 0x66, 0x86, 0x66, 0x53, 0xa5, 0xd1, 0xe9, 0x30, 0xc3, 0x0f, 0x19, 0xb0, 0x43, 0xa1, 0x3c, 0xeb, 0xfe, 0x3d, 0x63, 0x5c, 0xdb, 0x67, 0xd8, 0x31, 0x8b, 0xe6, 0xaf, 0x8d, 0x6b, 0x9c, 0x7c, 0x20, 0xb2, 0xf5, 0xee, 0x52, 0x77, 0xcf, 0xc0, 0x55, 0xc0, 0x09, 0x0a, 0xcd, 0xf9, 0xa6, 0x3e, 0xe5, 0xb7, 0x77, 0xbd, 0xa9, 0xc5, 0x3d, 0x39, 0xbf, 0x74, 0x6d, 0xde, 0x40, 0xb1, 0x1f, 0xbe, 0x33, 0xc7, 0x70, 0x90, 0xfc, 0x47, 0x99, 0x71, 0xcd, 0xea, 0x3d, 0x25, 0xab, 0xdf, 0xbf, 0x3c, 0x7b, 0x77, 0xf4, 0xee, 0xeb, 0x03, 0xcb, 0xe3, 0xc0, 0xef, 0xba, 0x5d, 0x24, 0x2c, 0xef, 0xa6, 0xdf, 0x72, 0x9b, 0x72, 0x78, 0x7f, 0xfa, 0x60, 0xad, 0x11, 0xcb, 0x24, 0xf6, 0xcc, 0xce, 0xcb, 0x2a, 0xe3, 0xb8, 0x08, 0xdb, 0xa2, 0x5a, 0x39, 0x21, 0xe5, 0x9a, 0x24, 0x2a, 0x9b, 0x72, 0x3e, 0x8b, 0x01, 0x36, 0x0c, 0x8f, 0x71, 0x26, 0xf3, 0xb2, 0xd5, 0x97, 0x09, 0x44, 0x39, 0xa7, 0xe3, 0x2f, 0x7d, 0x0a, 0xf0, 0xda, 0x2b, 0xc1, 0x96, 0x2a, 0x23, 0xdd, 0xf5, 0xc8, 0xcc, 0xe3, 0x34, 0x9c, 0xa0, 0x1f, 0x0d, 0x77, 0x95, 0xa8, 0xe9, 0xc8, 0xea, 0x9c, 0x9c, 0x0d, 0x76, 0x4b, 0x34, 0xc7, 0x2b, 0xe2, 0x07, 0xe1, 0xbd, 0x9a, 0xa6, 0x2b, 0xbe, 0x2f, 0x8c, 0x4e, 0x26, 0x3f, 0x75, 0x75, 0x19, 0x76, 0x07, 0x1e, 0x9c, 0xe6, 0xec, 0xf2, 0x9c, 0x59, 0x9f, 0x67, 0x03, 0xd1, 0x63, 0x59, 0xe6, 0x4f, 0x88, 0x92, 0x28, 0x0e, 0xc9, 0x3c, 0x73, 0x55, 0x49, 0x56, 0xd7, 0xb9, 0x62, 0x5d, 0x67, 0xbe, 0x0c, 0xc0, 0xf6, 0xa8, 0x0f, 0x1d, 0x7e, 0xa3, 0x4e, 0x1d, 0x04, 0xaf, 0x48, 0x02, 0xab, 0x59, 0xd2, 0x02, 0xb7, 0xb3, 0x1d, 0x13, 0x99, 0xa9, 0x87, 0xf2, 0x14, 0x78, 0x4f, 0x19, 0xe3, 0x8d, 0xf9, 0x15, 0x30, 0xe6, 0xeb, 0x66, 0x8f, 0x97, 0xab, 0xc9, 0x62, 0xf6, 0x24, 0x79, 0x61, 0xfe, 0x13, 0x28, 0x59, 0x94, 0x33, 0x3a, 0x7e, 0x65, 0x14, 0x2d, 0x24, 0xb8, 0x40, 0x5e, 0x30, 0xe4, 0x8d, 0xd7, 0xb7, 0xe1, 0xd1, 0xbe, 0x99, 0xe9, 0x6d, 0xaa, 0xd0, 0x96, 0x46, 0x23, 0xbc, 0xcc, 0x1b, 0xce, 0xd3, 0xeb, 0xc1, 0x0d, 0xf2, 0x52, 0x1b, 0xe8, 0xcc, 0xf7, 0xf6, 0x3f, 0x4f, 0x50, 0x7c, 0xf0, 0xf6, 0xf5, 0x93, 0x64, 0x7a, 0x95, 0x4d, 0x3f, 0xd6, 0xab, 0x85, 0xb2, 0x63, 0xec, 0x69, 0xc3, 0x68, 0xd1, 0x01, 0xe2, 0x83, 0x99, 0xf8, 0x3c, 0x9f, 0xa2, 0xf4, 0x6f, 0xd0, 0x8a, 0x4e, 0x5d, 0x68, 0x74, 0xca, 0xb3, 0x43, 0xad, 0xd8, 0xa0, 0x74, 0x01, 0xce, 0xa9, 0x89, 0x04, 0x2f, 0xcc, 0x1e, 0x98, 0x8f, 0xd7, 0xdc, 0xe4, 0x79, 0xad, 0xcb, 0xf6, 0x59, 0xdb, 0xeb, 0x8d, 0x8b, 0xbd, 0x3b, 0x7a, 0xde, 0xd3, 0x91, 0x9d, 0x32, 0x53, 0x2c, 0x48, 0x3d, 0x0c, 0x7e, 0xad, 0xb6, 0x23, 0x7b, 0x00, 0x5a, 0x3e, 0x26, 0x09, 0x40, 0x28, 0x0d, 0xe3, 0x05, 0x1f, 0xc7, 0x93, 0x3b, 0x78, 0x82, 0xf3, 0x0c, 0x38, 0x8b, 0x2d, 0x23, 0x4c, 0x0a, 0x26, 0x2d, 0x4a, 0x13, 0xb2, 0x51, 0x40, 0x8b, 0x70, 0x46, 0x21, 0xd8, 0x50, 0x69, 0xb3, 0xf5, 0xdf, 0xea, 0xb2, 0x71, 0x2c, 0x46, 0x4a, 0x68, 0x3d, 0x34, 0x07, 0xad, 0x25, 0x24, 0xbc, 0x36, 0xd8, 0x14, 0x01, 0x91, 0xd9, 0xef, 0x72, 0x5c, 0xda, 0x1d, 0x47, 0xcd, 0x68, 0x84, 0xe4, 0x3c, 0x47, 0xf3, 0x54, 0xb6, 0xa8, 0xcb, 0x9b, 0xe2, 0xb2, 0x82, 0x7f, 0x84, 0x8a, 0xc2, 0xd2, 0x58, 0x2c, 0x23, 0x66, 0x16, 0x27, 0x17, 0x2b, 0xb2, 0x84, 0x68, 0x78, 0xdd, 0x35, 0x41, 0xcf, 0x34, 0x3a, 0xba, 0x54, 0x34, 0x92, 0x30, 0xe8, 0xc0, 0xa3, 0x52, 0x42, 0x58, 0xd0, 0xa8, 0x0b, 0x5c, 0xcb, 0x90, 0x03, 0x6d, 0xed, 0xde, 0x68, 0x57, 0x73, 0xad, 0x22, 0xb6, 0xbc, 0x77, 0xd6, 0xbb, 0x03, 0x39, 0x6f, 0xf3, 0x46, 0x5f, 0x0b, 0x14, 0x0f, 0x7c, 0x4d, 0x92, 0x64, 0x5a, 0x07, 0x8d, 0x6f, 0x79, 0x0a, 0x37, 0x67, 0x4b, 0x98, 0x5b, 0xd3, 0x93, 0xc6, 0x67, 0x76, 0x4c, 0x1c, 0x61, 0xd9, 0xac, 0x35, 0xd0, 0x5a, 0xe6, 0xe5, 0x37, 0x5e, 0xe3, 0xe9, 0xee, 0x49, 0x3c, 0x07, 0xff, 0xda, 0xef, 0x52, 0xaf, 0xf9, 0xf5, 0x43, 0xa8, 0x37, 0xb2, 0x96, 0xbd, 0xb5, 0xd3, 0x68, 0x95, 0x7c, 0xec, 0x0e, 0xdc, 0xe7, 0x76, 0xb5, 0x51, 0xa4, 0xcc, 0x47, 0xef, 0x57, 0x18, 0xde, 0x0e, 0xe1, 0xea, 0xe9, 0x0d, 0xd4, 0xcd, 0x94, 0xd5, 0x10, 0xba, 0xff, 0x3c, 0x9b, 0x05, 0xba, 0x58, 0xec, 0x30, 0x88, 0x67, 0xe7, 0x75, 0x0d, 0x25, 0x19, 0xfa, 0x31, 0x11, 0x3a, 0xe2, 0x4f, 0xb4, 0x24, 0xeb, 0x1c, 0x88, 0xe5, 0xff, 0x13, 0x91, 0xec, 0x5b, 0x55, 0x5f, 0x68, 0x66, 0x2f, 0x79, 0xbf, 0x24, 0x4a, 0x46, 0xa4, 0xbc, 0xf1, 0x5a, 0x2d, 0x24, 0x34, 0x39, 0x46, 0x6a, 0x89, 0xcd, 0x8e, 0x3d, 0x65, 0x7e, 0x43, 0x25, 0x2d, 0xfc, 0xac, 0xf5, 0x53, 0x35, 0x2a, 0x6a, 0x5d, 0x8f, 0x37, 0x86, 0xd9, 0xd7, 0x39, 0xc6, 0xf0, 0x81, 0xf9, 0x82, 0x1a, 0x8d, 0x55, 0x06, 0x68, 0x25, 0xe5, 0x03, 0xf7, 0x9c, 0x63, 0x41, 0xb6, 0xdd, 0xde, 0xcc, 0xf5, 0x7b, 0x8b, 0x38, 0x6a, 0x72, 0xd7, 0x85, 0xbb, 0x83, 0x10, 0x18, 0x44, 0x92, 0xa2, 0xc7, 0xf1, 0xe0, 0xfe, 0x05, 0x01, 0x10, 0x58, 0xce, 0xce, 0x36, 0x2d, 0x84, 0xe5, 0xd5, 0x8c, 0x1e, 0x46, 0xdc, 0xbb, 0x83, 0xe8, 0xec, 0x40, 0x6e, 0x3e, 0xf1, 0xb7, 0x50, 0xf5, 0x9e, 0x47, 0x88, 0xeb, 0x17, 0xdd, 0x85, 0xfd, 0x75, 0xf1, 0x54, 0x63, 0xad, 0xa5, 0xf3, 0x65, 0x31, 0xd2, 0x2f, 0x3c, 0x68, 0x7f, 0xba, 0xc7, 0x6c, 0xbb, 0x3d, 0xfc, 0xb2, 0xfd, 0xe9, 0xee, 0x8d, 0xcf, 0xcb, 0xfc, 0xfd, 0xe9, 0x9e, 0xe5, 0xda, 0xde, 0x11, 0x5c, 0xb7, 0xae, 0x9d, 0xd3, 0x87, 0x5c, 0x9b, 0x17, 0x2b, 0x4b, 0x49, 0xe4, 0x46, 0x2a, 0xee, 0xdc, 0x20, 0x39, 0x62, 0x4c, 0x65, 0x4a, 0x8c, 0x90, 0xd7, 0x8f, 0xb9, 0xb4, 0x4f, 0x5c, 0x6e, 0xea, 0x6e, 0x8c, 0x14, 0xff, 0xe6, 0x53, 0x20, 0x3b, 0x39, 0x67, 0x1f, 0x94, 0x75, 0xdb, 0x3a, 0x63, 0x45, 0xde, 0xcc, 0xe4, 0xe5, 0x12, 0xd5, 0x79, 0x86, 0x47, 0xdd, 0xda, 0x4e, 0xa8, 0xb1, 0x5e, 0xe2, 0x46, 0x83, 0xa3, 0x56, 0x27, 0x46, 0x76, 0x49, 0xd2, 0x6f, 0x77, 0x3a, 0x34, 0x3a, 0x23, 0xaf, 0xcd, 0x91, 0xe6, 0x5e, 0xb1, 0xce, 0xba, 0x9f, 0x5c, 0xe6, 0x97, 0x01, 0xa2, 0xfb, 0xe4, 0xae, 0x89, 0x54, 0xa0, 0x60, 0xd5, 0xd8, 0x85, 0xad, 0x5a, 0x12, 0xdc, 0x1e, 0x3f, 0x1d, 0xed, 0x6e, 0x0f, 0xd0, 0x12, 0x7a, 0x49, 0x3b, 0x80, 0x12, 0x01, 0xab, 0xd7, 0xa1, 0x42, 0x26, 0xbf, 0x84, 0xb0, 0x23, 0xc7, 0x42, 0x24, 0x13, 0x04, 0x8e, 0x35, 0xc9, 0xb0, 0xd2, 0xf4, 0x25, 0x41, 0xba, 0x6c, 0x57, 0xc7, 0xe5, 0x03, 0xea, 0x32, 0x45, 0x6e, 0xb1, 0xae, 0xdf, 0x5a, 0x9c, 0x65, 0xae, 0x05, 0xbc, 0x27, 0xc9, 0x55, 0xd9, 0x16, 0x1e, 0x20, 0xdd, 0x01, 0x28, 0xa6, 0x20, 0xdc, 0x32, 0x08, 0x8b, 0xb6, 0x5f, 0x9c, 0x92, 0x53, 0x85, 0xbf, 0x20, 0xb6, 0x2f, 0x5b, 0x18, 0x96, 0xe3, 0xc1, 0x40, 0x85, 0x2b, 0x91, 0xfb, 0x2e, 0x0c, 0x42, 0x44, 0x2f, 0xeb, 0xf6, 0x72, 0x18, 0xb5, 0xad, 0x0b, 0xa7, 0xb8, 0xb2, 0xa3, 0xd1, 0x28, 0x52, 0x49, 0x7f, 0x9d, 0x67, 0x37, 0x2d, 0x2f, 0xa0, 0xcc, 0x6c, 0x60, 0x7b, 0x33, 0xb0, 0xf1, 0x79, 0x8d, 0x1d, 0x32, 0x43, 0x4e, 0x4a, 0xdb, 0x7d, 0x7c, 0xcd, 0x45, 0xf6, 0x9f, 0xf6, 0xb6, 0xf9, 0x23, 0x6f, 0x73, 0x1d, 0x2b, 0x45, 0x63, 0x4c, 0x56, 0x07, 0x25, 0x3f, 0x80, 0x31, 0x56, 0xdd, 0x25, 0xd4, 0x33, 0xc0, 0x29, 0xa9, 0xc4, 0x57, 0x38, 0xf5, 0x39, 0xaf, 0x19, 0x12, 0x95, 0x21, 0x4d, 0xc2, 0x40, 0x15, 0x7f, 0xa6, 0x7d, 0xe7, 0xc5, 0x41, 0xa7, 0xdc, 0xc9, 0xb0, 0xf6, 0x29, 0x6c, 0x60, 0x12, 0xb2, 0x8a, 0x83, 0x4e, 0x56, 0x60, 0x24, 0xeb, 0x41, 0x4e, 0xc4, 0x6b, 0x9a, 0xe0, 0x05, 0xe9, 0x5d, 0x27, 0x8b, 0x44, 0x17, 0x18, 0x0f, 0x35, 0xe9, 0xb9, 0xfa, 0x01, 0x20, 0x7f, 0x25, 0x93, 0x3b, 0x6d, 0xc4, 0x24, 0x6e, 0x20, 0x07, 0xf5, 0xda, 0x55, 0x4f, 0x5d, 0x69, 0x9c, 0x83, 0xf3, 0x71, 0x0e, 0x35, 0xc6, 0x0d, 0xa3, 0x95, 0xc9, 0xe0, 0xb5, 0x8f, 0xd1, 0x1b, 0x54, 0x39, 0xdb, 0xca, 0x4b, 0x1a, 0x98, 0xdb, 0x7d, 0x44, 0x8f, 0x98, 0x55, 0x3f, 0x2e, 0xb8, 0x47, 0xc3, 0x99, 0x15, 0x62, 0xde, 0x74, 0xf7, 0xa5, 0x70, 0x56, 0x6a, 0x65, 0xbb, 0x38, 0x0a, 0x16, 0x8d, 0x0a, 0xbb, 0x3f, 0xba, 0x4a, 0x6f, 0x6f, 0x47, 0x75, 0xb6, 0x63, 0xa8, 0xb6, 0xde, 0xa9, 0xeb, 0x39, 0x3e, 0x5a, 0x13, 0xf0, 0xd3, 0xda, 0x5e, 0x76, 0xb7, 0x77, 0x96, 0x80, 0x84, 0x19, 0x4f, 0x53, 0xbc, 0xda, 0x62, 0xb6, 0xae, 0x99, 0x1d, 0xf7, 0xa6, 0xe8, 0x66, 0x2b, 0x32, 0xe6, 0x2d, 0xa1, 0x37, 0xfb, 0x85, 0x7e, 0xcc, 0x1a, 0x5c, 0x5e, 0x88, 0x1d, 0xc7, 0x41, 0x79, 0x03, 0xe5, 0xb6, 0xea, 0xcb, 0x2a, 0x97, 0xbb, 0xea, 0x45, 0x65, 0xcc, 0xa6, 0xd8, 0xdc, 0x6b, 0x23, 0x1f, 0x1c, 0xa2, 0x07, 0xf7, 0x7f, 0xe1, 0xb6, 0xf5, 0x11, 0xb4, 0x99, 0x3e, 0x8f, 0x89, 0xb7, 0x34, 0x64, 0xa9, 0x1f, 0x38, 0x6c, 0xb3, 0x9b, 0x9b, 0x9b, 0xd1, 0x3a, 0x97, 0xc9, 0x3f, 0x1d, 0x7e, 0x6b, 0x0f, 0x77, 0x62, 0xa8, 0xf6, 0xd8, 0xd8, 0x11, 0xb7, 0x89, 0x07, 0x2f, 0x61, 0xfb, 0x90, 0x68, 0x4c, 0x20, 0xf9, 0xee, 0xec, 0x8d, 0x6d, 0x7b, 0xab, 0x85, 0xfd, 0x70, 0x3a, 0xd5, 0xa1, 0x7b, 0x3c, 0xcb, 0x19, 0xf2, 0x03, 0x78, 0xb5, 0xaf, 0x5e, 0x9e, 0x7e, 0x78, 0x77, 0x78, 0xfe, 0xe1, 0xec, 0xe5, 0xf7, 0xd8, 0x42, 0x36, 0x08, 0x8d, 0xbc, 0x82, 0x2b, 0xb2, 0x2a, 0x4b, 0xb4, 0xb0, 0x7a, 0x4b, 0x15, 0x4b, 0x79, 0x41, 0xc8, 0x0e, 0xd1, 0xa6, 0xca, 0x16, 0xae, 0x46, 0xe6, 0x69, 0xe6, 0x72, 0x90, 0xb4, 0xf6, 0xeb, 0xa3, 0xb1, 0x1c, 0xb2, 0xf9, 0xa8, 0xac, 0x2e, 0x41, 0x85, 0x3b, 0xaf, 0x85, 0x7f, 0x46, 0x87, 0xdb, 0x91, 0x80, 0x2a, 0xd0, 0x8f, 0xae, 0xab, 0x0b, 0x80, 0x25, 0xac, 0x6b, 0x27, 0xef, 0xf7, 0x23, 0xf3, 0x48, 0xf3, 0x31, 0x31, 0xc0, 0xe5, 0xf5, 0xe3, 0x35, 0xc6, 0x40, 0xd3, 0xd2, 0x9f, 0xa4, 0xa3, 0x13, 0x51, 0x10, 0x99, 0x9d, 0x7e, 0x98, 0x9c, 0x0b, 0xc3, 0xe6, 0x77, 0x83, 0x48, 0xed, 0x35, 0x81, 0x79, 0x97, 0xb6, 0x8a, 0x9d, 0x6a, 0x6b, 0x10, 0xdf, 0x5f, 0xdf, 0x48, 0x4d, 0xf5, 0xa0, 0xae, 0xd9, 0xd1, 0x57, 0xa1, 0x3e, 0x7c, 0x1a, 0xea, 0x92, 0x68, 0xb1, 0xe6, 0xad, 0xf9, 0xa9, 0xac, 0xf9, 0xe9, 0x3f, 0xb5, 0xe6, 0xa7, 0xff, 0xc4, 0x9a, 0x1f, 0xff, 0xca, 0x6b, 0x7e, 0x1c, 0x5d, 0xb3, 0xf7, 0x95, 0xe1, 0x5f, 0xb0, 0xe6, 0xbf, 0xac, 0x8a, 0x8f, 0x43, 0x33, 0x5f, 0x48, 0x61, 0x69, 0xb8, 0x54, 0xc7, 0x55, 0xe6, 0x56, 0x8f, 0x0f, 0x72, 0x2b, 0x3a, 0x6c, 0x53, 0xaf, 0x7f, 0x54, 0x2a, 0xd5, 0xa2, 0x1c, 0x5d, 0xec, 0xed, 0x83, 0xed, 0x79, 0x9d, 0x73, 0x94, 0x1a, 0xd6, 0x53, 0xd8, 0x36, 0x70, 0x8c, 0x6d, 0xc8, 0x6c, 0x74, 0xd8, 0x0d, 0x6d, 0xf9, 0x40, 0x37, 0x3d, 0x0d, 0x21, 0x56, 0xa6, 0x64, 0x58, 0xd3, 0x9d, 0xb4, 0xe1, 0x37, 0xd7, 0x85, 0x39, 0xbf, 0xb0, 0xf0, 0x33, 0x3a, 0x30, 0x87, 0x24, 0xe0, 0x6e, 0x0e, 0x79, 0xc6, 0xf9, 0xdd, 0x12, 0x03, 0x1a, 0xd9, 0x5c, 0x19, 0x19, 0xcc, 0x31, 0x70, 0x6e, 0x11, 0x6e, 0x27, 0x99, 0x74, 0x26, 0x28, 0x8e, 0xd6, 0xab, 0xec, 0x6e, 0x33, 0x50, 0x18, 0xa6, 0xf3, 0x12, 0xfc, 0x06, 0x7a, 0xdd, 0x1a, 0x4d, 0x64, 0xe2, 0xba, 0x5d, 0xb1, 0xbc, 0xe8, 0xb4, 0xbf, 0xf2, 0xe5, 0xc6, 0xc7, 0x2c, 0x5b, 0xa6, 0x73, 0xaa, 0xea, 0x47, 0xd8, 0xb5, 0xaf, 0x47, 0x4f, 0x2b, 0x2f, 0x4b, 0x73, 0x96, 0xe9, 0x8d, 0x56, 0xd2, 0x0b, 0xf1, 0x39, 0x3e, 0x48, 0x24, 0xe9, 0x27, 0xf9, 0x8c, 0xca, 0xec, 0xe2, 0x2d, 0x1b, 0x1c, 0x1e, 0xbc, 0x9d, 0x04, 0x19, 0x9e, 0x13, 0x81, 0x9f, 0xb0, 0x9f, 0x50, 0x08, 0x2b, 0x64, 0x05, 0x5c, 0xe7, 0xc8, 0x06, 0xea, 0xc2, 0x9e, 0xda, 0xf7, 0xf9, 0x75, 0x02, 0xb4, 0x69, 0x81, 0xb6, 0xf3, 0x01, 0xe2, 0x89, 0xd2, 0xca, 0x3f, 0xa8, 0x1b, 0xd4, 0x35, 0x30, 0x20, 0x29, 0xc5, 0x6e, 0x65, 0xfd, 0xf7, 0xfc, 0xd5, 0xe9, 0x87, 0x6f, 0x0f, 0x0f, 0x4f, 0x8f, 0x5e, 0x1f, 0x1f, 0xca, 0x85, 0xb1, 0x3f, 0x7a, 0x77, 0xfe, 0xdd, 0xb1, 0xb6, 0xa8, 0x52, 0x5a, 0x0c, 0x08, 0x5e, 0x10, 0xc7, 0x99, 0x29, 0x0f, 0xa8, 0x13, 0x4f, 0xd1, 0x24, 0x2f, 0x8f, 0x7e, 0x30, 0x5a, 0xeb, 0xe9, 0xf0, 0xfd, 0x0f, 0x41, 0x1b, 0x04, 0x2f, 0xbd, 0xbd, 0xb7, 0x23, 0xb8, 0x21, 0x44, 0xb2, 0x1d, 0xdd, 0xda, 0xfb, 0xb2, 0x7d, 0x7e, 0x65, 0x31, 0x68, 0x86, 0x5b, 0x15, 0x56, 0x61, 0xe0, 0x17, 0xb5, 0xd5, 0x88, 0x97, 0x51, 0xf3, 0x74, 0x57, 0x3b, 0x38, 0xad, 0xf5, 0x97, 0x7e, 0xde, 0xb6, 0x19, 0x3f, 0x66, 0x77, 0x04, 0x1f, 0x97, 0xbc, 0xc0, 0x7f, 0xe3, 0x1d, 0xb6, 0x4e, 0xab, 0xfc, 0x1a, 0xfa, 0x9f, 0x79, 0x96, 0xa3, 0x49, 0x78, 0x74, 0x64, 0xfb, 0x8d, 0x49, 0x44, 0x0b, 0x83, 0x50, 0xd0, 0x9b, 0x06, 0x25, 0xc2, 0x0a, 0xa2, 0xa2, 0xf9, 0x8c, 0x7d, 0x1d, 0x3c, 0x1e, 0x0d, 0x68, 0xb6, 0x67, 0x94, 0xbc, 0x3e, 0x3c, 0x1b, 0x24, 0xa7, 0x87, 0x6f, 0x39, 0x47, 0xfe, 0xf0, 0xdd, 0xd7, 0xdc, 0x82, 0x4d, 0x3b, 0x6b, 0x51, 0x10, 0x36, 0xcc, 0x13, 0xf3, 0xf6, 0xc4, 0xbc, 0x4b, 0x49, 0x71, 0x75, 0x6d, 0xa4, 0xeb, 0x27, 0xc4, 0xee, 0xe0, 0xb5, 0xbd, 0x30, 0xff, 0x89, 0x6d, 0x95, 0xb1, 0x23, 0xbe, 0x89, 0x6c, 0x97, 0x28, 0x66, 0x36, 0x6c, 0x2f, 0x46, 0x01, 0x76, 0x83, 0x77, 0xcc, 0x6c, 0x48, 0x18, 0x40, 0xd6, 0x0d, 0x22, 0xb3, 0x8f, 0xd0, 0x4b, 0xb8, 0x59, 0xa6, 0x84, 0xff, 0x60, 0xc5, 0x9a, 0xcf, 0x0d, 0x40, 0x97, 0x84, 0x85, 0xec, 0x36, 0x23, 0x56, 0x98, 0x59, 0xe5, 0x52, 0xbf, 0xe4, 0x42, 0x2f, 0x46, 0xa1, 0x9a, 0xe5, 0x33, 0xaa, 0xfc, 0x36, 0xdf, 0x28, 0xab, 0x59, 0x04, 0xf7, 0xd6, 0x6c, 0x9c, 0x8a, 0x0c, 0x76, 0x77, 0x68, 0xea, 0x97, 0x76, 0x5a, 0x9b, 0xe7, 0x93, 0xca, 0x28, 0x5c, 0xae, 0x51, 0x80, 0x76, 0x83, 0x5b, 0x7e, 0x9c, 0xd6, 0x7b, 0x7b, 0x91, 0x56, 0xe7, 0x5a, 0x0e, 0x35, 0xd0, 0x1c, 0xbe, 0xd3, 0x6f, 0x5f, 0x8d, 0x7f, 0xbb, 0xb7, 0x47, 0x29, 0x93, 0x5b, 0x48, 0x6d, 0x7b, 0xf6, 0x64, 0x6f, 0x7f, 0x3b, 0xa6, 0xef, 0x05, 0x39, 0x00, 0xa4, 0xff, 0x2d, 0xbd, 0xfd, 0xa6, 0x80, 0x98, 0xa4, 0x47, 0xdb, 0x81, 0x67, 0x19, 0xd2, 0x89, 0x50, 0x03, 0x66, 0x23, 0x1f, 0x94, 0x67, 0x15, 0x84, 0x69, 0xbd, 0x4a, 0xd8, 0x0d, 0x9e, 0xff, 0xc1, 0x86, 0x25, 0x04, 0x3f, 0xe3, 0x94, 0xa2, 0xd5, 0xde, 0xbc, 0x89, 0x40, 0xbb, 0xae, 0x78, 0x7f, 0x5d, 0x94, 0x14, 0xe5, 0x40, 0x69, 0x58, 0xde, 0xb8, 0x36, 0x73, 0x9d, 0x60, 0x22, 0x62, 0x89, 0x81, 0x3b, 0x4e, 0x66, 0xb4, 0x91, 0xf0, 0x89, 0x83, 0x44, 0x53, 0x37, 0xaa, 0xdd, 0x7f, 0xef, 0x4a, 0xb7, 0x47, 0x0d, 0x92, 0xac, 0x48, 0xbc, 0x6e, 0x98, 0xcb, 0xb6, 0x11, 0x1d, 0xf1, 0x93, 0x5e, 0xa2, 0x6a, 0x92, 0xbc, 0x98, 0x9b, 0x17, 0xe7, 0xf1, 0x32, 0x9d, 0x43, 0xee, 0xcc, 0xf3, 0xad, 0x31, 0xee, 0xb3, 0xaa, 0xac, 0x3b, 0x05, 0x05, 0xda, 0x74, 0x9d, 0x7d, 0x20, 0x34, 0x8c, 0xc0, 0x90, 0x86, 0xc9, 0x9a, 0x38, 0x34, 0xd9, 0x9d, 0x00, 0xc3, 0x63, 0x93, 0xea, 0x1a, 0x36, 0x07, 0xc9, 0x26, 0x7a, 0xd1, 0xe0, 0x4f, 0x6a, 0xc2, 0x8e, 0xc6, 0x11, 0x79, 0x3a, 0xdf, 0x44, 0x87, 0x90, 0x2e, 0xee, 0xb0, 0xd0, 0xda, 0xa6, 0xe1, 0x7e, 0x3c, 0x1a, 0xae, 0x33, 0x55, 0x46, 0xcb, 0x3c, 0x04, 0xc9, 0xb5, 0x96, 0xb4, 0x19, 0x4a, 0x13, 0x97, 0x6a, 0xc8, 0x3a, 0xe8, 0x9a, 0x62, 0x87, 0x6b, 0xc3, 0xac, 0xf4, 0x65, 0x23, 0xfe, 0xca, 0x72, 0x85, 0x8f, 0xe1, 0xe7, 0x76, 0xb7, 0x75, 0xfe, 0xce, 0xce, 0x70, 0x7a, 0x58, 0xfe, 0x39, 0xeb, 0xeb, 0xd1, 0xb6, 0x95, 0x2f, 0xb9, 0x92, 0xd4, 0x5f, 0x12, 0xc1, 0x97, 0xa3, 0xf6, 0x61, 0xc6, 0x66, 0x9c, 0x94, 0xc9, 0xf9, 0xad, 0xe6, 0x44, 0x21, 0x08, 0x03, 0x69, 0x37, 0x36, 0x28, 0x96, 0xea, 0xb4, 0x87, 0x6c, 0x6e, 0xbf, 0x4a, 0xc4, 0x7f, 0x40, 0x45, 0x14, 0x37, 0x15, 0xa0, 0x15, 0x0b, 0x07, 0xd0, 0x3a, 0xcf, 0xfa, 0x00, 0x77, 0x14, 0x7d, 0xd1, 0x1c, 0xd2, 0x5c, 0xfa, 0xa0, 0x69, 0xe6, 0x52, 0xa5, 0xd3, 0x1a, 0x4a, 0xe0, 0x57, 0x2d, 0x7c, 0xbc, 0xf7, 0x9b, 0x7f, 0xf2, 0xe4, 0xa4, 0x75, 0x1d, 0xa3, 0x70, 0x44, 0x4a, 0xaa, 0x1f, 0x8c, 0x2b, 0xd5, 0x29, 0x09, 0xa2, 0xec, 0xe2, 0x21, 0x09, 0x91, 0x17, 0x86, 0x9f, 0x66, 0x01, 0xb0, 0x4e, 0xbb, 0x85, 0xe8, 0x42, 0x1a, 0x44, 0xba, 0x8a, 0x9b, 0x84, 0xde, 0xb5, 0xfd, 0x6b, 0x7d, 0xff, 0xfb, 0x10, 0x3a, 0x66, 0xd7, 0x3f, 0x86, 0xd6, 0x06, 0xae, 0xa4, 0x93, 0xae, 0x2d, 0x01, 0x57, 0x2b, 0x20, 0x8a, 0x66, 0x54, 0xf2, 0x86, 0xc0, 0x79, 0x2c, 0xb9, 0x7a, 0x64, 0x0d, 0xa4, 0x81, 0xd3, 0x82, 0x92, 0xa3, 0xb9, 0x5b, 0x00, 0x06, 0x43, 0x06, 0xd9, 0x8c, 0x5d, 0x99, 0x74, 0x24, 0x76, 0x9e, 0xb8, 0x7b, 0x32, 0x2f, 0x46, 0x58, 0x37, 0x37, 0x3a, 0xd0, 0xed, 0x27, 0x66, 0x88, 0x9b, 0x7c, 0xd6, 0x5c, 0x51, 0xff, 0x0e, 0x35, 0x65, 0x6a, 0xa9, 0x21, 0x86, 0x57, 0x39, 0x0f, 0x2b, 0x64, 0x26, 0x71, 0x8f, 0x1b, 0x9f, 0x18, 0xed, 0x69, 0xc2, 0x58, 0x3a, 0x70, 0xac, 0xd1, 0x31, 0x90, 0x13, 0x7a, 0x87, 0x55, 0x33, 0x8b, 0x22, 0x91, 0x9a, 0x4b, 0x74, 0x81, 0xce, 0x1c, 0xa1, 0x4b, 0x5d, 0x4b, 0x59, 0x46, 0xf6, 0x8a, 0x70, 0xbb, 0x9e, 0x8f, 0x0c, 0xa1, 0xfd, 0xed, 0xa6, 0xf6, 0xa0, 0x04, 0x48, 0x9a, 0x97, 0x6f, 0x6f, 0x6e, 0xe8, 0xc7, 0x3c, 0x44, 0x75, 0xa7, 0xcf, 0x1b, 0xd6, 0xb6, 0xe0, 0xd7, 0xdf, 0x6e, 0xaa, 0x63, 0x13, 0xb5, 0xd5, 0x97, 0xa9, 0xfc, 0x9a, 0x71, 0x15, 0x36, 0x2f, 0xf9, 0xa1, 0xaf, 0xf5, 0xa1, 0xb0, 0xff, 0x25, 0xdc, 0xec, 0xec, 0x56, 0xd7, 0xc4, 0x9b, 0xfa, 0x00, 0xc9, 0xdc, 0xdf, 0x0e, 0x92, 0x47, 0x0b, 0x3a, 0x94, 0xbd, 0xaf, 0xa3, 0xe8, 0x23, 0x9c, 0x58, 0x06, 0x73, 0x49, 0xb3, 0x02, 0x86, 0x7f, 0x82, 0x95, 0x44, 0x7b, 0xc6, 0x94, 0x69, 0xeb, 0x46, 0xb8, 0x36, 0xc9, 0x49, 0xaf, 0xae, 0x32, 0x83, 0xa3, 0x5a, 0x42, 0xab, 0x9f, 0x65, 0x8a, 0x28, 0xbc, 0x20, 0x77, 0x24, 0x32, 0x2b, 0x96, 0x52, 0x3a, 0x0f, 0x52, 0x1d, 0x5a, 0xb8, 0xc2, 0x7a, 0x8e, 0x07, 0xa8, 0xa5, 0x4e, 0x19, 0x64, 0x61, 0xce, 0x97, 0x64, 0xd1, 0xd8, 0xae, 0x57, 0xde, 0x94, 0x50, 0x01, 0x37, 0x4d, 0xc4, 0x29, 0xf3, 0x09, 0x45, 0xe2, 0x9c, 0xd2, 0x79, 0xf2, 0xba, 0x19, 0x46, 0xb0, 0x21, 0x39, 0x68, 0x73, 0x7a, 0x72, 0xfa, 0x68, 0xdb, 0x56, 0xee, 0x31, 0x1a, 0x9b, 0x14, 0x53, 0x27, 0x9a, 0x1b, 0x6c, 0xcb, 0xac, 0x15, 0xcb, 0x95, 0x4a, 0x7a, 0x42, 0x63, 0x70, 0x9a, 0x69, 0xf3, 0x0d, 0xfa, 0x1e, 0x79, 0xe8, 0x5d, 0x4a, 0xb9, 0xd7, 0x37, 0xcd, 0x5d, 0x4b, 0xe6, 0x09, 0x48, 0x0d, 0xfb, 0x2c, 0x84, 0xa0, 0x90, 0x2c, 0x1c, 0xc1, 0x6f, 0x18, 0x52, 0xa9, 0x50, 0xd2, 0x6e, 0x3f, 0x80, 0x3c, 0xe7, 0xce, 0x24, 0x39, 0x49, 0x21, 0x92, 0xfe, 0x21, 0x15, 0x39, 0xee, 0x41, 0x8a, 0x20, 0x68, 0xe1, 0x14, 0xcb, 0x5b, 0x1b, 0x50, 0x85, 0x7b, 0x13, 0x64, 0xcb, 0xf8, 0xab, 0xa3, 0xde, 0x9e, 0xd1, 0x16, 0x03, 0xbf, 0x65, 0x42, 0x49, 0x87, 0xa3, 0x34, 0x79, 0x77, 0x3c, 0x3e, 0xf7, 0xa3, 0x3e, 0xa4, 0x87, 0x05, 0x69, 0x8f, 0x6d, 0x10, 0x28, 0x2f, 0x77, 0xe0, 0xf8, 0x68, 0x7c, 0x3e, 0x8a, 0xa1, 0xbb, 0x1f, 0x24, 0x63, 0x64, 0xe6, 0xbf, 0xf1, 0x92, 0x38, 0xb8, 0x8b, 0x30, 0xd5, 0x94, 0x71, 0x28, 0x8b, 0x12, 0xc7, 0xcc, 0xb8, 0x79, 0xe5, 0x37, 0xd0, 0x0d, 0x28, 0x15, 0x53, 0xfc, 0x03, 0xa7, 0x34, 0x4a, 0x3a, 0xa4, 0x86, 0x75, 0xea, 0xd5, 0x64, 0xe8, 0xa1, 0xae, 0xb1, 0xbe, 0x43, 0xed, 0x7c, 0x0c, 0xf5, 0x1a, 0x09, 0xf5, 0x31, 0x34, 0x0a, 0xb7, 0x84, 0x9e, 0x98, 0x90, 0x04, 0x2f, 0xaf, 0xe5, 0x9d, 0x9e, 0x26, 0x19, 0xe1, 0x73, 0x92, 0x5f, 0x08, 0x4f, 0x3f, 0x88, 0xa8, 0xb0, 0x11, 0x9d, 0x7d, 0x94, 0xfe, 0x6f, 0xed, 0xec, 0x66, 0x44, 0xd9, 0x3c, 0x14, 0xb1, 0x75, 0x81, 0x45, 0x8f, 0x0a, 0x15, 0xce, 0x4f, 0xa8, 0x8e, 0x1b, 0x52, 0xb3, 0x93, 0xc8, 0xce, 0xba, 0x0f, 0x30, 0x34, 0x9f, 0x31, 0x66, 0x5e, 0xdd, 0x06, 0xcd, 0xe3, 0x02, 0x69, 0xb0, 0x1c, 0x6e, 0x16, 0x02, 0x4f, 0x46, 0xcf, 0x49, 0xb2, 0x0f, 0xad, 0x95, 0xca, 0x36, 0xfc, 0x81, 0x93, 0x23, 0x29, 0xb0, 0x35, 0x88, 0x81, 0x39, 0xc5, 0x20, 0x48, 0x2c, 0x50, 0x43, 0x91, 0xbc, 0x3f, 0x7a, 0x7d, 0x6c, 0xf7, 0x4b, 0xf6, 0x87, 0xd2, 0xed, 0xec, 0x52, 0x91, 0x02, 0xaf, 0x4c, 0x93, 0x4e, 0x24, 0x88, 0xd2, 0xac, 0x8a, 0xdc, 0x7c, 0x3f, 0x61, 0xd5, 0xf5, 0x02, 0x59, 0xdf, 0x15, 0xf5, 0xf8, 0x56, 0x31, 0xb6, 0x59, 0xdb, 0x96, 0x57, 0xf9, 0x4c, 0x6e, 0xea, 0x47, 0x0d, 0x37, 0xf6, 0xe4, 0x2a, 0xae, 0x45, 0x59, 0xd8, 0x6b, 0x43, 0x21, 0x12, 0x22, 0xaa, 0x00, 0x17, 0x19, 0x71, 0xb4, 0x43, 0xa5, 0x4e, 0x81, 0x72, 0x91, 0x31, 0x94, 0xb4, 0x4b, 0xa1, 0x69, 0x43, 0x72, 0x94, 0x95, 0x94, 0x48, 0x6d, 0xbd, 0x39, 0x3b, 0x79, 0x3b, 0x3c, 0x3f, 0xa1, 0xc6, 0xd8, 0x34, 0x74, 0x12, 0xd1, 0x37, 0xf9, 0xad, 0xda, 0xef, 0xee, 0xdd, 0xce, 0x35, 0xdb, 0xaa, 0xb7, 0xb5, 0xf9, 0x36, 0x09, 0x14, 0x9a, 0x9e, 0xbe, 0x15, 0xb4, 0x3a, 0x28, 0x58, 0x13, 0x21, 0xc7, 0x83, 0xa1, 0xa5, 0x69, 0x0a, 0x85, 0xd1, 0x46, 0x9e, 0x68, 0x00, 0x65, 0xdd, 0x93, 0x55, 0x7d, 0x97, 0x48, 0x21, 0x5a, 0xcd, 0x89, 0x91, 0x4d, 0xe8, 0xce, 0x57, 0x64, 0x2f, 0x0b, 0x6a, 0x82, 0x02, 0x1d, 0xae, 0x00, 0x69, 0x4a, 0x73, 0x7b, 0xd3, 0xaa, 0x2a, 0x6f, 0x54, 0x6e, 0x51, 0x99, 0xa8, 0x39, 0x46, 0x33, 0x75, 0x9c, 0x53, 0x75, 0xd7, 0x8b, 0x04, 0x21, 0xe0, 0x46, 0xda, 0x65, 0x78, 0xad, 0xfa, 0xf7, 0xa4, 0x5d, 0x9f, 0xaf, 0xd9, 0xa2, 0xc3, 0xa6, 0x5a, 0xd5, 0x61, 0xc3, 0x72, 0xcd, 0xd3, 0x39, 0xa6, 0xd0, 0x30, 0x12, 0x4c, 0xbd, 0x77, 0x06, 0x02, 0xc0, 0x06, 0xbc, 0x0e, 0x6a, 0x0d, 0x65, 0xab, 0x79, 0xb4, 0x49, 0xc9, 0xef, 0x83, 0x1b, 0x2c, 0xb0, 0xac, 0x50, 0xea, 0xd1, 0xf2, 0x91, 0x52, 0x4c, 0x5d, 0xcf, 0xbe, 0xbc, 0xe1, 0x5e, 0x7d, 0x9a, 0x01, 0x4a, 0xc0, 0x4b, 0xc4, 0x0d, 0xf0, 0xd3, 0x40, 0x97, 0x54, 0x44, 0x95, 0x1c, 0xd5, 0xec, 0xb3, 0xd5, 0x94, 0x4e, 0x09, 0x21, 0x3a, 0xb4, 0x02, 0x9c, 0x30, 0xc6, 0xa3, 0x16, 0x84, 0x63, 0x68, 0x97, 0x5a, 0xcb, 0x1e, 0x97, 0xae, 0x96, 0xc5, 0x4f, 0xd9, 0xee, 0x46, 0x50, 0x25, 0x91, 0xb9, 0x93, 0xb1, 0x5a, 0x59, 0x75, 0x4d, 0x4e, 0x04, 0x81, 0x6c, 0x7b, 0xd5, 0x08, 0xbb, 0x02, 0xc0, 0x36, 0x41, 0x0b, 0x4b, 0x94, 0x1e, 0x28, 0x78, 0x20, 0x5f, 0x8a, 0x92, 0x7f, 0x95, 0xd6, 0x86, 0x2d, 0xb5, 0x47, 0xdc, 0x5e, 0xe3, 0x4f, 0x5e, 0x69, 0x12, 0xb6, 0x77, 0x7a, 0xad, 0x7c, 0xdf, 0x9e, 0x93, 0x3b, 0xba, 0xf0, 0x9b, 0x18, 0x49, 0x36, 0x85, 0xb7, 0xe7, 0xc2, 0xa5, 0x08, 0xa6, 0xed, 0x92, 0x5b, 0x95, 0x23, 0x53, 0x76, 0x16, 0xab, 0xc1, 0xd1, 0xde, 0x6f, 0x4d, 0xa2, 0x1f, 0x4d, 0xb6, 0xb4, 0x4a, 0xcc, 0x56, 0x2d, 0x1c, 0xcb, 0xaf, 0x0e, 0x6c, 0x19, 0x1b, 0x78, 0x5a, 0x67, 0xb8, 0x47, 0x3f, 0xfc, 0x90, 0xb4, 0x9b, 0xb5, 0x6e, 0xf7, 0x55, 0xce, 0x4b, 0x02, 0xfb, 0xac, 0xf4, 0xa7, 0x1b, 0xd4, 0xe0, 0x30, 0xcd, 0x19, 0x85, 0x80, 0xd2, 0x7d, 0xc9, 0xf7, 0x22, 0x5e, 0x22, 0x63, 0xfd, 0x5d, 0x69, 0x51, 0x06, 0x25, 0x5c, 0xb8, 0x8c, 0x0b, 0x64, 0x34, 0x53, 0x41, 0x58, 0x98, 0x96, 0x44, 0x0c, 0x57, 0x93, 0x25, 0x38, 0x08, 0x42, 0xf9, 0xab, 0xfe, 0x66, 0xb9, 0x76, 0xde, 0xf5, 0x15, 0x82, 0x01, 0x02, 0xea, 0x7a, 0x6f, 0x43, 0x59, 0xc6, 0x09, 0xa0, 0x75, 0x91, 0xc0, 0x67, 0xf8, 0x79, 0xce, 0x79, 0x9b, 0x56, 0x99, 0xf8, 0x1a, 0x44, 0x7d, 0x8a, 0x01, 0x08, 0x02, 0xe0, 0x43, 0x92, 0xb0, 0x47, 0x74, 0xc2, 0xa9, 0x77, 0x63, 0x1c, 0x3a, 0x5b, 0xe7, 0xcc, 0x38, 0x67, 0x3b, 0xec, 0x5e, 0x5f, 0x42, 0x7f, 0x42, 0xbd, 0x3c, 0x01, 0x4c, 0x95, 0xec, 0xd4, 0x92, 0x46, 0xa3, 0x2c, 0x6d, 0x7e, 0xaf, 0xf7, 0x76, 0xd4, 0x0e, 0x60, 0x81, 0x0a, 0x62, 0x31, 0x4b, 0x65, 0x26, 0x74, 0x30, 0x00, 0x02, 0x45, 0xf5, 0xb1, 0xf6, 0x2f, 0x82, 0x6f, 0x57, 0xa3, 0xda, 0xac, 0x4f, 0x53, 0xd9, 0x3a, 0x77, 0x11, 0x0f, 0x40, 0x69, 0xdd, 0x95, 0x45, 0xd2, 0x0d, 0xf9, 0x29, 0x1d, 0x86, 0x15, 0xfb, 0xb6, 0x8c, 0x49, 0x3a, 0xa4, 0xc7, 0xea, 0xbe, 0xfc, 0x10, 0x17, 0xe6, 0x92, 0x4e, 0x0b, 0xfe, 0x86, 0xa9, 0x93, 0xcc, 0x02, 0x24, 0x48, 0x4d, 0x8a, 0x40, 0xf6, 0xa3, 0x3c, 0xbf, 0x7b, 0xb5, 0xfc, 0x50, 0x1f, 0xe1, 0x11, 0x98, 0x7f, 0x9f, 0xbe, 0x3f, 0xdf, 0x76, 0xfd, 0xe8, 0x85, 0x5a, 0xfd, 0x9c, 0x76, 0xa9, 0x75, 0x0b, 0xd3, 0xf6, 0x19, 0x01, 0x40, 0xf8, 0x94, 0x64, 0xef, 0xc8, 0xc5, 0x80, 0x8b, 0xe5, 0xd1, 0xee, 0x9e, 0xb1, 0xa3, 0x76, 0xf7, 0xa9, 0x39, 0xed, 0xa3, 0xdd, 0x47, 0xb6, 0x68, 0x5a, 0x9f, 0x0a, 0x21, 0xed, 0xf9, 0x45, 0xf2, 0x9a, 0x10, 0xed, 0x3f, 0xba, 0xbd, 0xa5, 0x1f, 0xb7, 0x53, 0xb1, 0x87, 0xb6, 0x7c, 0xc9, 0x9f, 0x66, 0x54, 0xee, 0x7b, 0xfb, 0x4d, 0xa1, 0xb8, 0x55, 0xc1, 0xc5, 0x82, 0xd4, 0xfc, 0x17, 0x18, 0x03, 0xa3, 0xbe, 0x36, 0x56, 0x4d, 0x17, 0x46, 0xc9, 0xef, 0x63, 0x65, 0x28, 0x05, 0x4b, 0xb7, 0x9b, 0xa3, 0x80, 0x05, 0x21, 0x6b, 0xa6, 0xc7, 0xb8, 0x3e, 0x02, 0xea, 0xc2, 0xa3, 0xdd, 0x5b, 0x5f, 0x29, 0x6e, 0x11, 0x84, 0x11, 0x75, 0xc2, 0x90, 0x34, 0xf3, 0x3e, 0x74, 0x42, 0x80, 0xfb, 0x1d, 0x20, 0xaf, 0xc3, 0x5c, 0x09, 0xda, 0x5f, 0xfd, 0xeb, 0xbe, 0xe4, 0x76, 0xf0, 0xbf, 0x1e, 0xb5, 0x25, 0x25, 0xdc, 0xc3, 0x3a, 0xe6, 0x0b, 0xf9, 0x4b, 0xe0, 0xab, 0xa4, 0x9e, 0xa4, 0x50, 0x8c, 0xa9, 0x99, 0xc4, 0xb6, 0x75, 0x9f, 0x90, 0xc1, 0x87, 0x21, 0xec, 0xb4, 0x44, 0x49, 0x91, 0x66, 0xcf, 0xc2, 0xa0, 0xbb, 0xb4, 0xd1, 0x92, 0x0f, 0xa3, 0xfe, 0x7e, 0x43, 0xaa, 0x0b, 0x06, 0x9f, 0xd0, 0x9c, 0x08, 0x5b, 0x5f, 0x6c, 0x55, 0xe2, 0x72, 0x19, 0xbb, 0xbb, 0x22, 0x1a, 0x20, 0x5a, 0xd5, 0xd3, 0x2e, 0x33, 0xec, 0xcc, 0xc5, 0xa8, 0x15, 0x0d, 0x29, 0x6e, 0xb5, 0x14, 0xd5, 0x05, 0x26, 0x2a, 0xb6, 0x62, 0xc0, 0x36, 0x2a, 0x37, 0x65, 0x46, 0x77, 0x0d, 0x4d, 0x8c, 0x6c, 0x4d, 0x94, 0x43, 0x17, 0x04, 0x06, 0x2b, 0x99, 0x15, 0x11, 0x89, 0xc6, 0x59, 0x15, 0xe1, 0x22, 0x97, 0x48, 0x14, 0xcf, 0x48, 0xe7, 0x97, 0xbe, 0xb1, 0x8f, 0x07, 0xf4, 0xb7, 0x27, 0xbb, 0xcf, 0xf7, 0x15, 0xd1, 0xe0, 0xf0, 0xfc, 0x4d, 0xd7, 0x99, 0x57, 0x19, 0x7a, 0xe2, 0xff, 0x0e, 0xb3, 0xb4, 0xba, 0x32, 0xc6, 0x05, 0x60, 0x55, 0x86, 0xc0, 0xea, 0x1f, 0xee, 0xee, 0xc6, 0x12, 0x2d, 0x3e, 0x61, 0x29, 0xf9, 0xa3, 0xc7, 0xed, 0x18, 0x1c, 0x54, 0xfa, 0x21, 0x76, 0xbc, 0x1f, 0xf5, 0x93, 0xe9, 0xcb, 0xf9, 0xe7, 0x1c, 0x30, 0xb4, 0xbc, 0xd1, 0x0a, 0xb2, 0x07, 0x59, 0x32, 0xb1, 0xee, 0x30, 0x1d, 0x97, 0xba, 0x24, 0x13, 0x6d, 0xb1, 0x0d, 0xd1, 0xdc, 0x6d, 0xb3, 0xdf, 0x1a, 0x1f, 0xa2, 0xce, 0x50, 0xc4, 0xe2, 0xc5, 0x88, 0x88, 0x16, 0xd9, 0xd6, 0x52, 0x67, 0x54, 0x65, 0x80, 0x67, 0x62, 0xb5, 0x4f, 0x5a, 0xec, 0xdc, 0x0f, 0x31, 0x45, 0x5b, 0x50, 0x4d, 0x97, 0x52, 0x70, 0xc6, 0xff, 0x86, 0x28, 0x6e, 0x25, 0xbc, 0xee, 0x3f, 0x89, 0x6c, 0x1c, 0x09, 0xec, 0x9f, 0xb1, 0x71, 0xed, 0x7d, 0x73, 0xca, 0x11, 0xbb, 0xf0, 0xc8, 0xe0, 0x95, 0x48, 0x41, 0x08, 0xfd, 0x53, 0x6b, 0x0b, 0xd8, 0x9f, 0xbd, 0x16, 0x6c, 0xf7, 0x68, 0x1d, 0x50, 0x9d, 0x7b, 0xeb, 0x9e, 0xb5, 0x8c, 0x6d, 0xe2, 0x53, 0x7b, 0x25, 0x03, 0xd7, 0x25, 0x01, 0xd2, 0x63, 0x21, 0x4d, 0xa0, 0xc8, 0xd7, 0x40, 0x11, 0xc8, 0x2e, 0x88, 0x44, 0xb6, 0xcc, 0x68, 0xe9, 0x7e, 0xa2, 0x81, 0x47, 0xdc, 0xd6, 0x46, 0x45, 0x59, 0xb1, 0x16, 0x4f, 0x19, 0x29, 0x9a, 0x2f, 0x81, 0x0e, 0x50, 0x47, 0xfd, 0x2c, 0xed, 0x4e, 0xef, 0xb4, 0x97, 0xea, 0x93, 0x1d, 0x88, 0x1c, 0x93, 0xf7, 0x75, 0x8f, 0x6d, 0x1a, 0x57, 0x58, 0x40, 0x0b, 0x73, 0x9d, 0x86, 0xb0, 0x47, 0x55, 0xba, 0x2a, 0x5c, 0x1e, 0xbb, 0x8c, 0x8b, 0x7f, 0x7f, 0x16, 0x8e, 0xb4, 0x39, 0x41, 0x51, 0x75, 0xd9, 0xef, 0xce, 0xde, 0xfc, 0x49, 0xcd, 0xee, 0xed, 0x41, 0x9f, 0x25, 0xac, 0xb3, 0xf5, 0x4b, 0xa5, 0xbc, 0xe4, 0x3d, 0xa9, 0x18, 0x6f, 0x6d, 0xbc, 0xfb, 0x47, 0x98, 0xe7, 0xcd, 0xb0, 0xa7, 0xc9, 0x16, 0xc2, 0x6c, 0xe6, 0xa9, 0xb1, 0x98, 0x74, 0x8f, 0x46, 0x4f, 0xc8, 0x23, 0xf2, 0xe6, 0xd5, 0x93, 0x47, 0xfb, 0x7b, 0xc6, 0x6a, 0xdd, 0xea, 0x70, 0x8b, 0xed, 0x7b, 0x97, 0xd9, 0x3e, 0xef, 0xec, 0x76, 0x09, 0xda, 0xdb, 0x3a, 0xfc, 0xe1, 0xf4, 0x5d, 0x67, 0x91, 0x74, 0x02, 0x41, 0x20, 0x75, 0xcd, 0x1a, 0x9d, 0xb4, 0x0d, 0x48, 0x4a, 0xba, 0xdb, 0x86, 0xa1, 0xca, 0x37, 0x55, 0x0e, 0x3d, 0x77, 0x03, 0xfb, 0xb1, 0x71, 0x5c, 0x16, 0x33, 0x23, 0xfd, 0x4f, 0x00, 0xe7, 0x95, 0x6d, 0x18, 0x59, 0x72, 0xef, 0xea, 0xfa, 0xaf, 0xc9, 0xdb, 0x01, 0x5d, 0x95, 0x22, 0x4c, 0x49, 0x79, 0x4b, 0x3f, 0x24, 0xf4, 0x54, 0x00, 0x21, 0x70, 0x8d, 0xd9, 0x0a, 0x56, 0x0e, 0xdc, 0xbb, 0x30, 0xcd, 0xda, 0xb7, 0xed, 0x96, 0x9a, 0x97, 0x90, 0xc7, 0xe7, 0x05, 0x39, 0xb4, 0xfb, 0x62, 0x21, 0xbc, 0x72, 0x8e, 0x84, 0xd0, 0xe3, 0x5b, 0xea, 0xd4, 0xdf, 0xf6, 0x5a, 0x3f, 0x93, 0xfe, 0xae, 0xa1, 0x0e, 0x52, 0xd4, 0x63, 0x1d, 0xb6, 0xe9, 0x51, 0x67, 0x58, 0xe4, 0xed, 0x24, 0x76, 0xba, 0x8a, 0x54, 0x39, 0x3e, 0x68, 0x03, 0x9d, 0x45, 0x7c, 0xe0, 0x14, 0xf2, 0xa7, 0xee, 0x5c, 0x69, 0xd1, 0xc6, 0x84, 0x44, 0xe1, 0x33, 0x5b, 0x40, 0xd9, 0x2d, 0x35, 0x5c, 0x34, 0x2a, 0xe2, 0xd3, 0x47, 0x91, 0x1a, 0x2e, 0x5a, 0x8c, 0xe8, 0x76, 0x95, 0xaf, 0x04, 0xb0, 0x84, 0x16, 0xa5, 0x77, 0xe0, 0x05, 0x21, 0x10, 0x83, 0x20, 0x33, 0x6a, 0xf3, 0xdb, 0xcd, 0x68, 0xf4, 0x8d, 0x83, 0x12, 0xbc, 0x56, 0xf1, 0xea, 0xe0, 0x8e, 0x50, 0x60, 0x42, 0x22, 0x0d, 0x14, 0x89, 0xe0, 0x41, 0xde, 0x6e, 0x26, 0x36, 0x18, 0xd1, 0xb5, 0xf6, 0xef, 0x0d, 0x4d, 0xe4, 0x4d, 0x3c, 0x16, 0xc1, 0xc1, 0x88, 0xae, 0x09, 0x6a, 0x43, 0x13, 0x2d, 0xe2, 0x7b, 0xf2, 0x79, 0x84, 0xf8, 0xde, 0x9d, 0x9c, 0x1f, 0x1e, 0x48, 0x1e, 0xb5, 0x43, 0xce, 0x50, 0x4b, 0x81, 0x73, 0xc9, 0xb8, 0xed, 0x33, 0x57, 0x16, 0x11, 0xbe, 0x23, 0x9f, 0xfb, 0x20, 0x72, 0xe5, 0x29, 0xa9, 0x1b, 0xb7, 0x84, 0x3d, 0xbd, 0x4d, 0x2f, 0x9a, 0x26, 0x95, 0x05, 0x8b, 0x65, 0xc0, 0x41, 0x49, 0x1c, 0x7f, 0x88, 0xa2, 0x00, 0x54, 0x09, 0xb2, 0x21, 0x01, 0x9a, 0xca, 0x22, 0x37, 0x20, 0x22, 0x96, 0x65, 0x64, 0x71, 0x69, 0x69, 0x30, 0x7a, 0x2f, 0x86, 0x0d, 0x03, 0x29, 0x42, 0xf7, 0x46, 0x9a, 0x4e, 0x93, 0x3d, 0x62, 0x21, 0xf9, 0xd6, 0x89, 0x38, 0x17, 0x48, 0xec, 0x5e, 0x2a, 0x31, 0xce, 0xe0, 0x05, 0xec, 0x41, 0x0a, 0x81, 0x1b, 0xd0, 0x46, 0x16, 0x95, 0x48, 0xa0, 0x6a, 0xa8, 0x95, 0x06, 0xa3, 0xd2, 0x5a, 0x29, 0x94, 0xbf, 0x27, 0x55, 0x88, 0x31, 0x81, 0xd3, 0x71, 0x53, 0x39, 0x93, 0x5b, 0x15, 0x36, 0xca, 0xb5, 0xc1, 0xde, 0x4a, 0xb8, 0x92, 0xd4, 0x85, 0x38, 0x6a, 0xa3, 0x5f, 0x8f, 0x2c, 0x2a, 0x35, 0x44, 0xdf, 0xd4, 0x08, 0x6e, 0xbf, 0x64, 0x80, 0x74, 0x3e, 0x32, 0x66, 0x73, 0x2e, 0x0a, 0x37, 0x9f, 0x78, 0xb2, 0xdb, 0x63, 0xcb, 0xb2, 0xc6, 0x3b, 0xce, 0x9a, 0x6e, 0x9c, 0x7b, 0xb8, 0x67, 0xf1, 0x3a, 0x72, 0x2a, 0x84, 0x15, 0xe4, 0xa7, 0x4f, 0x17, 0x62, 0x5a, 0x0c, 0xe4, 0x8c, 0xd6, 0x26, 0x1e, 0xbe, 0xb5, 0x41, 0x5f, 0x3c, 0x45, 0x81, 0x09, 0x79, 0x92, 0x55, 0x25, 0x78, 0xd3, 0xd8, 0x03, 0x88, 0x6f, 0xde, 0x5c, 0x95, 0x73, 0x3f, 0xfa, 0x1d, 0xf6, 0xd4, 0x46, 0xa1, 0x5a, 0xe2, 0x83, 0x15, 0x69, 0x89, 0x90, 0x9c, 0x0a, 0x36, 0x9d, 0x1c, 0x6e, 0x13, 0x94, 0xfa, 0x26, 0x7f, 0x29, 0x27, 0xe2, 0x83, 0x41, 0xa1, 0xdb, 0x65, 0x14, 0xf5, 0x83, 0xd0, 0x21, 0x8d, 0xac, 0x32, 0x74, 0x36, 0x5b, 0xb1, 0x6b, 0x15, 0xf3, 0x91, 0xe4, 0x69, 0x6e, 0x14, 0x8b, 0x90, 0x47, 0x72, 0x59, 0x72, 0xb3, 0x58, 0xf8, 0x6b, 0x18, 0xce, 0x3a, 0x2c, 0x68, 0xdc, 0xef, 0x22, 0x3b, 0xa4, 0x53, 0xf8, 0x43, 0xcc, 0xd0, 0x52, 0x48, 0xcd, 0xe0, 0x5c, 0x2e, 0xc3, 0x3c, 0x9d, 0x36, 0x2b, 0xd9, 0xf8, 0xee, 0xec, 0x4a, 0x75, 0x91, 0x9a, 0x77, 0x09, 0x32, 0x9a, 0xf2, 0x90, 0xa6, 0x86, 0xee, 0xd2, 0xe9, 0x9d, 0x2a, 0x0b, 0x4e, 0xb2, 0x0a, 0xf8, 0x9b, 0x03, 0x98, 0x0e, 0x16, 0x6b, 0x27, 0x81, 0x68, 0x67, 0x5e, 0xf7, 0x74, 0x76, 0xf8, 0x55, 0xed, 0x14, 0xbf, 0x3f, 0x0f, 0x3b, 0x9d, 0x15, 0xa4, 0xae, 0x75, 0xd5, 0xb3, 0x26, 0xc5, 0x1e, 0xdf, 0x53, 0xb3, 0xdf, 0xf2, 0x08, 0x70, 0x50, 0x90, 0x30, 0xa4, 0x50, 0x11, 0x43, 0x51, 0x70, 0x4d, 0x75, 0x40, 0x8e, 0x54, 0xa8, 0x47, 0xbc, 0x95, 0xaf, 0x68, 0x2a, 0xc4, 0x16, 0xb1, 0x2b, 0x5b, 0x74, 0xc4, 0x96, 0xe6, 0x63, 0x4e, 0x1a, 0x7b, 0xf2, 0xf9, 0x93, 0xc7, 0xdb, 0xed, 0xb4, 0xc1, 0xed, 0x48, 0xf6, 0x36, 0x5d, 0x38, 0x81, 0x5f, 0x27, 0xc9, 0x9e, 0xa3, 0x9d, 0x1e, 0x87, 0xe4, 0xc4, 0xaf, 0x99, 0x73, 0x7f, 0x1d, 0x78, 0xd8, 0xa9, 0x53, 0x95, 0xc4, 0x3e, 0x83, 0xfc, 0x01, 0xea, 0xaa, 0x9a, 0xf1, 0xeb, 0x5b, 0xa2, 0x08, 0x39, 0xee, 0xed, 0x6a, 0x79, 0x18, 0x07, 0x9c, 0xb4, 0x34, 0xcd, 0x7d, 0xdb, 0x46, 0xc2, 0x6c, 0x4c, 0x82, 0xd2, 0xce, 0x93, 0xa2, 0x2a, 0x1a, 0x0c, 0x5a, 0x37, 0x97, 0x9e, 0x50, 0x10, 0xbf, 0x08, 0x23, 0x46, 0x8b, 0xd8, 0x49, 0x62, 0xa0, 0xb6, 0x54, 0x93, 0x2e, 0xe5, 0xff, 0x6e, 0x23, 0x69, 0x0c, 0xc6, 0x49, 0x04, 0xa9, 0xe8, 0x08, 0x92, 0x21, 0x25, 0xe7, 0x42, 0xe2, 0x31, 0x10, 0xc8, 0x0b, 0xed, 0x24, 0xc3, 0xaa, 0x47, 0x29, 0xe9, 0x0d, 0x6c, 0xa3, 0x6b, 0xef, 0x78, 0x49, 0xf0, 0xed, 0x03, 0xe9, 0x50, 0x3f, 0x48, 0xaa, 0x78, 0x02, 0xad, 0x89, 0xf5, 0x16, 0xa4, 0x28, 0xb5, 0x29, 0x6c, 0x47, 0xb7, 0x0e, 0x45, 0xff, 0x6e, 0xa9, 0x32, 0x2c, 0x41, 0xe3, 0xaf, 0x76, 0xf6, 0xa1, 0x67, 0xf6, 0x64, 0x49, 0x31, 0xc6, 0x16, 0x79, 0x52, 0xc2, 0x46, 0x92, 0xf3, 0x64, 0x8b, 0x26, 0xbc, 0xb3, 0xb3, 0x7d, 0xff, 0xa4, 0xe5, 0xc9, 0xfb, 0x26, 0x79, 0xca, 0xae, 0x0d, 0xc6, 0x9e, 0xb7, 0xc0, 0x55, 0x6e, 0x16, 0xf8, 0x2a, 0x8e, 0x8c, 0x11, 0xe2, 0x39, 0x8d, 0xb0, 0x12, 0xc5, 0x04, 0x45, 0xc5, 0xa1, 0x13, 0x5f, 0xf2, 0xd2, 0x68, 0x79, 0xed, 0x95, 0x8b, 0xc9, 0xcb, 0xc0, 0x5f, 0xc2, 0x40, 0x28, 0x31, 0x8a, 0xa0, 0x98, 0x92, 0x97, 0x86, 0x0a, 0x43, 0x7d, 0xb3, 0xd5, 0xa7, 0xdc, 0x5b, 0x1f, 0x9b, 0xb9, 0x7e, 0x75, 0x23, 0x5d, 0x8d, 0x96, 0x4b, 0x3e, 0x52, 0xcc, 0x20, 0x8f, 0xda, 0xf4, 0x4a, 0x6e, 0xba, 0x3c, 0x0a, 0xc0, 0x53, 0xf9, 0x41, 0xaf, 0x75, 0x76, 0xa4, 0x30, 0x5d, 0xac, 0x37, 0xf5, 0x11, 0xf2, 0x98, 0x86, 0xa7, 0x7e, 0x74, 0xeb, 0x66, 0xf4, 0x52, 0xee, 0xef, 0x7c, 0xd1, 0x42, 0x7a, 0x4b, 0xab, 0xd0, 0xeb, 0x4e, 0x73, 0xb3, 0xf4, 0xcd, 0x4d, 0xcc, 0x09, 0xb8, 0x63, 0xc2, 0x3f, 0x6d, 0x6d, 0xe7, 0x80, 0xaf, 0x29, 0x41, 0x66, 0xc4, 0x74, 0x75, 0xea, 0xb0, 0x16, 0x16, 0x6b, 0xbb, 0x0d, 0x74, 0xc5, 0xea, 0x5e, 0x35, 0xfa, 0x3d, 0x59, 0x78, 0x5d, 0xcf, 0x84, 0xb8, 0xda, 0x74, 0xd0, 0xb6, 0xaf, 0xe1, 0x59, 0xdb, 0xd7, 0x60, 0x0b, 0xcf, 0xe3, 0x1a, 0x1a, 0x67, 0x5f, 0xd6, 0xc9, 0x3b, 0x7d, 0x2c, 0xd9, 0x1a, 0x9f, 0xbe, 0x3b, 0xfc, 0xfa, 0x64, 0xfb, 0x3e, 0x1f, 0xa5, 0xcf, 0xff, 0xed, 0xa2, 0x52, 0x4d, 0x12, 0x96, 0xb9, 0x93, 0x6d, 0xf2, 0xf5, 0x78, 0x3c, 0x7c, 0x79, 0x7a, 0x44, 0x86, 0xc0, 0x78, 0x6c, 0xfe, 0xd2, 0x87, 0xdb, 0x3c, 0x92, 0x6e, 0x4c, 0xc3, 0xef, 0x48, 0xd1, 0x53, 0xde, 0x4f, 0xf6, 0x16, 0xdc, 0x80, 0x44, 0x8d, 0x9c, 0x90, 0x47, 0xad, 0xdf, 0xb4, 0x76, 0x1f, 0x1f, 0xe8, 0x9a, 0x3c, 0xa7, 0x47, 0x3b, 0xf4, 0x2d, 0xa4, 0x4e, 0xd3, 0x82, 0xe2, 0xee, 0x83, 0x55, 0xd8, 0x0b, 0x0f, 0x5a, 0x0f, 0xa5, 0x98, 0x12, 0x83, 0xd6, 0xe4, 0x6d, 0x63, 0xfb, 0x41, 0x9c, 0x20, 0x5e, 0x27, 0x01, 0xbb, 0x78, 0xad, 0x0c, 0x23, 0xd4, 0xa0, 0x1c, 0x42, 0x21, 0x16, 0x3b, 0xde, 0x37, 0x32, 0xd2, 0x18, 0x48, 0x0b, 0xbd, 0xce, 0xc7, 0x62, 0x6f, 0x75, 0x9d, 0x22, 0x9b, 0xc3, 0x55, 0x72, 0xb0, 0x49, 0x19, 0x3a, 0x45, 0xb9, 0xba, 0xbc, 0x0a, 0xfd, 0x0f, 0x9d, 0x8e, 0x98, 0xa2, 0x49, 0x11, 0x3d, 0x99, 0x59, 0x06, 0x24, 0x48, 0x2f, 0xaa, 0xde, 0x53, 0x65, 0x08, 0x0e, 0xb1, 0x7a, 0xc3, 0x99, 0x3f, 0xb3, 0x7f, 0x49, 0x1f, 0xa9, 0x35, 0x1a, 0xc8, 0x84, 0x03, 0xa7, 0xe4, 0x46, 0x2b, 0x9a, 0xf9, 0x42, 0xfe, 0x9a, 0x16, 0x77, 0xe4, 0x2e, 0x15, 0xff, 0x3d, 0x15, 0x6c, 0x5a, 0x9a, 0x6e, 0x13, 0x7a, 0x53, 0x4d, 0xc9, 0xd0, 0xe7, 0x14, 0x54, 0xae, 0xd4, 0xec, 0xa7, 0x59, 0xea, 0x7e, 0xbd, 0x30, 0x32, 0x9a, 0xcc, 0xba, 0x61, 0x31, 0xd0, 0x31, 0x06, 0xc6, 0x1c, 0x96, 0x30, 0x59, 0xda, 0x48, 0x32, 0x9b, 0x50, 0x41, 0x8c, 0x15, 0x71, 0x1b, 0xc7, 0xad, 0x74, 0x52, 0x97, 0xf3, 0x55, 0x23, 0xb1, 0x47, 0x38, 0x46, 0x51, 0x11, 0xb3, 0x6d, 0xb3, 0x88, 0x68, 0x68, 0x97, 0x81, 0x1a, 0x4b, 0xdc, 0x77, 0xad, 0x0c, 0x47, 0x2e, 0xd0, 0xc2, 0x91, 0x44, 0xf1, 0x4f, 0x60, 0x63, 0xbd, 0x81, 0x96, 0x94, 0x96, 0x74, 0x5d, 0xc6, 0x9b, 0x6c, 0xe3, 0xfc, 0xf4, 0x9c, 0x5a, 0xdb, 0xa3, 0x0e, 0x76, 0x70, 0xee, 0x56, 0xa6, 0x7a, 0x5b, 0x6d, 0x0c, 0x0b, 0xa0, 0xe3, 0x64, 0xa2, 0xa9, 0x02, 0x13, 0x5c, 0x93, 0xc9, 0x9d, 0xfd, 0x16, 0x7f, 0x26, 0xa5, 0x54, 0x1e, 0xab, 0x08, 0x3f, 0x14, 0x3d, 0xc5, 0x1d, 0xc7, 0x68, 0x5d, 0x32, 0x4a, 0xfb, 0x4b, 0x9d, 0xa1, 0xbf, 0xcb, 0x28, 0xed, 0x2c, 0x7e, 0xc6, 0xac, 0xe2, 0x7b, 0x90, 0x29, 0x92, 0x05, 0x49, 0x67, 0x3a, 0xa2, 0x87, 0x02, 0x02, 0x46, 0x20, 0xdd, 0xae, 0x4a, 0xd5, 0x23, 0xf8, 0xdb, 0x52, 0x6e, 0xbd, 0xc7, 0x37, 0xd4, 0xfb, 0x8c, 0xad, 0xdd, 0x29, 0xd7, 0x77, 0xc7, 0x74, 0x87, 0x33, 0x7a, 0xc0, 0x86, 0xb8, 0xf5, 0xbb, 0x1f, 0x06, 0x96, 0x1d, 0x2d, 0x86, 0xf1, 0x57, 0xea, 0xa9, 0x45, 0xfa, 0xe2, 0x85, 0x19, 0x72, 0xfd, 0x20, 0x7f, 0x31, 0x1f, 0xf9, 0x3e, 0x2f, 0x8c, 0x6e, 0x58, 0x6f, 0xfb, 0x8a, 0x52, 0x78, 0x77, 0xab, 0xcd, 0xda, 0xd8, 0x61, 0x86, 0xed, 0xb8, 0x44, 0x3d, 0x68, 0xce, 0x1c, 0xb2, 0x51, 0x17, 0x68, 0xe2, 0x02, 0xca, 0xb6, 0x09, 0xe2, 0xdd, 0x32, 0x28, 0x78, 0xe1, 0x2a, 0x40, 0x66, 0x25, 0x17, 0x82, 0xd0, 0x60, 0x26, 0x82, 0x96, 0x56, 0x2e, 0xc2, 0x6f, 0xa1, 0x9a, 0xfc, 0xe8, 0x66, 0x56, 0x44, 0xfa, 0x5f, 0x13, 0x67, 0xeb, 0x46, 0xb1, 0xb0, 0xbb, 0xb4, 0xc6, 0xad, 0x27, 0x66, 0x65, 0xcd, 0x72, 0x6b, 0x6f, 0x9b, 0xf1, 0xae, 0xa5, 0xef, 0x72, 0xe9, 0xc4, 0x7d, 0xe8, 0xc5, 0x41, 0x6e, 0x61, 0x92, 0xbc, 0x62, 0x08, 0x4d, 0xf2, 0x76, 0x51, 0x86, 0x3f, 0xc1, 0x3f, 0x51, 0xe9, 0xdd, 0x05, 0x5f, 0x62, 0x56, 0x16, 0x24, 0x55, 0x51, 0xab, 0x1a, 0xbb, 0xde, 0x01, 0xca, 0xfa, 0x59, 0x02, 0x05, 0x92, 0x4a, 0x11, 0x11, 0x77, 0xb1, 0x2e, 0x71, 0xe9, 0x1b, 0x24, 0xb5, 0xca, 0x66, 0xe7, 0xe6, 0xb3, 0x21, 0x18, 0xc8, 0x65, 0x55, 0x1a, 0x11, 0x59, 0x45, 0xb0, 0xf2, 0xc4, 0xa4, 0x20, 0x55, 0x3f, 0x2b, 0xae, 0xf3, 0xaa, 0x2c, 0x08, 0x8f, 0xf0, 0x3a, 0xad, 0x72, 0x8a, 0xf4, 0x6f, 0x7c, 0x73, 0xf2, 0xf6, 0x70, 0xc3, 0xf7, 0x89, 0x5c, 0xe4, 0xe2, 0x48, 0xbf, 0x0a, 0x11, 0x97, 0xed, 0x69, 0x46, 0x9c, 0x86, 0x46, 0xa6, 0x1b, 0x25, 0x07, 0xc7, 0x7a, 0x2d, 0x37, 0x09, 0x6a, 0xbd, 0x06, 0xc8, 0x8d, 0x2e, 0x29, 0x29, 0x00, 0xd2, 0x82, 0x4d, 0x89, 0x8b, 0x04, 0x60, 0xb4, 0x53, 0x86, 0x87, 0x07, 0x44, 0x0d, 0x33, 0x4a, 0xbf, 0x11, 0x58, 0xe2, 0x35, 0x0b, 0x83, 0xa6, 0xcf, 0x04, 0xd0, 0xd7, 0x0d, 0x7a, 0x73, 0x71, 0x07, 0xc3, 0x66, 0xb3, 0x45, 0x75, 0xc9, 0x66, 0x0d, 0x63, 0xbc, 0xd9, 0xd4, 0xed, 0xa5, 0x74, 0x51, 0xc7, 0x01, 0xc2, 0xee, 0xac, 0x3d, 0x9f, 0x66, 0xaa, 0xe6, 0x4f, 0xb8, 0xd1, 0x79, 0x70, 0x77, 0xfb, 0x0e, 0xf8, 0xf6, 0xdd, 0x76, 0xad, 0xbb, 0x10, 0xb0, 0x26, 0x75, 0x15, 0x5d, 0xed, 0xc6, 0xae, 0xed, 0x28, 0x3d, 0xf0, 0xe8, 0x43, 0xaf, 0xa2, 0xf9, 0x7c, 0x39, 0x15, 0xe8, 0x20, 0x1b, 0x57, 0x95, 0x5c, 0x4a, 0x81, 0x9f, 0x60, 0x21, 0xa5, 0x31, 0x13, 0x65, 0xfa, 0x18, 0xae, 0x0f, 0x9c, 0x70, 0xc0, 0xf8, 0x93, 0x0a, 0xd1, 0x96, 0x1b, 0xd5, 0xe0, 0xa6, 0xf0, 0x63, 0xc8, 0xf4, 0x9d, 0x81, 0x5f, 0xfd, 0x3c, 0x48, 0x7a, 0xe0, 0x4a, 0x5d, 0x2a, 0x8a, 0x3d, 0x2d, 0xc6, 0xeb, 0x64, 0xc4, 0x47, 0x8b, 0xf0, 0xa4, 0xa8, 0x97, 0xa1, 0x7e, 0x7c, 0x30, 0x48, 0x64, 0x2b, 0xf5, 0xbe, 0x21, 0xfc, 0xdc, 0x30, 0xc0, 0x22, 0x1b, 0x35, 0x56, 0x68, 0x15, 0x33, 0x96, 0x89, 0xe8, 0x55, 0x20, 0x90, 0xbc, 0x31, 0xeb, 0x5a, 0x6f, 0xa3, 0x59, 0x99, 0x40, 0xae, 0xd7, 0xab, 0xea, 0x9a, 0x8a, 0x54, 0xa5, 0x53, 0x0f, 0x43, 0x1f, 0xda, 0xe3, 0x70, 0xe7, 0x10, 0x93, 0xf2, 0xad, 0x29, 0x22, 0x73, 0xb3, 0x5a, 0x09, 0x36, 0xf7, 0xd7, 0x32, 0x0f, 0x99, 0x9f, 0xda, 0x3a, 0x16, 0xb2, 0x24, 0x48, 0xd2, 0x2f, 0x6b, 0xc2, 0xd8, 0x6c, 0xaa, 0x74, 0xea, 0xfe, 0x32, 0x4c, 0xeb, 0x69, 0x9e, 0x6b, 0xef, 0x17, 0xc4, 0x07, 0x33, 0xa4, 0xc3, 0x46, 0x01, 0x6d, 0xec, 0x79, 0x68, 0xcf, 0x85, 0x59, 0xc9, 0xce, 0x5d, 0xce, 0x38, 0x49, 0xb9, 0x29, 0x18, 0xf2, 0x57, 0xa8, 0x34, 0x4e, 0x63, 0x87, 0xd1, 0x76, 0x38, 0x0a, 0x67, 0xd8, 0x63, 0xda, 0x1a, 0xeb, 0x7b, 0xcf, 0x37, 0xbf, 0x75, 0x0b, 0x86, 0x00, 0x07, 0xaf, 0x1b, 0x12, 0xa0, 0xe6, 0x99, 0x7d, 0xff, 0x99, 0x75, 0xd1, 0xf0, 0xa7, 0x1d, 0xe3, 0x84, 0xe1, 0x99, 0x62, 0xa6, 0xc9, 0xd8, 0xa8, 0x4e, 0xda, 0x1d, 0x8f, 0x8e, 0xe0, 0xe5, 0xf1, 0xe9, 0x3b, 0x02, 0xc5, 0x02, 0xce, 0x72, 0x41, 0xfe, 0x31, 0xfe, 0x19, 0xa9, 0xc8, 0x64, 0x27, 0x43, 0xfb, 0x98, 0x85, 0xf5, 0xd0, 0xdc, 0x31, 0xf3, 0x22, 0x62, 0x5a, 0x71, 0x6a, 0x5b, 0x41, 0x2d, 0x71, 0x12, 0x6b, 0xba, 0x88, 0xe2, 0xa7, 0xe6, 0x45, 0x77, 0x39, 0xe6, 0x9b, 0xa3, 0xc4, 0x7e, 0x5a, 0x21, 0xd9, 0x6d, 0x21, 0x12, 0xbf, 0xdd, 0xc5, 0x15, 0x43, 0x96, 0x0c, 0x69, 0xad, 0x01, 0x3f, 0x6f, 0x32, 0x8b, 0x3d, 0x26, 0x76, 0x9d, 0xc5, 0x4d, 0xd4, 0x6e, 0x37, 0x9c, 0xa7, 0x41, 0x48, 0x13, 0x5a, 0xd0, 0x5e, 0xdf, 0x83, 0x7a, 0x55, 0x2c, 0x8b, 0x36, 0xf6, 0x96, 0xdd, 0xec, 0x4e, 0x11, 0x98, 0x1a, 0xa0, 0xdd, 0x79, 0x3d, 0xa8, 0x2c, 0x0c, 0xe7, 0x31, 0x5a, 0x73, 0xc0, 0xef, 0x06, 0xfc, 0xdd, 0xc9, 0x0a, 0x1c, 0xa2, 0xf3, 0x05, 0x39, 0x5d, 0x56, 0x9a, 0xf8, 0x09, 0x7c, 0x4f, 0x3c, 0x60, 0x0c, 0x7d, 0x84, 0x22, 0xce, 0x2c, 0x5d, 0x18, 0xad, 0xa0, 0xd0, 0x42, 0x01, 0xf8, 0x7d, 0x91, 0xd0, 0xd9, 0x9d, 0xf0, 0x2a, 0x15, 0x96, 0xe5, 0xb4, 0x85, 0x4e, 0xf1, 0x00, 0x7f, 0x83, 0xd8, 0x28, 0x0f, 0x2e, 0xa3, 0x47, 0xfb, 0x87, 0xb4, 0x98, 0x88, 0xc6, 0x6d, 0xb4, 0x4d, 0x20, 0x83, 0x0c, 0xf3, 0x20, 0xb6, 0x53, 0x30, 0xba, 0xdc, 0x5c, 0xad, 0x8a, 0x8f, 0x66, 0x0a, 0x61, 0xfd, 0xb2, 0x26, 0xfb, 0xe6, 0xd4, 0xcc, 0x3d, 0x65, 0x78, 0x6c, 0xad, 0x0d, 0xa5, 0xd7, 0x01, 0x6e, 0x7c, 0x4d, 0x5e, 0x3c, 0x81, 0xfb, 0x6d, 0x19, 0x5f, 0xb1, 0xd9, 0xcd, 0x6c, 0xf3, 0xc8, 0xb4, 0x71, 0x1b, 0x18, 0x4d, 0x67, 0x77, 0xde, 0x06, 0xe9, 0xe3, 0xcd, 0x26, 0xc9, 0xa5, 0x97, 0x4f, 0xc5, 0x4a, 0x9c, 0x62, 0x3e, 0xc1, 0x3b, 0x23, 0x26, 0x48, 0xc0, 0x0e, 0x57, 0x35, 0x57, 0x81, 0xc9, 0xb1, 0x12, 0xd8, 0x8a, 0xd7, 0xa9, 0x26, 0x32, 0x93, 0x76, 0x31, 0xfd, 0x3a, 0x3a, 0x10, 0x77, 0xad, 0x2b, 0xbc, 0x97, 0x34, 0x94, 0xda, 0x35, 0xac, 0x46, 0x0b, 0xc9, 0x56, 0x13, 0xbb, 0x08, 0xdf, 0x72, 0xa5, 0x5c, 0x59, 0x61, 0x07, 0x5f, 0x30, 0x7f, 0x20, 0x7e, 0xf0, 0x2f, 0xdc, 0x25, 0xb7, 0x16, 0x6f, 0xa3, 0xec, 0x0f, 0x3b, 0x9b, 0x54, 0xf4, 0x72, 0x43, 0xbf, 0x55, 0xe8, 0xbb, 0x90, 0x15, 0xbe, 0x8b, 0x70, 0x42, 0x5a, 0x69, 0x50, 0x47, 0x9d, 0xac, 0x61, 0x84, 0x5e, 0x99, 0x77, 0x87, 0x8f, 0xbd, 0x03, 0xd7, 0x33, 0xff, 0x09, 0xab, 0xbc, 0x1f, 0xc8, 0x01, 0x49, 0xed, 0xb3, 0x96, 0xbb, 0x62, 0x3b, 0xf6, 0xb8, 0xb6, 0x7e, 0x39, 0x0b, 0xb4, 0x49, 0xac, 0xca, 0xee, 0x42, 0x2e, 0x58, 0x04, 0x4c, 0x90, 0x2b, 0x61, 0x3f, 0x09, 0x0b, 0xc4, 0x07, 0x65, 0xc2, 0xf9, 0x2c, 0x0a, 0xb9, 0xa0, 0x07, 0x2b, 0x0d, 0x24, 0xe5, 0x06, 0xe0, 0x24, 0x14, 0xeb, 0xe5, 0xe8, 0xb5, 0xa1, 0x30, 0x68, 0xaa, 0x70, 0xd8, 0x7e, 0x05, 0x14, 0xff, 0xe8, 0xd1, 0x12, 0x1a, 0xb5, 0x8d, 0xe9, 0x92, 0x79, 0x3f, 0x83, 0x31, 0xef, 0x01, 0x71, 0x01, 0x99, 0x6f, 0xe4, 0xd5, 0x49, 0x70, 0xc0, 0x5d, 0xba, 0x55, 0xc4, 0xdd, 0x11, 0x50, 0x26, 0xa9, 0xd4, 0xf6, 0x6a, 0x65, 0x56, 0x8b, 0x73, 0xe6, 0xee, 0x32, 0xcc, 0xa2, 0x4a, 0xa8, 0x6a, 0x54, 0xd0, 0x40, 0x22, 0xd4, 0xcd, 0x38, 0x40, 0x96, 0x63, 0x17, 0x76, 0x9d, 0x99, 0x6b, 0xc8, 0x95, 0x42, 0x93, 0xaa, 0xfc, 0x98, 0x31, 0xc9, 0x91, 0x65, 0x41, 0x50, 0x49, 0xaa, 0x44, 0x71, 0xc4, 0x31, 0x9f, 0xcf, 0x6c, 0xda, 0x62, 0x10, 0x74, 0xe5, 0x6e, 0x76, 0x82, 0xb1, 0xe0, 0x78, 0x61, 0xee, 0x20, 0x0e, 0x14, 0xf3, 0x9d, 0x8f, 0x6b, 0x0a, 0x64, 0xb6, 0xf8, 0xbd, 0x17, 0x22, 0x10, 0x8b, 0xb5, 0xe7, 0xd2, 0xb7, 0x6e, 0xbd, 0x4d, 0xd1, 0xec, 0xbf, 0xf7, 0xf6, 0xd4, 0xfd, 0x7b, 0x1f, 0x39, 0xd2, 0x87, 0x37, 0xa9, 0x33, 0xb4, 0x44, 0x0e, 0xb0, 0xe4, 0x85, 0x21, 0x2a, 0x76, 0x85, 0x21, 0x96, 0xd5, 0xf5, 0x72, 0x51, 0xb3, 0xc5, 0xa1, 0x5a, 0x1c, 0x33, 0xae, 0x1c, 0x4c, 0xd8, 0x60, 0x83, 0x1e, 0xce, 0x85, 0x0d, 0x33, 0xd7, 0xfe, 0x54, 0xe0, 0xd6, 0x09, 0x5f, 0xc2, 0x10, 0x4c, 0x78, 0xc5, 0x9d, 0xfb, 0x86, 0x0d, 0x4f, 0x52, 0xc0, 0x71, 0x3a, 0x04, 0xb2, 0x93, 0xd7, 0x2e, 0x41, 0xed, 0xdf, 0x90, 0x08, 0x6c, 0x14, 0xda, 0x06, 0x59, 0x60, 0xfc, 0xa5, 0x40, 0xe5, 0xe4, 0xc6, 0x63, 0xb6, 0x4e, 0x84, 0xf1, 0x24, 0x2c, 0x88, 0x0c, 0xa0, 0x8a, 0x7d, 0x89, 0xc0, 0x48, 0xf0, 0xc9, 0x21, 0xcc, 0x95, 0x88, 0x21, 0xa8, 0x90, 0x19, 0xb4, 0xc6, 0x5c, 0x50, 0xa4, 0x39, 0x5d, 0x4b, 0xac, 0xea, 0x54, 0x53, 0xb1, 0x14, 0x8c, 0xd2, 0x62, 0xdb, 0x45, 0xac, 0x75, 0xcc, 0x48, 0x10, 0x12, 0xb5, 0x39, 0xa2, 0xfe, 0xc8, 0xf6, 0x1c, 0x6b, 0xe9, 0xe0, 0x64, 0x9d, 0xb0, 0xbd, 0x1a, 0x69, 0x1b, 0x46, 0xb3, 0x49, 0xdc, 0x43, 0x03, 0xef, 0xef, 0x07, 0x9f, 0xef, 0x6a, 0x85, 0x3b, 0x82, 0x5c, 0xfe, 0x33, 0x70, 0x4e, 0x25, 0x11, 0x2d, 0x02, 0xcf, 0x99, 0x9f, 0xda, 0x47, 0x43, 0x0e, 0x48, 0x30, 0x97, 0x48, 0x77, 0x79, 0x84, 0x58, 0x77, 0x1b, 0x72, 0xca, 0x79, 0x93, 0x9a, 0x1e, 0xe7, 0x41, 0x1d, 0xcb, 0xf6, 0x9c, 0x79, 0x82, 0x47, 0x0e, 0x83, 0x33, 0xd5, 0x2b, 0x34, 0x2e, 0x27, 0x0c, 0xbb, 0x88, 0x1b, 0x02, 0xaf, 0x45, 0x7c, 0x17, 0x9c, 0xc0, 0x26, 0xe4, 0x66, 0x7b, 0xc6, 0x51, 0xc7, 0x1c, 0x26, 0x6d, 0x3a, 0x47, 0x73, 0x61, 0x36, 0xa8, 0xe1, 0x85, 0x4e, 0xd9, 0xec, 0xfd, 0xda, 0x7b, 0xf2, 0x7c, 0xf4, 0xb8, 0x75, 0x4f, 0x9a, 0xf9, 0x62, 0x78, 0x33, 0xb9, 0x27, 0xe4, 0x71, 0x7e, 0xfc, 0x96, 0x52, 0x3e, 0x94, 0xdd, 0x50, 0xd7, 0x06, 0xf5, 0x3e, 0xc3, 0xab, 0xc3, 0x5e, 0xc2, 0x2b, 0x32, 0x39, 0xc3, 0x1c, 0xee, 0x88, 0x6f, 0xdf, 0x56, 0x8c, 0x8a, 0xb1, 0x2f, 0x08, 0x75, 0x09, 0x46, 0x24, 0x2f, 0x36, 0x2a, 0xbe, 0xe7, 0x79, 0xb4, 0xb0, 0x47, 0x33, 0x6b, 0xb3, 0xdb, 0x6c, 0xba, 0xa2, 0xf8, 0x34, 0xd4, 0x43, 0x80, 0x3e, 0xad, 0xf7, 0x9b, 0x7b, 0xbe, 0x72, 0xf1, 0x8e, 0x9b, 0x1f, 0x74, 0x37, 0xc3, 0xb5, 0xee, 0x91, 0xc5, 0xf3, 0xea, 0xc3, 0xdc, 0x6f, 0x4a, 0x85, 0xa2, 0xdf, 0xb5, 0x7f, 0x15, 0x84, 0x88, 0x29, 0xa1, 0x1f, 0x02, 0xd1, 0xd0, 0x53, 0x7e, 0x59, 0xb0, 0x0a, 0xf0, 0x36, 0x9f, 0x56, 0x65, 0x5d, 0x5e, 0x70, 0xa6, 0x9a, 0xa7, 0x1b, 0x1c, 0x1d, 0x8d, 0x93, 0x9b, 0x6c, 0xa2, 0x55, 0xb1, 0xa3, 0xd0, 0x87, 0xcc, 0x5c, 0x04, 0x71, 0x91, 0x2a, 0xcf, 0x1a, 0xec, 0x9a, 0x46, 0x42, 0x01, 0xea, 0x44, 0x4d, 0xac, 0x04, 0x41, 0x85, 0x54, 0x78, 0xf4, 0x01, 0x9c, 0x93, 0x68, 0x5a, 0x66, 0x65, 0x24, 0x1e, 0xce, 0x13, 0x50, 0xb1, 0xc2, 0x74, 0x42, 0x32, 0x7c, 0x92, 0x4a, 0x87, 0x25, 0xf6, 0x0d, 0x18, 0xb6, 0x03, 0x25, 0x45, 0xfc, 0x95, 0x1f, 0xe1, 0x29, 0x0b, 0x6a, 0x55, 0x26, 0x19, 0x7a, 0x12, 0x82, 0x1d, 0xf8, 0x6d, 0x72, 0xa8, 0x23, 0xe0, 0xac, 0xac, 0x28, 0x03, 0xc9, 0xeb, 0x7e, 0x82, 0x36, 0x81, 0xab, 0x0a, 0xae, 0x62, 0xc2, 0x1b, 0x0d, 0xf9, 0xe9, 0xcd, 0x55, 0xc9, 0xbd, 0xa2, 0x68, 0x9b, 0x21, 0x9a, 0xa8, 0xc6, 0x96, 0xcb, 0x7a, 0x04, 0x5f, 0x5f, 0x1a, 0x64, 0xab, 0xbc, 0xf1, 0x0f, 0x2a, 0x8a, 0x4d, 0x28, 0xe7, 0xe1, 0x4a, 0x4a, 0x25, 0x45, 0xe1, 0x75, 0x7e, 0xd9, 0xd3, 0x0a, 0x93, 0x5d, 0x46, 0x04, 0xed, 0x40, 0xe2, 0x89, 0x2e, 0x2d, 0xcd, 0x48, 0x84, 0x66, 0xc5, 0xb7, 0x34, 0x68, 0xf0, 0x8a, 0x7f, 0x85, 0x0e, 0xd8, 0x1e, 0xea, 0xfb, 0x59, 0x89, 0x2b, 0x3f, 0xaf, 0xf5, 0xe6, 0x5a, 0xe5, 0xcf, 0x9b, 0x8b, 0xbd, 0x02, 0xd1, 0xd0, 0xab, 0x8b, 0xbc, 0x06, 0x00, 0x14, 0xf7, 0xe9, 0x7c, 0x71, 0x47, 0xbd, 0x46, 0xb2, 0x22, 0xf9, 0x28, 0x5e, 0x30, 0xd6, 0xb6, 0x80, 0xc7, 0xf1, 0xb4, 0x23, 0x5d, 0xfe, 0xd5, 0x2d, 0xf1, 0x83, 0xfd, 0xe1, 0x24, 0x4b, 0xd1, 0x8d, 0xe5, 0x45, 0x03, 0x85, 0x29, 0x5e, 0x99, 0xc2, 0xd5, 0x18, 0x91, 0xda, 0x94, 0xaf, 0xf8, 0xdd, 0x73, 0xd2, 0xb5, 0x70, 0xb4, 0x27, 0x2f, 0xdf, 0x9f, 0x7f, 0x93, 0xec, 0x8f, 0x76, 0x1f, 0x54, 0x99, 0x42, 0x0c, 0xa1, 0x35, 0x86, 0x1e, 0x1e, 0x35, 0x75, 0x2d, 0xfe, 0xb2, 0x2a, 0xda, 0xcd, 0x1e, 0x62, 0xbe, 0x79, 0xd1, 0x9f, 0x54, 0xfc, 0xc2, 0xe1, 0x32, 0xc9, 0xda, 0xa9, 0xd5, 0x7e, 0x3b, 0xa0, 0xe1, 0x90, 0x4c, 0xb8, 0xea, 0xbe, 0x30, 0x66, 0x1d, 0x85, 0xe7, 0x68, 0x4d, 0x56, 0xd0, 0x83, 0x34, 0x49, 0x9b, 0x1a, 0xaf, 0xc0, 0xbb, 0xcf, 0x77, 0xca, 0x36, 0xf2, 0x24, 0x3d, 0xf6, 0xec, 0xcd, 0xab, 0xce, 0x70, 0x4f, 0x9f, 0x3d, 0xd9, 0xfd, 0x84, 0x49, 0x7a, 0x25, 0xbc, 0x23, 0xe2, 0x45, 0x88, 0xa2, 0xe6, 0x7c, 0x5f, 0xa1, 0x6e, 0x55, 0xfd, 0x0c, 0xa5, 0x3c, 0xe4, 0x17, 0xd6, 0xd7, 0xcd, 0x0c, 0xd9, 0x5a, 0xda, 0xb8, 0x8a, 0x73, 0x31, 0xb0, 0xa2, 0xbf, 0xff, 0x23, 0x2c, 0xab, 0xfd, 0xf3, 0x4f, 0x14, 0x0d, 0xa0, 0xf6, 0x77, 0x36, 0xcb, 0x5f, 0x99, 0x4c, 0xed, 0xc4, 0x31, 0xae, 0xf3, 0xe6, 0x6f, 0x37, 0x13, 0xdb, 0xa4, 0x86, 0x2a, 0xb1, 0x82, 0x08, 0xb5, 0xe6, 0x73, 0x0a, 0x9e, 0x81, 0xce, 0x4e, 0x8f, 0x95, 0x70, 0xc4, 0x53, 0x4f, 0x23, 0xd0, 0x5d, 0x90, 0xd6, 0x2d, 0xb3, 0xbe, 0x26, 0x53, 0xda, 0x6d, 0x45, 0xf0, 0xbb, 0xd4, 0x4d, 0x0e, 0x6f, 0x36, 0xa7, 0x56, 0xd1, 0x0a, 0xa0, 0x8b, 0x52, 0xf5, 0x72, 0x5e, 0xf4, 0xf8, 0x2e, 0x25, 0x81, 0xe8, 0xef, 0xe6, 0x04, 0x06, 0xcd, 0x4d, 0xf9, 0x8f, 0xb6, 0x1f, 0xd3, 0x68, 0x18, 0x98, 0xef, 0x87, 0xdf, 0xee, 0xa1, 0x22, 0x68, 0xa3, 0x3b, 0x04, 0x27, 0xf7, 0xdb, 0x53, 0xb5, 0x0a, 0xd2, 0x3a, 0x34, 0x5d, 0xfd, 0x20, 0xaa, 0x8d, 0x07, 0xd0, 0x1a, 0xff, 0x31, 0xc2, 0x7f, 0xff, 0xbc, 0x37, 0x7c, 0xf2, 0x93, 0xfd, 0xe8, 0x6f, 0xf7, 0x3e, 0xfc, 0x76, 0x7f, 0x23, 0x56, 0xf0, 0xe5, 0x4a, 0xff, 0xbd, 0x04, 0x45, 0x28, 0xb4, 0xc5, 0x9d, 0x54, 0x69, 0x48, 0x80, 0xd1, 0xb5, 0xc5, 0xa3, 0x26, 0xbb, 0x11, 0x7c, 0x24, 0xf8, 0xad, 0x46, 0xec, 0x2c, 0x76, 0x9a, 0xaa, 0xb6, 0xc6, 0x53, 0xe6, 0x70, 0x53, 0xf2, 0xfb, 0x0a, 0x90, 0x80, 0x1b, 0x22, 0xf5, 0x03, 0x01, 0x2f, 0x2c, 0xb2, 0x36, 0x79, 0x00, 0x2d, 0x45, 0x21, 0x36, 0xc2, 0xdd, 0x90, 0xb4, 0x28, 0x23, 0xcf, 0xd2, 0xa4, 0xb3, 0xe9, 0x93, 0x89, 0xfd, 0x49, 0x91, 0x05, 0x85, 0x58, 0x5a, 0xb3, 0xc9, 0xd6, 0x9b, 0xb2, 0x83, 0xb2, 0xe5, 0xfc, 0x67, 0xf9, 0xc0, 0x2b, 0xd7, 0xd0, 0x5b, 0x42, 0x57, 0x3a, 0xc8, 0x3c, 0xfa, 0x0b, 0x01, 0x85, 0x79, 0x6e, 0x4e, 0x96, 0x2a, 0x66, 0xc0, 0xbc, 0x76, 0xe1, 0x17, 0xfa, 0x99, 0x84, 0x5e, 0x50, 0xe1, 0x4f, 0x7d, 0xd9, 0xca, 0x08, 0x2f, 0x4b, 0x27, 0xe8, 0x5a, 0xd7, 0x6a, 0x02, 0x64, 0x3b, 0xba, 0x4c, 0x1c, 0xd8, 0x54, 0x5a, 0xf7, 0x6c, 0x88, 0xbf, 0x15, 0xde, 0x26, 0xc8, 0x46, 0xd1, 0xe6, 0xac, 0x6f, 0xd8, 0x35, 0x44, 0xee, 0x68, 0x93, 0x0d, 0xbd, 0x9a, 0x58, 0x2a, 0xc1, 0xa5, 0x9f, 0xf2, 0x0a, 0x39, 0x58, 0xa2, 0x61, 0xbd, 0x61, 0x10, 0x8b, 0x84, 0x84, 0x9a, 0xdd, 0x19, 0x6e, 0xc8, 0x50, 0xac, 0x23, 0x5b, 0xfb, 0xa0, 0x2e, 0x02, 0xe1, 0x36, 0x86, 0xd4, 0x36, 0x87, 0x9b, 0xc9, 0x96, 0x35, 0xec, 0x66, 0x69, 0x7d, 0xb5, 0x1d, 0xf3, 0x42, 0x3a, 0xc7, 0x9f, 0x63, 0x54, 0x13, 0xf1, 0x3c, 0x40, 0x64, 0x32, 0x87, 0xea, 0x57, 0x60, 0x4f, 0x18, 0x53, 0x03, 0x29, 0x82, 0x43, 0x1b, 0x47, 0x6e, 0xfd, 0x64, 0x08, 0x53, 0x91, 0xb1, 0x74, 0xff, 0x83, 0xa2, 0x30, 0x61, 0x50, 0x8b, 0x9e, 0xe5, 0x24, 0xaf, 0x21, 0x17, 0x40, 0x39, 0x21, 0x8a, 0xf8, 0x5d, 0xf2, 0x62, 0x79, 0x55, 0x19, 0xcd, 0x2f, 0xac, 0xb3, 0x1a, 0x7f, 0x93, 0x30, 0xf0, 0xa5, 0x79, 0x8a, 0x9f, 0xb1, 0x94, 0xe1, 0x81, 0x0d, 0x7e, 0x42, 0x7c, 0x3c, 0xe4, 0x8f, 0x0c, 0xd3, 0x7a, 0x18, 0x68, 0x39, 0x08, 0x23, 0xfa, 0x21, 0x53, 0x28, 0x9d, 0xb0, 0x45, 0x90, 0xbb, 0x88, 0x90, 0x5a, 0x31, 0xa5, 0xf6, 0xdd, 0xc9, 0xce, 0x68, 0xb4, 0x03, 0x7e, 0xb5, 0x63, 0xfe, 0x10, 0x4b, 0x86, 0x32, 0x6d, 0xbb, 0x1d, 0xae, 0x0c, 0x85, 0xe3, 0x5b, 0x70, 0xff, 0x48, 0x37, 0x48, 0xaf, 0x63, 0xd0, 0x5f, 0x57, 0x94, 0x7d, 0x5a, 0x19, 0x4d, 0xb2, 0xe2, 0x32, 0xde, 0x45, 0x47, 0x40, 0x06, 0x7d, 0xa5, 0xd8, 0xab, 0x5e, 0x0b, 0x58, 0x44, 0xa7, 0x57, 0x1a, 0x4c, 0x3a, 0xf2, 0xbc, 0x60, 0x11, 0x79, 0xa3, 0x28, 0x5d, 0x54, 0x3f, 0x9d, 0xae, 0xb5, 0xe5, 0x1e, 0xef, 0xb7, 0x7d, 0x1e, 0xcb, 0xbc, 0x30, 0xd6, 0x85, 0xd1, 0x8b, 0x09, 0x8d, 0x13, 0xd9, 0x77, 0x61, 0xfd, 0x0e, 0x3b, 0xd2, 0xc2, 0xae, 0x33, 0x2b, 0x45, 0x26, 0xf2, 0x94, 0x0d, 0xaf, 0x85, 0x15, 0xc7, 0xef, 0xb7, 0x02, 0x41, 0xc9, 0x1f, 0xd9, 0xc6, 0x10, 0x5e, 0x7e, 0xee, 0x32, 0xb3, 0xbd, 0x31, 0x04, 0xed, 0x25, 0xe5, 0xe4, 0x1f, 0x52, 0xdc, 0x25, 0x6d, 0x39, 0xe6, 0xf1, 0xb0, 0xfe, 0x06, 0x7b, 0x99, 0xbc, 0x29, 0x98, 0x35, 0x03, 0xd0, 0xd4, 0xec, 0xfc, 0xeb, 0xc3, 0x33, 0xd1, 0x4e, 0xa8, 0x24, 0xdc, 0x35, 0x40, 0x0d, 0xfb, 0x03, 0xc3, 0x88, 0x79, 0xfa, 0xd8, 0x76, 0x24, 0xaf, 0xaf, 0xd2, 0xfd, 0x27, 0x4f, 0x65, 0xda, 0x8a, 0x96, 0x45, 0x36, 0xd2, 0x26, 0xff, 0x6a, 0x67, 0x87, 0x03, 0xe5, 0x30, 0x4c, 0x03, 0x9e, 0x90, 0x4a, 0x5f, 0xf5, 0xcd, 0x3f, 0x6c, 0x46, 0x53, 0xe4, 0xac, 0xd3, 0x56, 0xdb, 0x70, 0xc2, 0xf3, 0x4c, 0x79, 0x75, 0xad, 0x4e, 0x0a, 0x03, 0xdf, 0x5f, 0xcb, 0xd0, 0x07, 0xe9, 0x9a, 0x06, 0x03, 0x82, 0x2f, 0x21, 0x4d, 0x98, 0x12, 0x2d, 0x45, 0x05, 0x72, 0xa7, 0xb7, 0x3b, 0x94, 0x72, 0x46, 0xcd, 0x5f, 0xa7, 0x21, 0x88, 0x89, 0x26, 0xbc, 0xe1, 0x40, 0xbc, 0x91, 0x25, 0xed, 0x13, 0x50, 0xd5, 0xc0, 0xf5, 0x03, 0xe5, 0x69, 0xc4, 0x85, 0xdd, 0x31, 0x74, 0x98, 0xab, 0x49, 0x90, 0xa1, 0x20, 0xdf, 0xb4, 0x30, 0x9b, 0x64, 0xcd, 0x7b, 0x89, 0x81, 0xee, 0xba, 0x18, 0x49, 0x50, 0xb1, 0xd7, 0xd8, 0xdb, 0x80, 0xc0, 0x6a, 0x24, 0x20, 0x66, 0xc5, 0x4e, 0x01, 0xe2, 0x8d, 0x39, 0x97, 0x9c, 0x61, 0x97, 0xcc, 0xd9, 0x22, 0xe8, 0x13, 0xdc, 0x03, 0x43, 0x0a, 0x3b, 0xa0, 0x03, 0x31, 0x34, 0x82, 0x8e, 0x07, 0xf0, 0x2f, 0x3f, 0x1f, 0xed, 0x1e, 0x28, 0x26, 0xeb, 0x20, 0xf9, 0xba, 0x58, 0xe1, 0x3c, 0xb0, 0xe8, 0xaf, 0xc7, 0xdf, 0x06, 0xc5, 0x55, 0x78, 0xe3, 0xf1, 0x23, 0xbc, 0xf1, 0x6e, 0xcc, 0x4f, 0xdd, 0x94, 0xf3, 0x0b, 0xf3, 0xe6, 0xce, 0xab, 0xbb, 0xd4, 0xfc, 0x11, 0x7b, 0xfc, 0x19, 0x1e, 0x37, 0x84, 0x37, 0x6b, 0x82, 0x6e, 0xe4, 0x89, 0xb4, 0xee, 0x39, 0x48, 0x4e, 0xcb, 0x79, 0x5a, 0x91, 0x93, 0x9a, 0x89, 0x6f, 0xcd, 0x8c, 0x1f, 0x3f, 0x8e, 0xcc, 0x78, 0xd0, 0x33, 0xa1, 0xd1, 0x3f, 0x3f, 0xa3, 0x13, 0x72, 0xfb, 0xe1, 0x6f, 0x93, 0x74, 0xfa, 0x91, 0x28, 0x91, 0xf2, 0xd8, 0x2d, 0xc4, 0xf0, 0xa7, 0xe4, 0xe6, 0x8c, 0x3c, 0xf0, 0x90, 0x4e, 0x46, 0x15, 0x41, 0xaf, 0x35, 0x54, 0xd2, 0xfe, 0x6c, 0xff, 0xd1, 0xde, 0xce, 0xd3, 0xd1, 0xe3, 0xd1, 0xbe, 0xcd, 0x2b, 0x33, 0x84, 0x75, 0x8d, 0xbe, 0x19, 0x08, 0xe4, 0x47, 0x7c, 0xdf, 0x94, 0x51, 0x91, 0x17, 0x66, 0x1c, 0xc4, 0xfc, 0xed, 0x4f, 0xc8, 0x69, 0xe4, 0x32, 0x4a, 0x52, 0xc0, 0x4c, 0xf8, 0x05, 0x4a, 0xa3, 0x48, 0x8b, 0x40, 0xe0, 0x35, 0x60, 0x12, 0xea, 0xe8, 0x40, 0x33, 0x63, 0x4a, 0xf5, 0x9c, 0xe4, 0xc6, 0x60, 0x6e, 0xca, 0x15, 0x79, 0xd4, 0xe1, 0xbe, 0x51, 0xa0, 0x75, 0x52, 0x90, 0x68, 0x1d, 0xb8, 0x62, 0x11, 0xbf, 0x18, 0x4f, 0x9e, 0xb2, 0x77, 0x27, 0xad, 0x66, 0xee, 0x70, 0xc4, 0x36, 0xe4, 0x8c, 0xa5, 0x06, 0x27, 0xc6, 0x90, 0x29, 0xa6, 0xd0, 0x42, 0xbe, 0x31, 0x76, 0xc6, 0x35, 0xf9, 0x8c, 0x63, 0x1d, 0xc2, 0x61, 0x66, 0x40, 0x3d, 0xb6, 0x5e, 0x7f, 0x4d, 0x70, 0x70, 0x68, 0xe8, 0xf2, 0x03, 0xae, 0x99, 0x60, 0xf7, 0x07, 0xad, 0x3b, 0x60, 0x77, 0xad, 0x9e, 0xea, 0xee, 0xc4, 0x05, 0x47, 0x1c, 0x15, 0x4b, 0xec, 0xdd, 0x76, 0xd9, 0xc1, 0x7e, 0xe1, 0x59, 0xcc, 0xfb, 0x72, 0x8f, 0x2b, 0x42, 0x00, 0x28, 0xda, 0x08, 0x14, 0xfc, 0xaf, 0x4e, 0x63, 0x4f, 0x95, 0x82, 0x41, 0xe5, 0x52, 0xb7, 0xf3, 0xa1, 0x8c, 0xf9, 0x8b, 0xa9, 0xec, 0xd1, 0xaf, 0x4f, 0x65, 0xfb, 0x0f, 0xa5, 0x32, 0x47, 0x64, 0xb8, 0x67, 0x6b, 0x48, 0x0c, 0x34, 0xa6, 0x1d, 0xcf, 0xe3, 0x54, 0xe6, 0x93, 0x19, 0x99, 0xa8, 0x31, 0x42, 0x6b, 0xd1, 0x99, 0x25, 0xb3, 0x1e, 0x2a, 0x63, 0x90, 0x2a, 0xa6, 0xb1, 0xf5, 0x24, 0xc6, 0x34, 0xc6, 0x5d, 0xa9, 0xd7, 0x50, 0x59, 0xdb, 0x03, 0xbf, 0x9e, 0xce, 0x1c, 0x39, 0x3c, 0x98, 0xca, 0xb4, 0x8f, 0x0d, 0x73, 0x9d, 0x1e, 0x12, 0x6b, 0xd1, 0xd8, 0x9a, 0x86, 0x7f, 0x7b, 0xcf, 0x63, 0x54, 0xf6, 0xe8, 0x21, 0x54, 0x66, 0x0e, 0x74, 0x0e, 0xd9, 0xdb, 0xa2, 0xb2, 0xc7, 0xbf, 0x2e, 0x95, 0x01, 0x24, 0xa7, 0x5b, 0x6c, 0x99, 0xbc, 0xfc, 0x67, 0xcf, 0x31, 0xa5, 0x61, 0x75, 0xd4, 0xa0, 0x06, 0xf1, 0xe7, 0x71, 0x8a, 0xce, 0x85, 0xbe, 0xf7, 0xc4, 0xda, 0xb0, 0x34, 0x7b, 0x3f, 0xfb, 0xc4, 0xf6, 0x3b, 0xf1, 0x41, 0xa3, 0xfa, 0xb1, 0xd3, 0xf6, 0xcf, 0xea, 0x3c, 0x3f, 0xd8, 0xd9, 0xf9, 0x89, 0x9c, 0x10, 0x07, 0x90, 0x7d, 0x3f, 0x05, 0x5d, 0x6f, 0x23, 0xfa, 0xf1, 0xf8, 0xe4, 0xd5, 0xb7, 0x63, 0x71, 0xfe, 0x8a, 0x12, 0xa3, 0x4a, 0x0e, 0xe1, 0xd9, 0x21, 0xe4, 0x43, 0xe5, 0xc3, 0x81, 0xde, 0xcc, 0xdd, 0x12, 0x87, 0xb7, 0x03, 0xf5, 0xc0, 0x52, 0xde, 0x8e, 0x30, 0x63, 0x42, 0x49, 0xe3, 0xeb, 0x2c, 0xce, 0x5d, 0x19, 0xb5, 0x17, 0x10, 0x8b, 0x27, 0x22, 0x33, 0xb1, 0xb6, 0x7f, 0xe1, 0xbd, 0xb8, 0xd5, 0x5c, 0x55, 0x54, 0x1c, 0x41, 0x8f, 0x6e, 0x6b, 0xfc, 0x65, 0xdd, 0xec, 0x64, 0x5e, 0xdf, 0x10, 0x9a, 0xec, 0xb2, 0xca, 0x7a, 0x3a, 0x4d, 0x9f, 0x5f, 0x79, 0xbf, 0x55, 0x57, 0x94, 0x43, 0x15, 0x77, 0xdb, 0x25, 0xe8, 0x68, 0xde, 0x7e, 0xe3, 0xbd, 0x20, 0x07, 0x0d, 0xf0, 0xbf, 0x54, 0xc6, 0x62, 0xc1, 0x49, 0xe6, 0xd4, 0x67, 0xb4, 0xd1, 0xc6, 0x1c, 0xb7, 0x77, 0xae, 0x31, 0x64, 0x2d, 0x85, 0x30, 0x68, 0x7d, 0x51, 0x3f, 0x36, 0x43, 0x76, 0x1d, 0x1b, 0xfc, 0x8b, 0x14, 0xbf, 0xe1, 0xbf, 0x3f, 0xc1, 0x77, 0x29, 0x42, 0x41, 0xff, 0xba, 0xc2, 0x3f, 0x25, 0x38, 0x2f, 0x10, 0x4c, 0xfe, 0x29, 0x4f, 0xe3, 0x1b, 0xed, 0xd7, 0xdb, 0x58, 0x78, 0x80, 0x77, 0x65, 0x00, 0x31, 0x44, 0xab, 0xf6, 0x61, 0xdc, 0x82, 0xbc, 0x09, 0xcb, 0x85, 0x69, 0xe4, 0xc7, 0x71, 0x85, 0x2b, 0xf3, 0x51, 0x1a, 0xb5, 0xe8, 0xde, 0x6f, 0x96, 0xe5, 0x22, 0x8e, 0x72, 0x00, 0x03, 0x6a, 0x0e, 0x15, 0x81, 0x51, 0xe6, 0x56, 0x10, 0x32, 0xef, 0xbd, 0xdd, 0xcf, 0x43, 0xaf, 0xed, 0x7b, 0x2d, 0x08, 0x73, 0x50, 0x85, 0x94, 0x57, 0x40, 0xc9, 0xd9, 0x13, 0x57, 0x07, 0x11, 0xfb, 0x6c, 0xa4, 0x6a, 0x0c, 0xc6, 0xf4, 0x2c, 0x63, 0xeb, 0x6b, 0xc2, 0x86, 0xb4, 0xf0, 0x89, 0xb4, 0xdd, 0xfa, 0x01, 0xbe, 0x87, 0x5c, 0x12, 0x6b, 0xe1, 0x98, 0xe1, 0xe8, 0x78, 0xc0, 0xdf, 0xa9, 0xc1, 0xb6, 0xc4, 0x6c, 0xbe, 0x74, 0xb8, 0x57, 0xbf, 0x7b, 0xbc, 0x8b, 0x53, 0xd5, 0x51, 0xd0, 0x0e, 0x66, 0xae, 0xbe, 0xf6, 0xdf, 0x3d, 0x4a, 0x47, 0xff, 0x42, 0x20, 0xa3, 0x27, 0x6d, 0xb3, 0xfc, 0xb7, 0x72, 0xc7, 0x2f, 0x01, 0xb7, 0x32, 0x9c, 0xa4, 0x55, 0xa4, 0x00, 0x41, 0x34, 0x44, 0x05, 0xe9, 0x50, 0x84, 0x0b, 0x7d, 0x8b, 0x3b, 0x2b, 0x48, 0x56, 0xb9, 0xfd, 0xa1, 0x19, 0x2a, 0x09, 0xdb, 0x35, 0x58, 0x87, 0xb7, 0xdf, 0x5e, 0x75, 0x10, 0x20, 0x4b, 0xa5, 0xf3, 0x01, 0x42, 0x61, 0x11, 0xfc, 0x21, 0x3a, 0x9b, 0xd6, 0x47, 0x66, 0x55, 0x7a, 0xe3, 0x99, 0xe4, 0x0c, 0xed, 0x7e, 0xc1, 0x8e, 0x6f, 0x9b, 0xc3, 0x80, 0x14, 0x6b, 0x84, 0x34, 0x63, 0xda, 0x47, 0x3d, 0xad, 0x32, 0x09, 0x31, 0x00, 0x27, 0x90, 0xc2, 0x97, 0x00, 0xd8, 0x33, 0x6a, 0xc7, 0x65, 0xa6, 0x85, 0x87, 0x76, 0xd5, 0x8a, 0x2c, 0x41, 0x70, 0x12, 0xa3, 0x48, 0x56, 0xaf, 0x4b, 0xdc, 0xd1, 0x76, 0xb7, 0xa9, 0x60, 0x4f, 0xe0, 0x55, 0x2d, 0x01, 0x95, 0xf4, 0x68, 0x86, 0x6d, 0x41, 0xdb, 0x36, 0xf3, 0xed, 0xbc, 0xdb, 0xcc, 0x7c, 0x6b, 0xf8, 0x45, 0xf9, 0xc5, 0x70, 0x5b, 0x5d, 0x9f, 0xc0, 0x7d, 0xac, 0xc9, 0x16, 0xa2, 0xc9, 0x22, 0xe0, 0x79, 0x45, 0x5e, 0x1b, 0x11, 0x5f, 0x54, 0xc4, 0x40, 0x19, 0x8c, 0x82, 0xeb, 0x14, 0x34, 0x14, 0xe1, 0x99, 0x55, 0x88, 0x74, 0x0a, 0xbf, 0x83, 0x7f, 0xc7, 0xec, 0xd6, 0x05, 0x27, 0x48, 0x51, 0x4d, 0x24, 0xc2, 0xc0, 0x02, 0x44, 0xcc, 0x4e, 0xe5, 0x72, 0xd9, 0x96, 0x4d, 0x28, 0xaf, 0x55, 0xde, 0xf0, 0x42, 0x99, 0xca, 0x1f, 0xef, 0x4d, 0x9e, 0xb7, 0xec, 0xe7, 0x42, 0xbc, 0x22, 0xb8, 0x7c, 0x54, 0x4c, 0xc1, 0x00, 0xc6, 0xd3, 0xab, 0x6c, 0x21, 0x8d, 0x57, 0x7a, 0x4a, 0x91, 0x7b, 0xeb, 0x76, 0xdb, 0x73, 0xe2, 0xec, 0xb2, 0x8b, 0x66, 0x39, 0x5a, 0x94, 0x7f, 0x33, 0xdb, 0x9c, 0xa2, 0x93, 0x5b, 0x70, 0x25, 0x8c, 0xac, 0x2f, 0xf8, 0x5c, 0x10, 0x23, 0x28, 0xac, 0x55, 0xe9, 0xd8, 0x77, 0xa2, 0x40, 0xd3, 0x5c, 0x31, 0x9e, 0x24, 0xaf, 0xcc, 0x8c, 0x0f, 0x3f, 0xbc, 0x7f, 0x37, 0x7e, 0x7f, 0xda, 0x25, 0xec, 0xd3, 0x93, 0xb3, 0xf3, 0xc3, 0xd7, 0x1f, 0x4e, 0xcf, 0x4e, 0xce, 0x4f, 0x5e, 0x9d, 0x1c, 0x27, 0x5b, 0x7b, 0xdb, 0x6b, 0x4b, 0xa4, 0xac, 0x4b, 0xc3, 0xc3, 0xdb, 0xd3, 0xf9, 0x33, 0xcf, 0xb2, 0xb3, 0xd8, 0xc2, 0x7a, 0xc2, 0xd1, 0xbe, 0x17, 0xea, 0x6a, 0xd7, 0xf6, 0xb1, 0x6f, 0x83, 0xc4, 0x1b, 0xb1, 0xf5, 0x34, 0xb9, 0x5c, 0xf1, 0x4d, 0x71, 0xe1, 0x72, 0x46, 0x9a, 0x0c, 0x14, 0x2e, 0x0d, 0xd8, 0x79, 0xd5, 0x35, 0x6b, 0xfd, 0x7b, 0x4f, 0xba, 0x3a, 0x0b, 0xce, 0x80, 0x14, 0x30, 0x47, 0x15, 0xf5, 0x7a, 0xb2, 0x60, 0x48, 0x0e, 0xc2, 0x71, 0xb6, 0x6f, 0x10, 0xca, 0xbd, 0x84, 0x50, 0xa8, 0x24, 0x95, 0x35, 0x3a, 0x23, 0x4a, 0x4f, 0xc3, 0xee, 0x44, 0xf2, 0x0a, 0x5a, 0x98, 0x4b, 0x8f, 0x4c, 0x99, 0x08, 0x85, 0xd0, 0xb0, 0xbf, 0x12, 0xd1, 0x35, 0x0f, 0xe0, 0xb7, 0x1e, 0x57, 0xa5, 0xd2, 0xa2, 0x20, 0x2c, 0xc9, 0x2f, 0x5f, 0x50, 0x7f, 0xc6, 0x1b, 0x6f, 0x52, 0x18, 0x0e, 0x4a, 0x19, 0xa1, 0xe9, 0x45, 0x38, 0xec, 0xa1, 0x46, 0x67, 0x18, 0x67, 0x83, 0x6e, 0x24, 0xa9, 0x2f, 0x0a, 0xd2, 0x32, 0xf6, 0x17, 0x73, 0x0f, 0x21, 0xf3, 0x26, 0xc2, 0x5d, 0x3e, 0xc0, 0xd9, 0x0f, 0x98, 0xa0, 0x25, 0x2c, 0xb5, 0x26, 0x43, 0xdf, 0x21, 0x9e, 0xf8, 0x3e, 0x2e, 0x9a, 0x10, 0x5c, 0xef, 0x6e, 0x35, 0xde, 0x54, 0xb4, 0x48, 0xd2, 0xc8, 0x96, 0xee, 0xe6, 0x92, 0xac, 0xb1, 0xc5, 0xeb, 0x82, 0xe1, 0x61, 0xf1, 0x7b, 0x01, 0x7f, 0x61, 0x74, 0xf7, 0x03, 0xc9, 0x55, 0xe2, 0xe4, 0x1d, 0xae, 0x7d, 0x27, 0x30, 0xc1, 0x57, 0xa7, 0x11, 0xec, 0x05, 0x57, 0x09, 0x4f, 0xec, 0x56, 0x9b, 0xf9, 0xee, 0x8e, 0x76, 0x93, 0xf1, 0xdb, 0xaf, 0x04, 0x85, 0xf0, 0xab, 0x31, 0xe3, 0x34, 0xb0, 0xe5, 0xad, 0xaf, 0x8c, 0xe2, 0x58, 0x4f, 0xec, 0xcc, 0x04, 0x2f, 0xc5, 0xec, 0x7e, 0x9f, 0xda, 0xe2, 0xb2, 0xba, 0x7f, 0xcd, 0x83, 0x88, 0x64, 0xd2, 0x82, 0x75, 0x73, 0xa9, 0x6a, 0x37, 0x4f, 0xe9, 0xef, 0xca, 0x4b, 0x1e, 0xad, 0xc7, 0xbc, 0xda, 0x0f, 0x6e, 0xc3, 0xaf, 0x76, 0x0f, 0x34, 0x34, 0x6b, 0x59, 0x78, 0x77, 0x33, 0x4e, 0xed, 0x5b, 0xb4, 0x75, 0x19, 0x4a, 0x65, 0xc8, 0x1f, 0x3c, 0xcf, 0x2e, 0x48, 0x81, 0xa3, 0xea, 0xb5, 0x01, 0xfd, 0x92, 0x02, 0x5f, 0x36, 0xb7, 0x29, 0x0a, 0x80, 0x44, 0x63, 0xa4, 0x53, 0x5f, 0x21, 0x56, 0xac, 0xb4, 0xee, 0x1e, 0xfc, 0x9e, 0xda, 0xa6, 0x32, 0x4c, 0x2c, 0x8b, 0x66, 0x81, 0x3d, 0x20, 0x10, 0xb7, 0x5c, 0x63, 0x5b, 0xde, 0x4d, 0x9a, 0xa3, 0x1c, 0xee, 0x8e, 0x2b, 0xe9, 0x02, 0x43, 0x8d, 0x94, 0xa8, 0x19, 0x0c, 0x02, 0x97, 0xc4, 0xa9, 0x34, 0x4d, 0x1d, 0x8f, 0x1c, 0xfa, 0x95, 0x68, 0x45, 0x21, 0x67, 0x1c, 0x26, 0xc9, 0xeb, 0xac, 0xb8, 0x53, 0xce, 0xe8, 0xf2, 0x8f, 0x08, 0xc1, 0xe2, 0x9a, 0x5d, 0xd5, 0xec, 0x75, 0x66, 0x5c, 0xa0, 0x9a, 0x64, 0xa0, 0x9d, 0x62, 0x38, 0xa5, 0xf6, 0x9c, 0x63, 0xf7, 0xff, 0x0b, 0xbb, 0x0d, 0x52, 0x43, 0xed, 0xef, 0xc5, 0x16, 0x01, 0x25, 0x68, 0x64, 0x8e, 0xbe, 0xa7, 0x23, 0xae, 0xdd, 0x86, 0xed, 0x01, 0xd6, 0x40, 0x86, 0x51, 0xbd, 0x9a, 0xfc, 0x85, 0x01, 0xb7, 0x13, 0x18, 0xe8, 0x95, 0x6c, 0x83, 0xe4, 0xab, 0x19, 0xce, 0x66, 0x1e, 0xe0, 0x68, 0x92, 0xb9, 0xd1, 0x45, 0x6c, 0x38, 0x8a, 0x19, 0x2a, 0xd2, 0x75, 0x9b, 0x04, 0x68, 0x4a, 0xeb, 0x4a, 0x94, 0x0e, 0x3e, 0xeb, 0x61, 0x94, 0xc3, 0x0b, 0x70, 0x26, 0x4e, 0x83, 0xea, 0x88, 0x30, 0xde, 0x4b, 0x4e, 0xbd, 0xb3, 0x89, 0xa0, 0x78, 0xbc, 0x77, 0x2c, 0xe5, 0x77, 0xf5, 0xe0, 0xf7, 0xf8, 0x23, 0x5c, 0x43, 0x2b, 0x7a, 0x82, 0x6d, 0xd6, 0x9b, 0x8e, 0xc7, 0x89, 0x79, 0xd0, 0xeb, 0x7d, 0x1f, 0xf8, 0xc2, 0x31, 0xd3, 0xf5, 0x63, 0x13, 0xe3, 0x79, 0xc8, 0x07, 0xde, 0x17, 0x8a, 0x2a, 0xa6, 0xd4, 0xbd, 0xb4, 0x40, 0xe7, 0x37, 0x69, 0x55, 0x50, 0xa6, 0xb7, 0x6f, 0x4e, 0x00, 0x8e, 0x62, 0x29, 0x3d, 0x10, 0xd2, 0x0b, 0xe4, 0xc8, 0x56, 0x99, 0xc3, 0x65, 0xc5, 0x49, 0x32, 0xe8, 0x8c, 0x40, 0x3d, 0x6b, 0xca, 0xe6, 0xb2, 0x6c, 0x18, 0x74, 0x1a, 0x49, 0xb5, 0xd0, 0x17, 0x2a, 0x78, 0xda, 0xbc, 0x4d, 0x56, 0x55, 0x13, 0xa3, 0xd9, 0xc3, 0xc7, 0x48, 0xab, 0x25, 0x82, 0x78, 0x92, 0xee, 0xc4, 0x01, 0x51, 0x8f, 0xc9, 0xc8, 0xe7, 0x38, 0x2f, 0x8a, 0x1c, 0x37, 0x2e, 0xe6, 0x96, 0x5e, 0x97, 0x39, 0x92, 0x6b, 0xac, 0xb7, 0x82, 0x94, 0x20, 0x47, 0x25, 0xe7, 0x61, 0xd7, 0x04, 0x32, 0x52, 0x6c, 0x46, 0x8a, 0x58, 0x29, 0xf0, 0x07, 0x52, 0xc2, 0x10, 0x39, 0x0e, 0xbc, 0x22, 0x1c, 0xbe, 0xdd, 0x3a, 0x1c, 0xa5, 0x2d, 0xa4, 0x0c, 0x7a, 0x66, 0x68, 0xb2, 0x48, 0x1b, 0xbd, 0x2f, 0x1e, 0x47, 0xc4, 0x0c, 0x09, 0x94, 0xa0, 0x80, 0xed, 0x30, 0xb5, 0x88, 0x40, 0x5d, 0x5c, 0xe9, 0x76, 0x6b, 0x68, 0x2b, 0x51, 0x6d, 0x76, 0xa5, 0x53, 0x16, 0x47, 0xf7, 0x30, 0xf1, 0xdb, 0x3b, 0xcd, 0xe7, 0x5a, 0xcb, 0xc0, 0x97, 0x54, 0x61, 0x6b, 0x36, 0x3a, 0x6f, 0xe8, 0xc0, 0x3a, 0xf9, 0xa4, 0x9a, 0x66, 0x29, 0x5e, 0x8f, 0xc5, 0x62, 0x15, 0xf6, 0xb1, 0x93, 0x20, 0x9a, 0x00, 0xa1, 0x13, 0xb7, 0x67, 0xa0, 0x25, 0x52, 0x23, 0xc4, 0xdd, 0xc1, 0x58, 0xfb, 0x5e, 0xff, 0x01, 0xa4, 0xed, 0x22, 0xac, 0x16, 0xf7, 0xc6, 0xed, 0x58, 0x7c, 0x15, 0x43, 0x30, 0xc5, 0x6c, 0x68, 0x98, 0xc0, 0x72, 0x8d, 0x37, 0xcb, 0x39, 0x7c, 0x5a, 0x89, 0xa8, 0x3e, 0xa2, 0x03, 0xff, 0x84, 0xf3, 0xdd, 0x64, 0xef, 0xc2, 0x44, 0x6e, 0xa3, 0x0b, 0x3c, 0x8a, 0xed, 0x64, 0x2c, 0xa1, 0xae, 0x1b, 0xeb, 0xc5, 0xa2, 0x7a, 0x01, 0xf8, 0x79, 0x07, 0x69, 0x03, 0x75, 0xc3, 0xfa, 0xb2, 0x8f, 0x78, 0xef, 0x64, 0xdb, 0xde, 0x73, 0x99, 0x13, 0x8d, 0x48, 0xd5, 0xab, 0x85, 0xa4, 0x30, 0x7b, 0x5f, 0x62, 0x83, 0x28, 0xd8, 0x47, 0x82, 0x3c, 0x52, 0x28, 0x77, 0x7e, 0x92, 0x82, 0x2a, 0x3e, 0xb7, 0x8b, 0x9f, 0x76, 0xc4, 0xa3, 0x42, 0x7c, 0x92, 0x3e, 0x84, 0x89, 0xe5, 0x6b, 0xc1, 0x04, 0x7a, 0x0e, 0x23, 0x86, 0xa3, 0x31, 0xeb, 0x64, 0x87, 0xea, 0xcf, 0xb9, 0x03, 0x7a, 0x3c, 0x27, 0x6d, 0x2c, 0xf7, 0x4d, 0xfb, 0xa4, 0x13, 0x9f, 0xd6, 0x84, 0x40, 0xcf, 0xc5, 0xc6, 0xcd, 0x80, 0x6e, 0xd7, 0x64, 0x7e, 0x78, 0x9f, 0x63, 0x0c, 0x0d, 0x69, 0x97, 0x2c, 0xe3, 0xba, 0x7f, 0xfa, 0xbf, 0xbd, 0x1d, 0xc4, 0x98, 0x34, 0xce, 0xaa, 0xdf, 0x57, 0xd1, 0xfe, 0xcc, 0x0b, 0x73, 0xa3, 0xd7, 0x2d, 0x8a, 0x1e, 0xfa, 0x25, 0x8b, 0x0a, 0x56, 0x45, 0xcb, 0xa0, 0xfd, 0x0e, 0xce, 0x84, 0x3f, 0xb3, 0x26, 0xe2, 0xd3, 0xb3, 0x04, 0x33, 0xe2, 0x9a, 0x16, 0xae, 0xde, 0x32, 0xec, 0x83, 0x3f, 0x77, 0x25, 0xf7, 0x6f, 0x23, 0x91, 0x06, 0xfe, 0xfb, 0xe7, 0x03, 0x72, 0xa6, 0xcd, 0x7e, 0xea, 0x9d, 0xc7, 0xe1, 0x40, 0xe6, 0xf2, 0x09, 0xa6, 0x91, 0x2f, 0xaf, 0xe0, 0x2c, 0x79, 0x11, 0xab, 0x80, 0xf1, 0x36, 0x42, 0x1e, 0xfb, 0xf5, 0xbf, 0x5f, 0xcd, 0x1d, 0xd6, 0xcc, 0x9a, 0xef, 0xcb, 0x63, 0xbf, 0xfa, 0xf7, 0xf9, 0xee, 0xde, 0xeb, 0x3c, 0x21, 0x46, 0xf5, 0x5a, 0xd2, 0x8c, 0x23, 0x3c, 0xf1, 0x17, 0x33, 0x45, 0x49, 0x5d, 0x0e, 0xb9, 0xa2, 0x7c, 0x2c, 0xda, 0x10, 0x41, 0xd8, 0x22, 0x71, 0xc5, 0x5f, 0x85, 0x83, 0x11, 0x6b, 0x0e, 0x37, 0x47, 0x3a, 0x94, 0xbc, 0xe0, 0x3f, 0x77, 0xbe, 0x8c, 0x9d, 0x91, 0x56, 0x83, 0x40, 0x0a, 0x6a, 0x4b, 0x13, 0xea, 0x92, 0xc1, 0xf5, 0xfb, 0xa2, 0xf1, 0xda, 0xfe, 0x0e, 0xd8, 0x2c, 0xdb, 0x53, 0x1b, 0xaf, 0xc6, 0x1a, 0xa9, 0xc8, 0x0e, 0x69, 0x36, 0xa7, 0x05, 0xbc, 0xb6, 0xa9, 0x3c, 0x50, 0x3c, 0x32, 0xef, 0x8b, 0xb5, 0x05, 0x4a, 0x89, 0x38, 0x18, 0xfd, 0x6e, 0x94, 0x0e, 0x4b, 0xf4, 0x9b, 0x81, 0xf4, 0x31, 0x31, 0xa3, 0x81, 0xaa, 0x24, 0x95, 0x51, 0x42, 0x08, 0x72, 0x9c, 0x21, 0xe2, 0x8a, 0x34, 0x9d, 0xa7, 0x0c, 0x7b, 0x4a, 0xdd, 0xc4, 0x0a, 0x5f, 0x9d, 0xbc, 0x7b, 0x77, 0xf8, 0xaa, 0x1b, 0x72, 0xb3, 0x3d, 0x1f, 0x9d, 0xaa, 0x1f, 0xb4, 0xd1, 0xa3, 0xcf, 0x13, 0x44, 0xba, 0xc4, 0x5c, 0xf8, 0xfb, 0xd4, 0x63, 0x27, 0x15, 0xb4, 0x54, 0xfe, 0x25, 0xab, 0x24, 0x82, 0xa4, 0x29, 0x14, 0x10, 0x29, 0xba, 0x0a, 0xe8, 0x61, 0xea, 0xa1, 0xaf, 0x70, 0x07, 0xab, 0x9a, 0x9a, 0x36, 0x91, 0x22, 0x4a, 0x46, 0xa6, 0xcc, 0x82, 0x12, 0x9f, 0x67, 0xb3, 0x1d, 0xc9, 0x2b, 0xd6, 0x6f, 0xf7, 0xd1, 0x32, 0x43, 0x6f, 0xa1, 0x76, 0x63, 0x58, 0x5e, 0x70, 0x47, 0xcf, 0x45, 0x5a, 0x7d, 0x44, 0x50, 0xd8, 0xab, 0xe2, 0xa0, 0x3a, 0x3e, 0x42, 0x01, 0x9e, 0xcd, 0x62, 0xe5, 0xe1, 0xe4, 0xbb, 0xf6, 0x93, 0xd6, 0x65, 0x32, 0xd2, 0x02, 0xef, 0x40, 0xcb, 0xeb, 0xf0, 0x7a, 0x91, 0xdd, 0xe0, 0x33, 0x8c, 0x89, 0x81, 0x32, 0xef, 0x10, 0x56, 0x9f, 0xa1, 0x9c, 0xd9, 0x37, 0x7f, 0x27, 0xe5, 0xe5, 0x38, 0xaa, 0x05, 0xc3, 0xd6, 0x13, 0x38, 0x2e, 0x3a, 0x41, 0x71, 0x69, 0x46, 0xb0, 0x57, 0xdf, 0x08, 0xbc, 0x5d, 0x27, 0x2c, 0x15, 0x34, 0xde, 0x91, 0xba, 0x15, 0x8b, 0x79, 0x47, 0x0e, 0x82, 0x3e, 0x88, 0x10, 0x87, 0x53, 0x45, 0x7e, 0xe8, 0xba, 0x35, 0x84, 0x9e, 0x6e, 0xda, 0x13, 0x3f, 0x1b, 0x03, 0xaf, 0x9a, 0xee, 0x0a, 0x3e, 0x61, 0x98, 0xd8, 0x93, 0x2e, 0xf6, 0x2a, 0x61, 0x86, 0x92, 0xab, 0x11, 0x78, 0x64, 0x97, 0x94, 0x84, 0x8e, 0x87, 0xe9, 0xb2, 0x06, 0x6a, 0x2e, 0x18, 0x2a, 0xd5, 0x67, 0x0d, 0xb4, 0x07, 0x39, 0xf5, 0xe4, 0x99, 0x21, 0xcb, 0x4c, 0xf7, 0x5e, 0xf1, 0x45, 0xd8, 0x97, 0x2f, 0x17, 0xd8, 0xfc, 0xb9, 0x5c, 0x35, 0x41, 0x38, 0x0e, 0x48, 0x4b, 0x5c, 0x66, 0xff, 0xe5, 0x30, 0x6c, 0x4a, 0x94, 0xce, 0xfc, 0x33, 0x25, 0x06, 0x4e, 0x66, 0x7f, 0xdd, 0x98, 0xfb, 0x1f, 0xf7, 0xcf, 0x5a, 0x1c, 0x29, 0x2d, 0x6f, 0x88, 0x59, 0x35, 0xb4, 0x63, 0x8e, 0x54, 0x77, 0xc8, 0xaf, 0xd0, 0xa5, 0x05, 0xfb, 0x8a, 0xb2, 0x88, 0x75, 0x80, 0x1a, 0x84, 0xf6, 0xd7, 0xe1, 0x7e, 0xc6, 0xca, 0x81, 0xe7, 0x29, 0xeb, 0x13, 0x4a, 0x1f, 0x19, 0xbe, 0x91, 0x1f, 0xfa, 0xf5, 0x25, 0xd3, 0xfa, 0x36, 0xf3, 0x4e, 0x34, 0xda, 0xe7, 0x3e, 0xc5, 0x0c, 0xa2, 0x7d, 0xdb, 0x5b, 0xdf, 0x7e, 0xf8, 0x67, 0x03, 0xd8, 0xb9, 0x87, 0x49, 0x5d, 0x07, 0xa9, 0xe8, 0x30, 0x15, 0xbb, 0x32, 0x98, 0x18, 0x6e, 0x90, 0x2e, 0xea, 0x49, 0xe4, 0xb5, 0x32, 0xd8, 0x95, 0x13, 0xf9, 0x62, 0x38, 0x12, 0xf6, 0x8e, 0xc1, 0x3b, 0x4a, 0x20, 0xe7, 0x61, 0x22, 0xf9, 0x5e, 0x11, 0xdc, 0xaa, 0xc6, 0xec, 0x66, 0x2b, 0xd9, 0x62, 0xac, 0x07, 0x6e, 0x5c, 0xa4, 0x34, 0x31, 0xf9, 0x27, 0xd5, 0x15, 0xaa, 0x00, 0x6b, 0x29, 0x2b, 0xf4, 0x95, 0xd6, 0x26, 0x3c, 0x44, 0x2a, 0x05, 0x5b, 0xd2, 0x2d, 0xe9, 0x6a, 0x6d, 0x54, 0xb8, 0x0b, 0xeb, 0x92, 0xd1, 0x1d, 0x79, 0xd2, 0x53, 0xbf, 0xfa, 0xb5, 0x78, 0x78, 0x26, 0x75, 0xfb, 0x60, 0xd6, 0xa6, 0x51, 0x73, 0x9a, 0xae, 0x60, 0x36, 0xf7, 0x66, 0x52, 0x77, 0x53, 0xa9, 0x3d, 0xaf, 0x44, 0x24, 0x97, 0x9a, 0x46, 0xfb, 0xbf, 0x30, 0x93, 0xda, 0x4f, 0xa4, 0x4e, 0x29, 0x8d, 0x3a, 0x92, 0x45, 0x2d, 0x1b, 0x2d, 0x59, 0x8f, 0xd2, 0x43, 0x6e, 0x5d, 0x26, 0xb5, 0x9f, 0x4a, 0xbd, 0x2e, 0x97, 0x9a, 0x6a, 0x8b, 0xd7, 0x64, 0x52, 0xff, 0xb2, 0x44, 0xea, 0xbe, 0x4c, 0xea, 0x9f, 0x9f, 0x4a, 0xfd, 0xeb, 0x66, 0x52, 0xff, 0x9a, 0x39, 0xbd, 0x74, 0x7b, 0x70, 0x22, 0xf9, 0x54, 0x6a, 0x54, 0x5e, 0xdc, 0x87, 0x2e, 0xda, 0x4e, 0x03, 0xf1, 0x82, 0xb5, 0x32, 0x0c, 0x6b, 0x34, 0x9e, 0xe2, 0x5e, 0x04, 0x3a, 0x8f, 0xd0, 0x4a, 0x24, 0x8f, 0xcc, 0x8f, 0xa6, 0x3e, 0x8a, 0xdd, 0xf4, 0xba, 0x9e, 0x0f, 0x69, 0x06, 0x28, 0x1d, 0x0d, 0xac, 0x44, 0xc7, 0x67, 0x3a, 0xcf, 0xfd, 0xfa, 0x2c, 0xa7, 0x99, 0xd7, 0x7b, 0x8f, 0x9c, 0xad, 0x2e, 0x7f, 0x59, 0xa1, 0xac, 0x31, 0x66, 0xb7, 0x4b, 0x1d, 0xc7, 0x58, 0xb8, 0x8c, 0x42, 0x55, 0xf0, 0x6b, 0xe4, 0x25, 0xcd, 0x6c, 0x7f, 0x35, 0x1b, 0x92, 0xb0, 0xdd, 0x52, 0x83, 0x1a, 0x15, 0xaa, 0x62, 0xf6, 0xd7, 0x41, 0x32, 0x04, 0xd5, 0x28, 0xca, 0xb4, 0x6b, 0xba, 0x85, 0x7b, 0xa3, 0x47, 0x5c, 0xe8, 0xaa, 0x21, 0x1d, 0x99, 0x67, 0x00, 0x4e, 0x43, 0xdf, 0x67, 0x70, 0x60, 0x97, 0xc9, 0xc5, 0xed, 0x8b, 0xf4, 0x9d, 0x51, 0x72, 0x06, 0xf5, 0xd1, 0x28, 0xeb, 0x66, 0x46, 0x32, 0xb8, 0xfc, 0x2e, 0x36, 0x5c, 0x1b, 0x8f, 0xd2, 0xd0, 0xcf, 0xfb, 0xb3, 0xe3, 0x30, 0xca, 0x4b, 0xd1, 0x83, 0x83, 0x9d, 0x1d, 0xca, 0x33, 0xba, 0x4a, 0x6f, 0x6f, 0x47, 0x75, 0xb6, 0x33, 0x2b, 0xa7, 0xf5, 0x0e, 0x4e, 0x50, 0xbf, 0x7c, 0xd5, 0x2c, 0xe6, 0x9f, 0xfc, 0x1a, 0x98, 0x13, 0x85, 0x64, 0x7b, 0x88, 0x82, 0xe7, 0x3f, 0xfa, 0x29, 0x28, 0xcb, 0xa6, 0x72, 0xbd, 0xe0, 0x3c, 0xad, 0xb5, 0x33, 0xb1, 0x0f, 0x7f, 0x8a, 0x99, 0x50, 0x89, 0x71, 0x94, 0x27, 0xb4, 0xe6, 0x40, 0x8f, 0x7d, 0x8a, 0xef, 0x5f, 0xef, 0xf5, 0x7d, 0x96, 0x7a, 0x20, 0xd2, 0x13, 0xbf, 0xe2, 0x87, 0xdf, 0x5b, 0x07, 0x0d, 0x97, 0x63, 0xbf, 0xc0, 0x7f, 0x0f, 0x74, 0x87, 0xd7, 0x35, 0x57, 0x6a, 0x35, 0xcc, 0x6a, 0xb5, 0x0d, 0xd6, 0xbe, 0xce, 0x9a, 0xed, 0xb9, 0x16, 0xef, 0xa0, 0x17, 0xd0, 0x80, 0xd1, 0x6c, 0x04, 0xd1, 0x96, 0xc0, 0xc6, 0x87, 0x8a, 0x88, 0xc5, 0xe8, 0x0f, 0x0c, 0xc8, 0x81, 0x8f, 0x1b, 0x03, 0x5d, 0x00, 0x62, 0xde, 0xf5, 0xb0, 0x5e, 0x6a, 0xec, 0x10, 0xc1, 0xc2, 0x60, 0xdb, 0xf3, 0x2e, 0xd6, 0x09, 0xd3, 0x5c, 0xac, 0xb9, 0xe1, 0x46, 0x11, 0x67, 0x4e, 0xcf, 0xca, 0x49, 0xf2, 0x12, 0x9f, 0xf2, 0x51, 0x54, 0x26, 0xd6, 0x77, 0x14, 0x83, 0x06, 0x17, 0xd5, 0xc7, 0xcb, 0x05, 0xf4, 0xae, 0xf8, 0x41, 0xb2, 0x31, 0x7c, 0x9f, 0x1c, 0x6c, 0x04, 0x5b, 0x74, 0x52, 0x48, 0xcb, 0x03, 0xf2, 0xf2, 0x54, 0x54, 0xc3, 0x4b, 0x3d, 0x54, 0x7c, 0x69, 0x7c, 0x05, 0xac, 0x15, 0xa7, 0x42, 0x5b, 0xb8, 0xf0, 0xcb, 0x20, 0xf0, 0x44, 0xf3, 0x94, 0x12, 0x2c, 0xed, 0xf1, 0x01, 0xf6, 0x09, 0x57, 0x85, 0x43, 0xff, 0x25, 0x9d, 0x81, 0xf1, 0xcb, 0x25, 0x98, 0x8f, 0x08, 0xde, 0x34, 0x74, 0x39, 0xd8, 0xe6, 0xb8, 0x34, 0xe2, 0xb2, 0xac, 0xeb, 0x7c, 0x02, 0x90, 0xcf, 0xac, 0x21, 0xbd, 0xa6, 0xce, 0x38, 0x0f, 0x87, 0x7b, 0x0c, 0x62, 0x2f, 0x3d, 0x40, 0xb8, 0x3a, 0x44, 0x05, 0xe2, 0x95, 0x72, 0x43, 0x2a, 0xe7, 0x52, 0x31, 0xb3, 0x63, 0xd6, 0x76, 0x9d, 0x63, 0x78, 0x26, 0xb8, 0x34, 0x99, 0x54, 0x79, 0x76, 0x91, 0x2c, 0x4a, 0xde, 0x7a, 0x52, 0x36, 0x82, 0x24, 0x0f, 0x80, 0x0a, 0xa0, 0x4d, 0x2e, 0x72, 0x34, 0x6b, 0x60, 0xae, 0x51, 0xe2, 0x2e, 0x65, 0xcd, 0xb9, 0xac, 0xe0, 0x2a, 0x43, 0xb4, 0xfc, 0x3a, 0x93, 0x63, 0x4d, 0x15, 0x51, 0xb9, 0x27, 0x9b, 0xb1, 0xb2, 0xd0, 0xb4, 0x94, 0x27, 0x4f, 0x68, 0x26, 0x16, 0x5a, 0x01, 0x5f, 0x4c, 0xb4, 0xcb, 0x74, 0xda, 0xaa, 0x3a, 0x1e, 0x7d, 0x32, 0x1e, 0xef, 0x79, 0x5e, 0x7f, 0x46, 0x06, 0x79, 0xbb, 0xd3, 0x4d, 0x7f, 0x3e, 0x75, 0x3b, 0xa9, 0x56, 0xf4, 0xfe, 0xfb, 0x32, 0xa9, 0x2f, 0x80, 0x09, 0xfd, 0xae, 0x2b, 0xd9, 0x23, 0x29, 0xc9, 0x48, 0xbd, 0xe2, 0x4c, 0x27, 0xbb, 0xba, 0x86, 0x0a, 0xa3, 0x09, 0x5f, 0xc2, 0x0f, 0x86, 0xbe, 0x0f, 0x7a, 0xeb, 0xba, 0x44, 0xeb, 0xfe, 0xd4, 0x6a, 0x2f, 0xb3, 0x9a, 0x4a, 0x09, 0xd8, 0x2f, 0x9c, 0x62, 0x06, 0x61, 0x27, 0x41, 0x60, 0xe8, 0x72, 0x56, 0xb5, 0x26, 0x55, 0xfb, 0x39, 0xd5, 0x46, 0xcf, 0xf1, 0xe2, 0xd3, 0x0e, 0xf4, 0x0e, 0x4e, 0xc5, 0x78, 0x64, 0x94, 0x6e, 0x28, 0xc1, 0x9f, 0x3f, 0x0b, 0x9a, 0x98, 0x31, 0x2f, 0x57, 0xc6, 0xa9, 0x83, 0x19, 0x1a, 0x4f, 0xad, 0xde, 0xe0, 0xbe, 0xc5, 0x3b, 0xea, 0x3e, 0xd5, 0x17, 0x7b, 0x62, 0xa8, 0x90, 0x48, 0x91, 0xe1, 0xbb, 0xf1, 0x38, 0x4c, 0xae, 0x2e, 0x8c, 0x42, 0x5e, 0x5e, 0x16, 0xf9, 0xdf, 0xa4, 0xb9, 0x4c, 0x37, 0x2d, 0xb2, 0x95, 0xdc, 0x2e, 0xe9, 0x91, 0x09, 0x01, 0xaf, 0x52, 0x72, 0x40, 0xc8, 0xdf, 0x04, 0xc4, 0x0a, 0x62, 0x87, 0xb2, 0x94, 0x08, 0x7d, 0x47, 0xb6, 0x92, 0x9b, 0xc6, 0x73, 0x0f, 0x91, 0x56, 0xa0, 0x5f, 0xd1, 0x3e, 0x3e, 0x0b, 0x95, 0x27, 0xec, 0x81, 0xc0, 0x66, 0xfc, 0x37, 0x48, 0x46, 0x6f, 0x3b, 0x0c, 0x3d, 0xec, 0x98, 0xec, 0x96, 0x39, 0x68, 0x1c, 0x9c, 0x4b, 0x70, 0x15, 0xb3, 0x98, 0x78, 0xb1, 0xee, 0x77, 0xea, 0x1e, 0xf0, 0x10, 0x7c, 0xae, 0x5a, 0x58, 0x6b, 0x20, 0x5e, 0x22, 0xe0, 0x5c, 0x76, 0xf4, 0x07, 0xa0, 0x72, 0xc1, 0x75, 0xad, 0xa0, 0xca, 0x32, 0x65, 0x6a, 0x34, 0xc0, 0x0d, 0x2c, 0x33, 0x86, 0xd2, 0xb2, 0x35, 0x24, 0xa2, 0x97, 0xe3, 0xc2, 0x46, 0x7b, 0xe0, 0x2d, 0xd1, 0xaa, 0x02, 0x16, 0xe7, 0x44, 0x8b, 0x0a, 0x1b, 0xde, 0x5b, 0xbc, 0x8d, 0xce, 0x4a, 0x54, 0x8e, 0x63, 0x21, 0x7d, 0x60, 0xbe, 0x52, 0x75, 0xa1, 0xd2, 0x44, 0x97, 0xb4, 0x1c, 0xc0, 0xb5, 0x9d, 0x22, 0xa7, 0x45, 0x88, 0x5f, 0xdb, 0xb6, 0x6d, 0x6a, 0xcb, 0x30, 0x06, 0x4f, 0x0c, 0x48, 0x4b, 0x20, 0x35, 0x48, 0x0d, 0x58, 0x19, 0x3b, 0x04, 0xd0, 0x97, 0x5c, 0x90, 0x62, 0xcf, 0x64, 0x00, 0xee, 0xc3, 0x2c, 0x57, 0xbc, 0x53, 0xc3, 0xa5, 0x72, 0xd9, 0xee, 0x62, 0xef, 0x64, 0x90, 0x9e, 0x76, 0xe7, 0xff, 0x33, 0x6a, 0x18, 0x3c, 0x49, 0x01, 0xb1, 0x13, 0xca, 0x09, 0x0a, 0x8d, 0xc1, 0x0f, 0xc1, 0xb9, 0x3f, 0x37, 0xa9, 0xed, 0xbc, 0x40, 0x6f, 0x75, 0x93, 0x51, 0x63, 0x37, 0x69, 0xe0, 0x75, 0x1a, 0x6a, 0x71, 0x10, 0xe5, 0x8f, 0x9c, 0x3c, 0x8d, 0x9e, 0x4f, 0x3d, 0x08, 0x25, 0x19, 0xaa, 0x91, 0x67, 0x99, 0xa0, 0x0b, 0xfd, 0xde, 0x35, 0x3e, 0xf8, 0xd4, 0x06, 0xd8, 0x9e, 0xe1, 0xcd, 0x2f, 0x3c, 0x79, 0xfc, 0xc7, 0x87, 0x94, 0x74, 0xd1, 0x55, 0x4b, 0xf0, 0x6a, 0x1b, 0xc1, 0x2f, 0xc2, 0xf4, 0xe2, 0x17, 0x86, 0xba, 0x2c, 0x52, 0x58, 0x4f, 0xd9, 0x1b, 0xb2, 0xc1, 0xf0, 0x72, 0x0f, 0x83, 0x13, 0x8c, 0x48, 0x85, 0x86, 0x37, 0xfc, 0x7c, 0x92, 0x35, 0x37, 0x59, 0x26, 0x56, 0xae, 0x6e, 0xa3, 0xc7, 0x03, 0x2c, 0x3f, 0xec, 0xcd, 0xf1, 0x18, 0x08, 0x26, 0x2f, 0x38, 0x0a, 0x63, 0x90, 0x5a, 0x67, 0x80, 0x06, 0x32, 0x83, 0xeb, 0x17, 0xeb, 0x64, 0xe2, 0xc2, 0xb2, 0xfc, 0x7d, 0xec, 0x8b, 0x97, 0x7f, 0xda, 0xaa, 0x35, 0xd1, 0x54, 0x1d, 0x79, 0xd0, 0xf7, 0x6b, 0xdb, 0x6b, 0x2c, 0xd7, 0x36, 0xe6, 0xf1, 0x6b, 0xb3, 0x39, 0x3d, 0x7c, 0x4f, 0xcf, 0x1a, 0x74, 0x5a, 0xec, 0xb8, 0x78, 0x67, 0x34, 0x1c, 0xda, 0xc7, 0x65, 0xd8, 0x7d, 0x21, 0xbf, 0x4d, 0x97, 0xe6, 0x67, 0x88, 0x83, 0x11, 0x1c, 0xe6, 0x2c, 0x8b, 0xc5, 0xe2, 0x3b, 0x9b, 0xdf, 0x09, 0x04, 0xd3, 0xf9, 0x84, 0x10, 0xb9, 0xd6, 0x38, 0x8b, 0x75, 0x77, 0xa8, 0x05, 0x74, 0x46, 0x3d, 0x32, 0x1a, 0x18, 0x96, 0x00, 0x83, 0x4f, 0x69, 0x02, 0xac, 0x56, 0xf0, 0xf9, 0x35, 0x21, 0xf2, 0x6e, 0x6b, 0x8d, 0x61, 0xe3, 0xe7, 0x73, 0x46, 0x62, 0xa3, 0x52, 0x9e, 0xee, 0xfc, 0x25, 0x6f, 0x4d, 0x1b, 0x7e, 0x71, 0xe2, 0x17, 0xbe, 0x87, 0x5d, 0xa6, 0x9e, 0x02, 0x81, 0x9b, 0x48, 0x70, 0x6b, 0xf4, 0x15, 0x41, 0x6f, 0x95, 0x0f, 0xd8, 0xce, 0x88, 0x7d, 0xd1, 0xb8, 0x58, 0xde, 0x42, 0xeb, 0xd6, 0x8a, 0xbf, 0x3d, 0x12, 0x8f, 0xda, 0x1a, 0xa3, 0x0d, 0xc6, 0xf8, 0xd5, 0xe9, 0x76, 0x72, 0xda, 0x01, 0x25, 0xa1, 0x72, 0x16, 0x08, 0x53, 0x9f, 0x11, 0x4b, 0x2b, 0x2a, 0x06, 0xe7, 0xeb, 0x07, 0xb0, 0x50, 0x48, 0x54, 0x0b, 0x43, 0x49, 0xe1, 0xce, 0x5f, 0x9d, 0x31, 0x75, 0xd6, 0xf2, 0x92, 0xc0, 0x68, 0x18, 0x9f, 0x42, 0x4c, 0x4a, 0xff, 0x96, 0x1a, 0x13, 0xba, 0x44, 0x91, 0x16, 0xf7, 0x7e, 0x11, 0x47, 0xb4, 0x42, 0x71, 0xcc, 0x83, 0xf4, 0x3e, 0x8e, 0x2a, 0x68, 0xaa, 0xb5, 0x87, 0xc4, 0x23, 0x5d, 0xd8, 0x6a, 0x96, 0x4b, 0x9d, 0xe6, 0x5d, 0x58, 0xc5, 0x65, 0x56, 0x84, 0x4d, 0x17, 0xe8, 0xa3, 0x10, 0xe4, 0x42, 0xd4, 0xb3, 0x51, 0x17, 0xf8, 0xd7, 0x73, 0x94, 0xcb, 0xe4, 0xfc, 0xc6, 0x66, 0x3d, 0xe0, 0x80, 0x64, 0xf2, 0x4f, 0xa8, 0x78, 0xec, 0x23, 0x78, 0xe2, 0x25, 0x82, 0x13, 0x0d, 0xc9, 0xb8, 0xe5, 0x1d, 0xb6, 0xc3, 0x3c, 0x58, 0xd7, 0x57, 0xfb, 0x86, 0x73, 0xec, 0x8f, 0x3e, 0x27, 0x13, 0xc5, 0x08, 0xeb, 0x08, 0x92, 0x28, 0xa7, 0x4c, 0x48, 0xb3, 0xc6, 0xce, 0x68, 0xa2, 0x85, 0x8f, 0x9c, 0xe2, 0x3f, 0xfc, 0xdf, 0xa0, 0xb4, 0xbf, 0xae, 0xc2, 0x98, 0xd5, 0x16, 0x11, 0xd4, 0x1b, 0xee, 0xbd, 0x8b, 0x3e, 0x10, 0x30, 0xde, 0x27, 0x79, 0x43, 0x80, 0xde, 0x6a, 0x43, 0xb6, 0x2f, 0x26, 0xde, 0xe0, 0xd6, 0x6c, 0x6f, 0x82, 0xa4, 0x16, 0x8e, 0x42, 0x18, 0x15, 0xfc, 0x7f, 0xe3, 0x5b, 0x3a, 0x00, 0x57, 0xb5, 0x50, 0x06, 0xc0, 0x57, 0x87, 0x6f, 0x4e, 0xce, 0x0e, 0xdb, 0x95, 0x6e, 0x0d, 0xf5, 0x1e, 0xa2, 0x00, 0x77, 0x77, 0x76, 0x04, 0xc8, 0xc5, 0x75, 0xd7, 0x78, 0x25, 0x2f, 0x72, 0x18, 0xfd, 0xc9, 0xe9, 0xf7, 0xaf, 0xed, 0xe4, 0x72, 0x62, 0x9a, 0x34, 0x29, 0xd7, 0x4e, 0x5e, 0xf6, 0xb9, 0x2b, 0xda, 0xa1, 0x04, 0x6c, 0x8f, 0xc0, 0x0e, 0x38, 0x78, 0xaf, 0xd3, 0xa3, 0xb4, 0x02, 0x4e, 0x06, 0xd1, 0x22, 0x6f, 0x82, 0x7f, 0xae, 0x6b, 0x14, 0x6d, 0xdb, 0x61, 0x03, 0xbd, 0x97, 0x44, 0x3f, 0x41, 0x1f, 0x89, 0x2d, 0x0a, 0xd0, 0x2b, 0xe0, 0x60, 0x8d, 0x12, 0xfb, 0x11, 0xf7, 0x15, 0x2e, 0xc2, 0x23, 0x37, 0x08, 0x7d, 0x25, 0xc6, 0xb0, 0xd1, 0xf6, 0x99, 0x9d, 0xff, 0x2c, 0xef, 0xe0, 0x70, 0xa1, 0x3e, 0xb5, 0xda, 0x76, 0x67, 0xc0, 0x20, 0x65, 0x12, 0xe2, 0xf0, 0xf7, 0x31, 0x12, 0x15, 0x36, 0x9f, 0xdd, 0xaa, 0xb7, 0x07, 0xde, 0x4c, 0xed, 0xb6, 0xc9, 0x84, 0x37, 0x7f, 0xbf, 0x99, 0x48, 0x11, 0x04, 0x31, 0x3c, 0xce, 0xf7, 0xe9, 0x69, 0xb7, 0xe7, 0xba, 0x2f, 0x6d, 0xdf, 0x97, 0xb3, 0xa4, 0x8b, 0xee, 0x69, 0x12, 0xe7, 0x02, 0x56, 0x92, 0xc8, 0x42, 0x7d, 0x10, 0x57, 0x0c, 0xb7, 0x48, 0xac, 0x43, 0xc4, 0xa9, 0x8e, 0x33, 0x10, 0x08, 0xe2, 0xd0, 0xb9, 0x57, 0xf9, 0x2d, 0x72, 0x94, 0xe1, 0x50, 0x90, 0x48, 0xc1, 0xf6, 0xc9, 0xfd, 0xce, 0x8d, 0x6e, 0xee, 0x8a, 0x06, 0x17, 0x95, 0x79, 0xca, 0xb4, 0xac, 0x62, 0x30, 0x0c, 0xdc, 0x6b, 0xc8, 0xa3, 0xdd, 0x9a, 0x50, 0x0a, 0x9e, 0x3f, 0x79, 0x0e, 0xe1, 0x4e, 0x79, 0x39, 0x86, 0xba, 0xf0, 0x8c, 0x80, 0xd3, 0x52, 0xcc, 0x90, 0xe7, 0x1c, 0x45, 0x36, 0x91, 0x71, 0xa4, 0x8b, 0xec, 0x24, 0x9b, 0x73, 0x17, 0xa4, 0xb1, 0x37, 0xc4, 0xda, 0x12, 0xbe, 0xfe, 0xa4, 0xf7, 0x11, 0x2b, 0x0d, 0xe6, 0x08, 0xd2, 0x8f, 0xae, 0xd6, 0x3e, 0xe9, 0xbb, 0x97, 0x03, 0xa7, 0xae, 0x0a, 0x1a, 0x06, 0xd3, 0x82, 0x45, 0xf3, 0x37, 0x7c, 0x3b, 0xab, 0xf2, 0xfa, 0x63, 0xb2, 0xf5, 0x6f, 0xdb, 0xb6, 0x03, 0x75, 0x24, 0xbd, 0x18, 0x1e, 0xe0, 0xbc, 0x58, 0x65, 0xad, 0xbe, 0xe4, 0x3a, 0xda, 0x05, 0x85, 0x27, 0x80, 0x82, 0x1a, 0xab, 0x12, 0x43, 0x77, 0xd8, 0x65, 0xd0, 0xd2, 0x44, 0x2a, 0xfc, 0x85, 0x08, 0x42, 0x91, 0x49, 0x27, 0x42, 0x80, 0xbf, 0xe2, 0x90, 0x55, 0xf5, 0x6b, 0x94, 0xbc, 0x2f, 0x28, 0x3b, 0x4d, 0x08, 0x53, 0x04, 0x49, 0x5e, 0x98, 0x85, 0x98, 0xb5, 0x1a, 0x51, 0x12, 0xe1, 0x52, 0x7f, 0x6d, 0x33, 0x27, 0xe1, 0xa2, 0x9d, 0xa8, 0x21, 0x5d, 0x6b, 0xed, 0xfa, 0x63, 0xf9, 0x5a, 0xf2, 0x26, 0xec, 0xff, 0xc5, 0xfd, 0x8b, 0x70, 0x17, 0xcc, 0x29, 0xd1, 0xd8, 0x88, 0x0b, 0x67, 0xf3, 0xf9, 0x90, 0x01, 0xa2, 0x01, 0x97, 0x0b, 0xed, 0x9f, 0x0b, 0x70, 0x29, 0xab, 0x4b, 0x4d, 0x23, 0x58, 0x46, 0x81, 0xe8, 0xa1, 0x3a, 0x62, 0x42, 0x63, 0x54, 0x24, 0x0b, 0xa9, 0x4f, 0xd2, 0x68, 0x13, 0xea, 0xcd, 0x9c, 0xbf, 0x84, 0x36, 0x87, 0x97, 0xd4, 0xd7, 0xb1, 0x27, 0x84, 0x5c, 0x9c, 0x5e, 0x5d, 0x56, 0x4b, 0xee, 0x1a, 0x16, 0x6b, 0x69, 0xe6, 0x9b, 0x56, 0xfc, 0xa8, 0x9e, 0x6e, 0x9d, 0x35, 0x3c, 0x19, 0x7e, 0xf7, 0xe8, 0x75, 0xab, 0x03, 0x31, 0xb6, 0x02, 0xc6, 0x61, 0x7c, 0x38, 0xd7, 0xff, 0x18, 0x17, 0xd6, 0x09, 0x16, 0x3b, 0x94, 0xb3, 0x40, 0x26, 0x8a, 0xeb, 0x4b, 0xbf, 0x8b, 0x0f, 0x27, 0xa3, 0xb0, 0x2a, 0xcb, 0x63, 0xe8, 0xc0, 0x44, 0x2a, 0xda, 0x1f, 0x1b, 0xc4, 0x70, 0x99, 0x55, 0xf6, 0x33, 0x61, 0xe6, 0xe0, 0xd5, 0xa2, 0x9c, 0xa1, 0xd0, 0x29, 0xbb, 0x7f, 0x2f, 0xf0, 0xa4, 0xbb, 0x38, 0x52, 0x23, 0x56, 0x5b, 0xb8, 0x48, 0xb3, 0x38, 0x1a, 0x67, 0x82, 0xb8, 0x3a, 0xef, 0x4c, 0x7c, 0x38, 0xb7, 0x54, 0xed, 0xe2, 0x27, 0x6f, 0xfa, 0x4b, 0x28, 0x92, 0x72, 0xda, 0x78, 0x2b, 0xc0, 0x03, 0xf1, 0xe1, 0x98, 0xf3, 0x46, 0x56, 0x86, 0xaa, 0x21, 0x32, 0x39, 0xd7, 0xaf, 0x8c, 0x1f, 0x0c, 0x0e, 0xd9, 0xfc, 0xd0, 0xe1, 0x6a, 0xb6, 0x4e, 0xb8, 0x7f, 0x65, 0xb1, 0x13, 0xa6, 0x19, 0x74, 0x0f, 0x98, 0x1b, 0x09, 0x11, 0xde, 0x2f, 0x1e, 0x1f, 0xc6, 0x87, 0xb3, 0x27, 0x2c, 0x40, 0xbe, 0x6b, 0x0e, 0x58, 0xbe, 0x12, 0xec, 0xc2, 0xdc, 0xb0, 0x48, 0xa3, 0x02, 0x4f, 0xb3, 0x0f, 0xdc, 0x4e, 0x33, 0xad, 0x2e, 0xb3, 0xe6, 0xc3, 0xfa, 0x0d, 0x99, 0x4b, 0xa1, 0xfe, 0xdd, 0x82, 0xda, 0xf0, 0x5a, 0x66, 0x21, 0xd8, 0x99, 0xa9, 0x14, 0xae, 0x1b, 0x0d, 0x90, 0x7e, 0xcf, 0x06, 0x4f, 0x0f, 0xd9, 0xbb, 0xef, 0x25, 0x8a, 0xd2, 0x62, 0xe4, 0x69, 0x5e, 0x28, 0x3e, 0x8a, 0xf0, 0x18, 0x6f, 0x8a, 0x49, 0x0c, 0xd4, 0x67, 0x5d, 0x3c, 0x6b, 0xf1, 0x11, 0x75, 0x47, 0x56, 0x4b, 0xf8, 0x10, 0x69, 0x7c, 0xe0, 0xd3, 0x31, 0x3f, 0xae, 0xc7, 0xcd, 0x6b, 0x92, 0xc2, 0x3a, 0xdb, 0xad, 0xd1, 0x3f, 0xe9, 0x24, 0x44, 0x2c, 0xf2, 0x24, 0xa6, 0x7e, 0xd0, 0xde, 0xc8, 0xee, 0xec, 0x96, 0x37, 0x33, 0x8b, 0x91, 0x62, 0xfe, 0xaa, 0xdf, 0x55, 0xd9, 0x4f, 0xc0, 0xf8, 0xda, 0x0e, 0x15, 0x59, 0x3d, 0x3c, 0xd8, 0x85, 0xa2, 0xfb, 0xf6, 0x7e, 0xba, 0x68, 0x42, 0x05, 0x29, 0xf8, 0x78, 0x95, 0x71, 0x32, 0x28, 0x6d, 0xaf, 0x1c, 0x46, 0xff, 0xd6, 0xc8, 0xd3, 0x6e, 0x8a, 0xcc, 0xdd, 0xfd, 0xd6, 0xed, 0xe1, 0x16, 0xf5, 0xb3, 0x3b, 0xf9, 0x6a, 0xe7, 0x3a, 0xcc, 0x32, 0x78, 0x6d, 0x85, 0x10, 0x90, 0xc5, 0xc4, 0x03, 0x29, 0xd7, 0x5b, 0x47, 0x46, 0xbd, 0x7b, 0x5c, 0x2d, 0xee, 0xb9, 0xe2, 0xe6, 0x01, 0xb7, 0x2a, 0x86, 0x78, 0xb0, 0xab, 0x0a, 0xee, 0xa5, 0x5c, 0xe2, 0x9e, 0x9d, 0xef, 0x9b, 0x41, 0x8b, 0x06, 0xd7, 0xcd, 0xc4, 0xa7, 0x3e, 0x7f, 0x32, 0x6e, 0x6b, 0x8d, 0xae, 0xd7, 0xe0, 0x0f, 0x3b, 0xb3, 0xf8, 0x70, 0x96, 0x3c, 0xf5, 0x3d, 0xd9, 0x9e, 0x81, 0xe7, 0xdc, 0xe4, 0x2e, 0x09, 0xc6, 0xae, 0x0c, 0x69, 0x43, 0xaf, 0xf7, 0xcf, 0x62, 0x0f, 0x30, 0xe0, 0xe7, 0x85, 0x6f, 0xb2, 0xe3, 0x8b, 0x46, 0xf2, 0xae, 0xa9, 0xef, 0xf0, 0x42, 0xda, 0xf6, 0xc0, 0xb9, 0xd5, 0x26, 0x05, 0x66, 0x29, 0x4b, 0x8d, 0xb2, 0x37, 0xa9, 0xc9, 0x8e, 0x68, 0xb1, 0x84, 0x44, 0x36, 0x43, 0xfb, 0x82, 0x30, 0x99, 0x9c, 0x3f, 0xc9, 0xa9, 0x4c, 0xb4, 0xa9, 0x14, 0x5a, 0x14, 0x25, 0x44, 0x1b, 0x79, 0xd6, 0x99, 0x98, 0x11, 0xfa, 0x78, 0xc2, 0x1d, 0x11, 0xc2, 0x06, 0xa6, 0x9d, 0xac, 0x32, 0xa8, 0x1f, 0x1d, 0x28, 0xe1, 0xec, 0x72, 0xe6, 0x77, 0x03, 0xf6, 0x96, 0x5f, 0x0d, 0x78, 0x0b, 0x2e, 0xcd, 0xe2, 0xe9, 0x8f, 0x68, 0xe5, 0x44, 0xa2, 0x96, 0x26, 0x95, 0xee, 0x6f, 0x27, 0x67, 0x12, 0xfb, 0x84, 0x4e, 0x77, 0x67, 0xee, 0x3d, 0x0f, 0xb0, 0x95, 0x8f, 0x8c, 0x30, 0xe4, 0x4c, 0x79, 0x28, 0x48, 0x40, 0x1b, 0x8f, 0x45, 0x92, 0xb7, 0x25, 0x62, 0xca, 0xee, 0xb2, 0x9d, 0xbd, 0xd1, 0xde, 0x80, 0xbb, 0xc2, 0x56, 0xa2, 0x2c, 0x6a, 0x3e, 0x1c, 0x0c, 0xd5, 0xd4, 0xc2, 0x1c, 0xe3, 0xd3, 0x5d, 0x47, 0xc4, 0x19, 0x3e, 0x5c, 0x87, 0x6e, 0x63, 0xf2, 0x3d, 0x3b, 0x8b, 0xe6, 0x26, 0xbd, 0x0b, 0xd5, 0xf4, 0xdd, 0xe1, 0xe3, 0xe7, 0xcf, 0x5b, 0xf2, 0xbc, 0xf6, 0x30, 0xa2, 0x9f, 0xec, 0xee, 0xd2, 0xda, 0x82, 0x42, 0x61, 0xf3, 0x8b, 0xe1, 0x73, 0x7a, 0xb1, 0xfd, 0x5a, 0x9d, 0x99, 0x23, 0x98, 0xf5, 0xbf, 0x37, 0xc4, 0x6f, 0x22, 0x9f, 0x23, 0x87, 0x4b, 0xef, 0x5b, 0xcf, 0xf1, 0xb9, 0xc8, 0x5b, 0xf4, 0x30, 0xef, 0x63, 0x79, 0x71, 0x01, 0x57, 0x17, 0x9e, 0x54, 0xc8, 0x97, 0x9b, 0xb4, 0x9a, 0x85, 0xcb, 0xdd, 0x1d, 0x0c, 0xf7, 0xfa, 0x96, 0x4b, 0xe1, 0x66, 0xca, 0x0a, 0xc3, 0x79, 0xc2, 0x92, 0x34, 0x66, 0x04, 0x57, 0xcd, 0x74, 0x07, 0xda, 0x33, 0x33, 0xda, 0x7b, 0xfe, 0x7c, 0x80, 0x99, 0x3d, 0x79, 0xfe, 0xbc, 0xb7, 0x4a, 0xda, 0xfb, 0xcc, 0x4d, 0xe9, 0xfc, 0x53, 0x78, 0xdd, 0x11, 0x4d, 0x0d, 0x6b, 0x25, 0xfe, 0x1d, 0xfc, 0x26, 0xf9, 0x22, 0x79, 0x77, 0x72, 0x7e, 0xe8, 0xb9, 0x6e, 0xe8, 0x7e, 0x71, 0x4c, 0xd1, 0x83, 0xa0, 0xa5, 0x20, 0xed, 0x92, 0xfa, 0x14, 0x91, 0x69, 0x6c, 0x4c, 0xad, 0xd0, 0xda, 0xa4, 0x0a, 0x0e, 0x75, 0x1a, 0xfe, 0x26, 0x4c, 0x99, 0x20, 0x17, 0xf6, 0x65, 0xde, 0xf8, 0x88, 0x40, 0x5b, 0xe6, 0xb0, 0xb7, 0xc9, 0x05, 0xc2, 0x99, 0x5f, 0x12, 0x6d, 0xd9, 0xac, 0x51, 0xf2, 0xc0, 0xd9, 0xa1, 0xf8, 0x47, 0xb9, 0xdc, 0x0c, 0xaa, 0x0e, 0xb2, 0x39, 0xfc, 0x06, 0x22, 0x09, 0xf9, 0x85, 0x21, 0x3d, 0x29, 0xd7, 0x85, 0x0c, 0x5a, 0xee, 0x81, 0x9c, 0x12, 0x60, 0xa2, 0xff, 0xf1, 0x48, 0xc0, 0x85, 0xfc, 0x5d, 0x94, 0xa9, 0xa1, 0xe5, 0x4a, 0x18, 0xc6, 0x47, 0xe2, 0xdd, 0xac, 0x9d, 0x4f, 0xd4, 0xba, 0xef, 0x0a, 0x9c, 0x43, 0x00, 0x75, 0xc7, 0x5e, 0xfe, 0x59, 0xb6, 0xd4, 0x3c, 0xcb, 0xa2, 0x3d, 0x8e, 0xa1, 0xe5, 0x8b, 0xfc, 0x72, 0x55, 0xc5, 0x73, 0x12, 0xa9, 0x1f, 0x96, 0xa4, 0x42, 0x28, 0x22, 0x7a, 0x7a, 0x93, 0x56, 0x99, 0x36, 0xf0, 0x2a, 0xee, 0xec, 0xdd, 0x56, 0x33, 0x59, 0x8b, 0x64, 0x00, 0x57, 0x1f, 0x98, 0xda, 0xa8, 0x6b, 0x32, 0x7a, 0x0c, 0x9c, 0x08, 0x92, 0xc2, 0x23, 0xb0, 0xec, 0x69, 0xe3, 0xca, 0x94, 0xc4, 0xc3, 0x88, 0xc3, 0xbe, 0xa4, 0x7e, 0xb1, 0x89, 0x6c, 0x41, 0x98, 0x09, 0xb8, 0x39, 0x77, 0xce, 0x7d, 0x3c, 0x4b, 0xee, 0x98, 0xab, 0xd2, 0x6b, 0x81, 0x10, 0x22, 0x19, 0x80, 0xf3, 0xd0, 0x79, 0x32, 0x13, 0xe2, 0x43, 0x32, 0xcf, 0xdf, 0x14, 0xf3, 0x32, 0x9d, 0xd5, 0xd2, 0x9c, 0x5d, 0x22, 0xee, 0xb4, 0x59, 0x8c, 0x66, 0x25, 0x47, 0x1b, 0xa4, 0x7d, 0xe0, 0xa4, 0xf9, 0x8c, 0x93, 0x2d, 0x6d, 0x24, 0xae, 0x14, 0xea, 0x79, 0x49, 0x98, 0x4b, 0x81, 0x52, 0x18, 0x35, 0x02, 0xfd, 0x9e, 0x43, 0xb3, 0x17, 0xf4, 0xce, 0xa7, 0x65, 0x31, 0xfc, 0xa9, 0x1f, 0x20, 0x84, 0x24, 0xa6, 0xab, 0x02, 0x79, 0x7c, 0xf4, 0x7f, 0x0e, 0x3f, 0x65, 0x58, 0xaa, 0x4a, 0x6f, 0x6c, 0x35, 0xdd, 0xf7, 0x8c, 0x85, 0x28, 0xe1, 0x22, 0x0b, 0xdf, 0x90, 0xce, 0xc5, 0x86, 0x47, 0xe3, 0x74, 0x92, 0x1e, 0x14, 0x78, 0x94, 0x76, 0x9f, 0x86, 0xb0, 0x42, 0xda, 0x46, 0xd1, 0x9b, 0x03, 0xc5, 0xe2, 0x04, 0x6d, 0x2a, 0x83, 0x62, 0x27, 0x21, 0x9f, 0x23, 0xf7, 0x6c, 0x27, 0xd3, 0x1e, 0xde, 0x60, 0x46, 0x2a, 0x8a, 0x74, 0xf2, 0x23, 0xb0, 0x3d, 0x4c, 0xca, 0xcc, 0xf5, 0x9e, 0x7e, 0x6b, 0x7e, 0xf9, 0x79, 0xc6, 0xd0, 0xf4, 0x88, 0x60, 0x55, 0xc9, 0x8b, 0xf7, 0x67, 0xc7, 0x3d, 0x35, 0x84, 0x63, 0x3a, 0x03, 0x6c, 0xd6, 0xc6, 0x59, 0x46, 0x40, 0x59, 0x55, 0x72, 0x9a, 0x5e, 0x66, 0x1b, 0x3e, 0x36, 0x59, 0x0b, 0x9c, 0x50, 0x1c, 0x10, 0x31, 0x2f, 0x91, 0xdf, 0x52, 0x00, 0x4c, 0xdc, 0xc5, 0x8d, 0xfd, 0xca, 0xbf, 0x8b, 0x79, 0x2a, 0x7b, 0xb7, 0xaa, 0x10, 0xf1, 0xa7, 0x9d, 0x8f, 0xb4, 0xc9, 0x51, 0x5c, 0x80, 0x0e, 0xaa, 0xa4, 0xb4, 0xff, 0xa1, 0x5a, 0xa5, 0x74, 0x09, 0x1a, 0x4a, 0x36, 0xfe, 0x00, 0x17, 0xfd, 0x86, 0x4e, 0x73, 0x98, 0x85, 0x51, 0x38, 0xdd, 0x0a, 0x44, 0x8e, 0x7d, 0x77, 0x52, 0xc7, 0xb9, 0xcf, 0x51, 0x16, 0x8e, 0x17, 0x65, 0x80, 0x7a, 0xad, 0x29, 0xd8, 0x1c, 0xb4, 0x41, 0x42, 0x3d, 0x07, 0x52, 0x28, 0x18, 0xe2, 0x13, 0x59, 0xee, 0xc9, 0xb1, 0xcc, 0xef, 0x40, 0xa2, 0x31, 0xac, 0x0b, 0xe9, 0xd4, 0x5a, 0x99, 0x43, 0xb1, 0xc5, 0xa6, 0x73, 0x34, 0xfb, 0xb0, 0x6e, 0x2c, 0xac, 0x71, 0x56, 0xa2, 0x41, 0x04, 0xa6, 0x94, 0x16, 0xd6, 0xe1, 0xdc, 0x3a, 0xd9, 0x4f, 0x8e, 0xa2, 0xe7, 0x22, 0x44, 0x2f, 0x07, 0xd2, 0xc1, 0x66, 0x68, 0xa8, 0xa3, 0x90, 0xe2, 0x70, 0xef, 0x58, 0x3d, 0xda, 0xfb, 0x0f, 0xaf, 0x2d, 0x82, 0xd7, 0xd8, 0xa0, 0x07, 0x8c, 0xd5, 0x9b, 0x6e, 0x43, 0xb5, 0x1b, 0x74, 0x84, 0x41, 0x6b, 0x05, 0x57, 0x46, 0x2a, 0xc2, 0x32, 0xea, 0x57, 0x1c, 0x7a, 0x91, 0xe3, 0x57, 0x5c, 0xcf, 0x38, 0x7c, 0x9d, 0x1b, 0x21, 0x52, 0xe7, 0xd2, 0x29, 0xdb, 0xe8, 0x8d, 0xdc, 0xd2, 0x47, 0x2f, 0x22, 0xd7, 0xb5, 0x0e, 0x43, 0xe0, 0xb8, 0xa9, 0x14, 0x3b, 0xd8, 0x57, 0x6c, 0x4c, 0xc7, 0x50, 0x44, 0x5f, 0x2a, 0x8e, 0x82, 0xc8, 0x5b, 0x6d, 0x21, 0x75, 0xce, 0x0a, 0x69, 0x6f, 0x2d, 0x68, 0xfb, 0x82, 0x79, 0x81, 0xd4, 0x8f, 0xc8, 0xee, 0x58, 0xb0, 0x1c, 0xca, 0xab, 0xa9, 0x13, 0x9b, 0x33, 0x2e, 0x1d, 0x66, 0x02, 0x63, 0xd3, 0xf6, 0xf6, 0xe5, 0x6c, 0x90, 0x6e, 0x9c, 0xd0, 0x4c, 0xca, 0x36, 0xf9, 0xe0, 0xe0, 0x0a, 0x03, 0xbc, 0x71, 0xbd, 0xe6, 0xd4, 0x0c, 0x3b, 0xea, 0x2c, 0x41, 0x1b, 0x94, 0xc4, 0x05, 0xee, 0x5d, 0x6b, 0x61, 0xcd, 0x95, 0x46, 0xc7, 0xe5, 0x98, 0x10, 0x3c, 0x28, 0x4a, 0x81, 0x3d, 0x89, 0xc5, 0xd8, 0x29, 0xc1, 0x07, 0x8f, 0xf8, 0x72, 0x90, 0x53, 0x3a, 0x92, 0xdf, 0x0d, 0x5d, 0x93, 0x88, 0xad, 0xbb, 0xcc, 0x68, 0xd8, 0x2e, 0x2b, 0x84, 0x0c, 0xa9, 0x48, 0x49, 0x64, 0xc2, 0x9d, 0x0f, 0xeb, 0x56, 0xb1, 0x06, 0x19, 0x21, 0x5e, 0xe8, 0x91, 0x37, 0xdd, 0x68, 0x01, 0x94, 0x89, 0x59, 0x64, 0xb7, 0x80, 0x97, 0xee, 0x1f, 0x2e, 0x54, 0xb2, 0xbf, 0x7f, 0x79, 0xf6, 0xee, 0xe8, 0xdd, 0xd7, 0x07, 0x00, 0x3f, 0xcb, 0xaa, 0x29, 0x9a, 0xf4, 0x26, 0x7f, 0x59, 0xcd, 0xf2, 0x29, 0x73, 0x0a, 0xe9, 0x7f, 0xda, 0x2a, 0x17, 0xc9, 0xc4, 0xc1, 0x6a, 0x98, 0x4b, 0x50, 0x1d, 0x22, 0xc9, 0xbe, 0x28, 0x76, 0xa9, 0xca, 0xcb, 0x95, 0xdd, 0xfa, 0x29, 0xa9, 0x22, 0x14, 0x27, 0xa0, 0xf8, 0x29, 0xf8, 0x11, 0x13, 0xad, 0x19, 0x1d, 0x8a, 0xc2, 0xeb, 0xe3, 0xe3, 0x24, 0x44, 0x89, 0xe5, 0x0c, 0x53, 0xa1, 0x2f, 0xae, 0x80, 0xa5, 0x81, 0x6c, 0x4a, 0x2a, 0xc2, 0x7d, 0x46, 0xf8, 0x83, 0xdb, 0xb4, 0xb8, 0x9e, 0x31, 0x5d, 0xbf, 0x0f, 0x53, 0x3d, 0x29, 0x0f, 0x99, 0xb2, 0x07, 0xe9, 0x84, 0xf3, 0x6a, 0x46, 0xb6, 0x90, 0x61, 0x92, 0xe5, 0x45, 0x03, 0xf5, 0xa8, 0x25, 0x49, 0xdb, 0x3d, 0x4f, 0xd6, 0xc5, 0x10, 0xae, 0xd8, 0xca, 0x69, 0xa1, 0x89, 0x70, 0xc8, 0x92, 0x72, 0x5a, 0x0d, 0x3d, 0xb2, 0x5e, 0x48, 0x7d, 0x72, 0xa2, 0xd1, 0xb3, 0x59, 0x96, 0xda, 0xc6, 0xbf, 0x35, 0xb8, 0x65, 0xc8, 0x2e, 0x6e, 0xb2, 0x4a, 0x8c, 0x4f, 0x5b, 0x5a, 0x6b, 0x98, 0xdd, 0x28, 0x19, 0x97, 0xe6, 0xf9, 0x50, 0xc3, 0xb2, 0xdd, 0xe4, 0x5a, 0x8d, 0xa9, 0x39, 0xc7, 0xd6, 0x26, 0x5e, 0x51, 0xa3, 0x1d, 0x0a, 0xca, 0xb5, 0xd7, 0x1b, 0xe9, 0x65, 0x0b, 0xfa, 0x9f, 0x64, 0x56, 0xa1, 0xb8, 0xd3, 0xd8, 0x0f, 0x28, 0x64, 0x63, 0x68, 0xd8, 0xe9, 0x06, 0x35, 0x09, 0x43, 0x87, 0x5d, 0x6f, 0xa4, 0x7b, 0xfa, 0x44, 0xfa, 0x79, 0xec, 0xdd, 0x05, 0x47, 0xdb, 0x6f, 0x79, 0x6d, 0x6d, 0x52, 0xb1, 0x3b, 0x3d, 0xcf, 0xa9, 0x74, 0x41, 0xb2, 0xd1, 0x54, 0x2e, 0x5d, 0xcb, 0xa0, 0x61, 0x06, 0x11, 0xf2, 0x13, 0x46, 0xf8, 0x92, 0x87, 0xfc, 0xe2, 0x71, 0xff, 0x65, 0x11, 0x37, 0x03, 0xe7, 0x5c, 0xc8, 0x09, 0xe7, 0xa6, 0x09, 0x8a, 0xd7, 0x2e, 0x46, 0xdb, 0xd1, 0xe4, 0x29, 0x9e, 0x83, 0x48, 0xa4, 0x3a, 0xbd, 0x76, 0x19, 0x61, 0xbd, 0x8c, 0x4f, 0x3b, 0x88, 0x75, 0x65, 0x34, 0x1d, 0xa8, 0xf5, 0x2a, 0xe9, 0x50, 0x69, 0x62, 0x13, 0x7b, 0x9a, 0xc4, 0x8f, 0x65, 0xb6, 0x0a, 0xf5, 0xc3, 0xe1, 0xa4, 0x0c, 0x4a, 0xa2, 0x55, 0xbd, 0x4c, 0x58, 0x22, 0x37, 0x79, 0x71, 0x5d, 0xd2, 0x6f, 0x24, 0xda, 0x14, 0xc9, 0x61, 0x71, 0xa0, 0x8c, 0xb1, 0x8d, 0xf0, 0x77, 0x55, 0x1d, 0x34, 0x5a, 0x66, 0x60, 0xd6, 0xc2, 0xf5, 0x72, 0x7e, 0x7f, 0x11, 0xd7, 0x52, 0xa4, 0x4b, 0x0a, 0x7c, 0x99, 0x40, 0xbc, 0x83, 0x44, 0xdb, 0x25, 0x9b, 0x17, 0xe7, 0x75, 0x26, 0x2d, 0x5c, 0xb9, 0x4e, 0x4e, 0x05, 0x8e, 0xc8, 0x9b, 0xdc, 0xfa, 0x7e, 0xfa, 0x25, 0x89, 0xed, 0xdd, 0x66, 0xf7, 0xda, 0xd9, 0xaf, 0x08, 0x30, 0x73, 0xb2, 0x26, 0x6e, 0xf0, 0xf4, 0xaa, 0x2c, 0x25, 0xb9, 0xab, 0x8f, 0xd9, 0x26, 0xa4, 0xd2, 0x10, 0x4c, 0x44, 0x8f, 0xfe, 0x60, 0x31, 0xb5, 0x5c, 0x0c, 0x32, 0xc8, 0x00, 0xf6, 0xf1, 0xf7, 0x5a, 0xc0, 0x97, 0x6d, 0xd9, 0xc6, 0xf3, 0xb1, 0xc2, 0x59, 0x98, 0x6b, 0x08, 0x0a, 0x48, 0x5c, 0x80, 0x45, 0x77, 0x7c, 0x7b, 0x24, 0xf5, 0xd2, 0xdf, 0x94, 0xa8, 0xb0, 0xe3, 0x0c, 0x35, 0x97, 0xb7, 0x48, 0x54, 0x43, 0x66, 0x53, 0xd1, 0x0e, 0x68, 0xd0, 0x4c, 0xf3, 0x86, 0x18, 0xc8, 0xef, 0xf6, 0x77, 0xfb, 0x98, 0x3c, 0x06, 0xd2, 0xc2, 0x4f, 0xdc, 0xc6, 0xda, 0xda, 0x5f, 0x24, 0x06, 0x5d, 0xdd, 0x00, 0x64, 0xc8, 0x6a, 0x09, 0x3f, 0xdd, 0x10, 0xf4, 0x92, 0xd6, 0x7d, 0xfb, 0x1f, 0xb7, 0x8a, 0x7f, 0x69, 0x63, 0xb7, 0x9e, 0xbe, 0x6e, 0x8e, 0x7f, 0x9d, 0x79, 0x67, 0x8c, 0x81, 0x62, 0x19, 0x68, 0xca, 0x4b, 0xd4, 0x4f, 0xe2, 0x29, 0xed, 0x4e, 0x67, 0x20, 0xbb, 0x9e, 0x1a, 0x78, 0x29, 0x5e, 0x64, 0x1e, 0xb2, 0x64, 0x63, 0xd3, 0x2e, 0x96, 0x49, 0x84, 0x65, 0x0d, 0xf4, 0x06, 0x68, 0x1e, 0x8b, 0x4d, 0xa2, 0xe5, 0xaf, 0x91, 0xa6, 0x5c, 0x86, 0x90, 0x24, 0xc2, 0x48, 0xd9, 0x18, 0x4f, 0x25, 0x9d, 0x93, 0x36, 0x04, 0x5f, 0x6a, 0x0b, 0x46, 0x4a, 0x4b, 0x1b, 0x46, 0xbd, 0xfd, 0xd1, 0x86, 0x04, 0x82, 0x71, 0xe6, 0xa3, 0xac, 0x6f, 0xf0, 0xdb, 0x1b, 0xc9, 0x16, 0xb8, 0xea, 0xb6, 0x55, 0x5e, 0xc3, 0xa2, 0x60, 0xed, 0xfb, 0xc1, 0x36, 0x4c, 0xca, 0x12, 0xb2, 0x9b, 0x5d, 0x0b, 0xfd, 0xd5, 0x58, 0x79, 0x95, 0x91, 0xff, 0xab, 0x79, 0x5a, 0xcd, 0xe9, 0x8c, 0x2f, 0x56, 0xf3, 0x98, 0x99, 0x83, 0xbb, 0x2d, 0xc1, 0xa1, 0xbc, 0xae, 0x57, 0x62, 0x04, 0x5a, 0xd4, 0x15, 0x0b, 0xc3, 0x97, 0xcc, 0xcd, 0x7c, 0xe8, 0xd3, 0xf5, 0x1c, 0xa9, 0x27, 0xbd, 0xea, 0x09, 0x79, 0x87, 0x45, 0xf1, 0xb5, 0x4d, 0xf0, 0xd8, 0x8e, 0x92, 0xd3, 0xb9, 0xc4, 0xa4, 0xb4, 0xe9, 0x17, 0x36, 0x61, 0x40, 0xb2, 0xaa, 0x33, 0xdc, 0xc6, 0xc9, 0xe9, 0xf9, 0xd1, 0xc9, 0xbb, 0x71, 0xf2, 0x6f, 0x1b, 0x6b, 0xeb, 0xbf, 0xda, 0x98, 0xbd, 0x3f, 0x0c, 0xdc, 0x99, 0x24, 0x2f, 0xc4, 0xcf, 0xd0, 0x67, 0x1b, 0x7b, 0x4a, 0xfc, 0xd4, 0x48, 0x6f, 0xc3, 0x5f, 0xf5, 0x4d, 0xc1, 0x3b, 0x93, 0xd3, 0xea, 0x40, 0xb4, 0x05, 0xda, 0xb2, 0xc5, 0xb8, 0xeb, 0x1a, 0xd1, 0xcc, 0xec, 0x9d, 0xcd, 0xd2, 0x19, 0x3e, 0xce, 0x81, 0x85, 0xf3, 0xb5, 0x72, 0x3d, 0xe5, 0x05, 0xda, 0xe2, 0x1b, 0x52, 0x4b, 0xd9, 0x82, 0xde, 0x92, 0xc6, 0xa5, 0xa2, 0x68, 0xd5, 0x91, 0x14, 0xc2, 0xaf, 0x0f, 0xcf, 0xe1, 0xa4, 0xa1, 0xd2, 0x4f, 0x37, 0x41, 0x72, 0x75, 0x89, 0xe2, 0x93, 0x5a, 0xe5, 0x4c, 0x2b, 0x3e, 0xa9, 0xeb, 0xf9, 0xed, 0x72, 0x9e, 0x16, 0xd1, 0x1a, 0x37, 0xa3, 0xd1, 0xa2, 0x91, 0x7b, 0xe9, 0xf0, 0x50, 0xd5, 0x77, 0xe2, 0xb5, 0xcc, 0x60, 0xac, 0xa2, 0xd3, 0xf7, 0xe7, 0xe2, 0xa7, 0x7a, 0x7d, 0x78, 0x7c, 0x78, 0x7e, 0xd8, 0xb5, 0xdc, 0x27, 0x8c, 0xf0, 0x48, 0xb5, 0x30, 0x4d, 0x36, 0xbd, 0x2a, 0xca, 0x79, 0x79, 0x99, 0x4b, 0x33, 0xcb, 0xe4, 0xfb, 0x6c, 0xf2, 0xfa, 0xe5, 0x77, 0xd0, 0x27, 0xe0, 0x73, 0x3a, 0x3d, 0x3b, 0x39, 0x7d, 0x73, 0xf4, 0xee, 0xf5, 0x20, 0x79, 0x75, 0x72, 0xfa, 0xa7, 0x41, 0xf2, 0xf6, 0xe4, 0xbb, 0xc3, 0x48, 0x0e, 0x34, 0x90, 0xd7, 0x03, 0x8a, 0xb1, 0x8d, 0xe5, 0x9c, 0xe1, 0x5d, 0x70, 0xc8, 0xc2, 0x13, 0x22, 0x2f, 0x29, 0x6b, 0x04, 0x4d, 0x97, 0xf9, 0xae, 0x99, 0xad, 0x33, 0x32, 0xf4, 0x9b, 0xc3, 0x97, 0xaf, 0x07, 0x01, 0x36, 0x36, 0xba, 0x74, 0x98, 0x8f, 0x61, 0x7d, 0x76, 0xd1, 0x84, 0xa8, 0xcc, 0xd6, 0x07, 0x69, 0x08, 0x1c, 0xe4, 0xe2, 0x1b, 0x6b, 0x08, 0x96, 0x4a, 0xd7, 0x67, 0x7d, 0x99, 0x13, 0x02, 0xf3, 0xde, 0xdb, 0x3e, 0xd6, 0xeb, 0xe8, 0x0b, 0x65, 0xcd, 0x57, 0xb3, 0x05, 0xc1, 0x88, 0xf2, 0xee, 0xb5, 0x4a, 0x8b, 0x39, 0x04, 0x67, 0x57, 0xf7, 0xc0, 0xe8, 0x0c, 0x5a, 0xf5, 0xf3, 0xc4, 0x8f, 0xd8, 0xf5, 0x98, 0x4a, 0xff, 0x3d, 0xea, 0x87, 0x83, 0xdc, 0x9f, 0x31, 0xe3, 0x47, 0x0b, 0x74, 0xea, 0x7a, 0x0d, 0x5b, 0x30, 0xba, 0x05, 0xcb, 0x08, 0x9b, 0xa7, 0x1b, 0x34, 0xd0, 0x56, 0x24, 0x3f, 0xf0, 0x8f, 0x25, 0x4d, 0x27, 0x92, 0xd9, 0xbd, 0xba, 0x30, 0x64, 0x99, 0x71, 0x4e, 0x15, 0x1f, 0x93, 0x75, 0x0b, 0x24, 0xc3, 0x23, 0x75, 0x4a, 0xac, 0x53, 0xb0, 0xf4, 0xc6, 0xa8, 0x63, 0x86, 0x01, 0x94, 0xd4, 0x67, 0xd5, 0x66, 0x13, 0xbe, 0x87, 0x04, 0xeb, 0x8c, 0xe8, 0xfb, 0x7a, 0xc4, 0x0a, 0xf1, 0x23, 0x1e, 0x1c, 0x7f, 0x53, 0xa8, 0x6e, 0x28, 0xf0, 0x65, 0x19, 0x01, 0x1b, 0x08, 0x17, 0x7a, 0xd2, 0xb0, 0x92, 0x42, 0x3c, 0xa2, 0x09, 0x42, 0x6f, 0x43, 0xb6, 0xa5, 0xfd, 0xb4, 0x60, 0xe5, 0x9e, 0xa2, 0x9b, 0xca, 0x1c, 0xe2, 0xed, 0xce, 0x5d, 0x3f, 0x44, 0xdf, 0x97, 0xf7, 0x68, 0xf7, 0xd6, 0xf9, 0xd8, 0xa1, 0x4d, 0xd4, 0xc9, 0x50, 0x60, 0xaa, 0xa9, 0xba, 0x2f, 0xd8, 0xba, 0xad, 0x37, 0x3d, 0x8c, 0xd1, 0xf7, 0xda, 0xda, 0x2a, 0x77, 0xcb, 0xa2, 0x8e, 0x8f, 0xcc, 0x75, 0x88, 0xe0, 0xc5, 0xcc, 0x4a, 0x6a, 0x8a, 0x4b, 0xe9, 0x08, 0xa4, 0x57, 0xd1, 0xee, 0x9b, 0xb1, 0xc2, 0x0f, 0xa3, 0x49, 0x74, 0xf4, 0xcb, 0xd4, 0x3d, 0xfa, 0x9e, 0x4f, 0x07, 0x67, 0x76, 0x76, 0x78, 0x7e, 0x36, 0x4a, 0xb6, 0x7c, 0x20, 0xd4, 0xa7, 0xa3, 0xdd, 0x30, 0x68, 0x83, 0x06, 0xd5, 0xd1, 0xaf, 0x52, 0xe7, 0xea, 0x9e, 0xaf, 0x12, 0x6f, 0xc0, 0x77, 0xc3, 0x44, 0x63, 0x0f, 0xfe, 0x68, 0x37, 0xf6, 0x3d, 0xbf, 0x09, 0x76, 0xeb, 0x7b, 0xf8, 0xc5, 0x9a, 0x55, 0x7e, 0x73, 0x78, 0x1c, 0x69, 0x1b, 0xf3, 0xdd, 0xd9, 0x9b, 0x3f, 0xb5, 0x57, 0xf9, 0xe8, 0x71, 0xe4, 0xab, 0xbf, 0xa6, 0x43, 0x3d, 0xab, 0xcb, 0xb9, 0x51, 0x58, 0xa8, 0xcc, 0x83, 0xaa, 0x3c, 0x0e, 0x8c, 0x08, 0x40, 0x32, 0xfa, 0x9f, 0x07, 0xf2, 0x97, 0x9f, 0x46, 0xa3, 0xd1, 0x1f, 0x43, 0x2c, 0x6f, 0xf2, 0xd1, 0xd8, 0xe5, 0xca, 0xb3, 0x5d, 0x0b, 0x9c, 0xaa, 0x6a, 0xa8, 0x8c, 0x08, 0x51, 0x8b, 0x65, 0x9a, 0x57, 0xd4, 0x6e, 0x26, 0x2a, 0x70, 0xb1, 0x24, 0x57, 0x0a, 0x66, 0xb5, 0x39, 0x81, 0xc9, 0xe2, 0xeb, 0xba, 0x55, 0x6f, 0x4b, 0xdd, 0xb5, 0xd7, 0xd1, 0x7b, 0x16, 0x38, 0x42, 0xb8, 0xe5, 0x07, 0x3e, 0x5b, 0xc1, 0x3f, 0xcb, 0xb6, 0x8e, 0x93, 0xb5, 0x85, 0xca, 0x0e, 0x59, 0xfd, 0xcc, 0x4e, 0x3f, 0xea, 0xbd, 0x90, 0x42, 0xca, 0x57, 0x12, 0x52, 0x27, 0x47, 0x72, 0x4a, 0x62, 0x85, 0x5a, 0xa2, 0x66, 0xcd, 0x74, 0x07, 0xeb, 0xac, 0x5b, 0x1a, 0xa0, 0x55, 0xe1, 0x02, 0x27, 0x92, 0x9f, 0xf0, 0x48, 0x25, 0xb6, 0x9c, 0xdc, 0xe2, 0xd5, 0x2c, 0xb8, 0x2a, 0x5f, 0x4f, 0x53, 0x67, 0xfd, 0x20, 0xe4, 0x66, 0xad, 0x66, 0x3b, 0x7e, 0x63, 0x08, 0xed, 0xa2, 0x10, 0xb0, 0x43, 0xaf, 0x94, 0x2d, 0x54, 0xfb, 0x89, 0x3b, 0x2b, 0x25, 0x21, 0x91, 0x82, 0x20, 0xb9, 0x2f, 0x5a, 0x12, 0x41, 0x3d, 0x74, 0xfe, 0xa1, 0x6b, 0x5b, 0xe7, 0x08, 0xb0, 0x91, 0xc0, 0x6b, 0xab, 0x11, 0x8f, 0x95, 0x86, 0xf2, 0xf0, 0x2b, 0x9b, 0xb0, 0x41, 0x75, 0xe8, 0x9b, 0xff, 0xb6, 0x09, 0x45, 0x98, 0x5e, 0x8f, 0x56, 0xbf, 0x2b, 0xe1, 0xc2, 0xb0, 0xc1, 0x53, 0x11, 0xbd, 0xc1, 0x6e, 0x8a, 0x25, 0x3e, 0xe5, 0xa5, 0x3e, 0xf1, 0xd0, 0x12, 0x46, 0xc9, 0xf7, 0xf9, 0x7c, 0x36, 0x4d, 0x2b, 0x4a, 0x0f, 0x0b, 0xc5, 0xab, 0x90, 0x09, 0xdf, 0xa7, 0xba, 0xa4, 0xaf, 0xba, 0xcb, 0xa3, 0x7d, 0x4a, 0xe2, 0x54, 0x1f, 0xa9, 0x0a, 0xb2, 0x87, 0x81, 0xe0, 0x77, 0x4f, 0x3f, 0x28, 0x21, 0x1f, 0xdd, 0x63, 0x88, 0xba, 0x76, 0x73, 0x88, 0xf6, 0xb9, 0x6a, 0x1c, 0x62, 0xf8, 0x38, 0x8c, 0xa5, 0xe4, 0xcb, 0xeb, 0xc7, 0xe4, 0xbe, 0x7a, 0x3a, 0xe0, 0x7f, 0x3d, 0x65, 0xe0, 0xc2, 0xa6, 0x1d, 0x59, 0x61, 0x3b, 0x86, 0xb5, 0xfe, 0xa3, 0x53, 0x2d, 0x81, 0x0d, 0x7a, 0x1a, 0x78, 0x40, 0xdd, 0x3c, 0x4b, 0xad, 0x6c, 0x33, 0xef, 0xe8, 0x6c, 0xb1, 0x23, 0x86, 0x7f, 0xfd, 0x79, 0x52, 0xa1, 0x2b, 0x66, 0x53, 0xff, 0xb4, 0xae, 0xe0, 0xd8, 0xe8, 0xfc, 0xcf, 0x46, 0x61, 0x61, 0x57, 0xfc, 0x43, 0x36, 0x8b, 0xd9, 0x7d, 0x0d, 0x15, 0x00, 0x14, 0xb6, 0x43, 0xd6, 0x0f, 0xbe, 0xb3, 0xe6, 0x43, 0xcf, 0xef, 0xf9, 0x10, 0x1f, 0xa9, 0x05, 0x43, 0xbb, 0x51, 0xaa, 0xf0, 0x8b, 0x98, 0xcd, 0x38, 0x4f, 0x1f, 0x8f, 0x76, 0x1f, 0x9e, 0x78, 0xed, 0x8c, 0x6f, 0xc6, 0xe4, 0xe3, 0x9f, 0x10, 0x95, 0x48, 0x8a, 0x58, 0xd9, 0x47, 0x73, 0x6b, 0xfb, 0x39, 0x00, 0x4b, 0xa6, 0xc5, 0xcb, 0xcd, 0x06, 0x50, 0x0d, 0x51, 0x65, 0x8c, 0xc3, 0x3a, 0xd8, 0x81, 0xa3, 0xa2, 0xe3, 0x6e, 0x11, 0x9e, 0x88, 0xa0, 0x28, 0xff, 0x18, 0xf8, 0x0c, 0xca, 0xe5, 0x0e, 0x51, 0xe7, 0x74, 0x76, 0xf8, 0xe6, 0xfd, 0xf8, 0xf0, 0x35, 0x61, 0x1b, 0xa4, 0xb1, 0x56, 0x3d, 0x39, 0xb9, 0xe5, 0xa4, 0xf7, 0x4c, 0x53, 0x96, 0x9c, 0x11, 0x24, 0x73, 0x09, 0xda, 0xd9, 0x49, 0x72, 0x91, 0xb1, 0x8c, 0xc3, 0xc2, 0x14, 0xd6, 0xe3, 0xe4, 0xc5, 0x9f, 0x01, 0x4c, 0xc2, 0xab, 0x9e, 0x65, 0xe8, 0xfb, 0xf4, 0x82, 0xb3, 0x60, 0x02, 0xa4, 0x31, 0xd7, 0x21, 0xaa, 0x9e, 0x67, 0xd9, 0x52, 0xea, 0x02, 0x17, 0xe5, 0xaa, 0x60, 0xb7, 0xa8, 0x39, 0x1b, 0xf5, 0x04, 0xb2, 0xeb, 0x99, 0xe0, 0x15, 0xee, 0x34, 0x70, 0x98, 0xf6, 0x34, 0x29, 0x22, 0xcc, 0xb1, 0x84, 0x52, 0xcf, 0x1d, 0xa6, 0x80, 0xdb, 0x16, 0xde, 0x95, 0xad, 0xbc, 0xe9, 0xb8, 0xd0, 0x83, 0x86, 0x6d, 0xe4, 0x52, 0x47, 0xcf, 0x24, 0x63, 0x17, 0xf1, 0x64, 0xd2, 0xf9, 0x65, 0x59, 0x99, 0xf1, 0x16, 0xb6, 0x94, 0x91, 0xf1, 0x1e, 0xea, 0xed, 0x6e, 0x9b, 0xc7, 0xb0, 0x28, 0x9c, 0xeb, 0x30, 0x28, 0x04, 0x9e, 0x71, 0x85, 0x37, 0xd8, 0x02, 0xef, 0x13, 0x79, 0x4c, 0x10, 0x1e, 0x64, 0x99, 0x36, 0x96, 0xba, 0x6c, 0xda, 0x0f, 0xde, 0xc2, 0xc0, 0xdc, 0xfc, 0x5b, 0x56, 0x95, 0x5d, 0x77, 0x8e, 0xaa, 0xee, 0x1a, 0x0e, 0xf0, 0xe7, 0xfe, 0xaf, 0x6c, 0x14, 0xb6, 0xb7, 0x1f, 0xbb, 0x01, 0x8b, 0xf4, 0x96, 0x5c, 0x54, 0xbd, 0xe4, 0xc0, 0x0e, 0x5b, 0x6c, 0x07, 0x1e, 0xab, 0x98, 0xe5, 0x13, 0x83, 0x75, 0xa5, 0x31, 0x9c, 0x97, 0x64, 0x4f, 0x5a, 0x1c, 0x58, 0x64, 0x77, 0x87, 0xa1, 0x47, 0x4a, 0xe3, 0xb6, 0xdd, 0xb2, 0xc8, 0x4f, 0x98, 0x62, 0x99, 0x30, 0xe2, 0xb6, 0xb8, 0x6b, 0x11, 0x7d, 0x6f, 0x1b, 0x3f, 0x9e, 0x97, 0x88, 0x52, 0x32, 0x31, 0xd0, 0xf7, 0x43, 0x1c, 0x3b, 0x18, 0x09, 0x15, 0x08, 0x51, 0x0d, 0x5a, 0xf6, 0x09, 0x53, 0x0b, 0x16, 0xaa, 0x26, 0x03, 0xaa, 0x17, 0x7b, 0xc0, 0x2e, 0xdc, 0x38, 0xf2, 0x66, 0x90, 0xc3, 0xca, 0xe3, 0xb0, 0xa2, 0x40, 0x43, 0x0c, 0xda, 0x70, 0xc3, 0xb2, 0xd9, 0x54, 0xbe, 0x49, 0xf5, 0x3d, 0xd4, 0xa5, 0x4b, 0x8a, 0xe8, 0x23, 0xaa, 0xda, 0x40, 0xdb, 0xbe, 0x50, 0xed, 0x13, 0x96, 0x43, 0x76, 0x66, 0x5a, 0xf8, 0x73, 0xa5, 0x03, 0x30, 0x63, 0xe4, 0xe5, 0x8c, 0xaa, 0xa6, 0xb8, 0x7d, 0x4c, 0x1f, 0xbe, 0x8c, 0xcc, 0x65, 0x13, 0x9e, 0xca, 0xdb, 0x7c, 0xb1, 0x5a, 0xd0, 0xfb, 0x03, 0xae, 0x8f, 0x5c, 0x40, 0x6a, 0xe9, 0xa1, 0x52, 0x76, 0x61, 0xa3, 0x14, 0x15, 0x73, 0x66, 0x80, 0xb7, 0x11, 0xd1, 0x36, 0x9c, 0xf1, 0x83, 0xb7, 0xb8, 0xef, 0x04, 0x1d, 0xd4, 0x7f, 0x39, 0x7d, 0x26, 0x2f, 0x8c, 0x46, 0xf7, 0xc7, 0x70, 0x12, 0x21, 0xeb, 0x20, 0xba, 0x44, 0x9e, 0x73, 0x36, 0xf3, 0xac, 0x48, 0x21, 0x37, 0xa8, 0xaa, 0x72, 0x46, 0xfd, 0x1c, 0x4a, 0x80, 0x23, 0x68, 0xbe, 0x42, 0xf1, 0x58, 0xaa, 0x73, 0xfe, 0xb2, 0x58, 0x12, 0xba, 0xbf, 0x64, 0x9c, 0xbb, 0xd5, 0x32, 0x90, 0xf9, 0x96, 0x4f, 0x58, 0x75, 0xd4, 0x7c, 0x7e, 0x57, 0x72, 0x62, 0xc4, 0xb6, 0x85, 0xbf, 0x5c, 0xf6, 0xd8, 0xba, 0xb1, 0xa4, 0x0b, 0x41, 0xbc, 0x69, 0x23, 0xf1, 0xb2, 0x40, 0x88, 0xb0, 0x62, 0xca, 0x70, 0x49, 0x07, 0xd8, 0x14, 0x3e, 0xbe, 0x81, 0x96, 0xea, 0x3d, 0xbe, 0xbd, 0x0d, 0x28, 0xdc, 0x33, 0x88, 0x19, 0x84, 0x91, 0xad, 0xe5, 0xc7, 0xbb, 0x54, 0x07, 0xf9, 0xe4, 0xb6, 0x63, 0x34, 0x8f, 0xa2, 0x88, 0x89, 0x5a, 0xb9, 0x9b, 0x4e, 0x4a, 0x0e, 0xc1, 0xf1, 0x86, 0xa5, 0xde, 0x66, 0x6a, 0x14, 0x41, 0x9a, 0x8a, 0xde, 0xa4, 0xd8, 0xdc, 0xb2, 0x08, 0x53, 0x1b, 0x28, 0x17, 0xd3, 0x6b, 0x23, 0xaa, 0x81, 0x52, 0xea, 0x87, 0x67, 0x94, 0x7f, 0x6c, 0xa6, 0xee, 0x95, 0x0e, 0x3a, 0x2b, 0x57, 0x1c, 0xc8, 0xcc, 0x82, 0xc8, 0x58, 0xce, 0xbb, 0x8f, 0x2b, 0x65, 0x44, 0x56, 0x3e, 0xc7, 0x3b, 0x7c, 0xaf, 0xeb, 0x64, 0xcf, 0x1c, 0x43, 0x5e, 0xac, 0x1a, 0x8b, 0x60, 0x47, 0x1f, 0x54, 0x0a, 0x8d, 0xee, 0x3e, 0xf8, 0xbc, 0x15, 0x2c, 0xc2, 0x0b, 0x6a, 0x2f, 0x40, 0xc8, 0xf7, 0x84, 0x74, 0x72, 0x71, 0xf0, 0xf8, 0x52, 0x36, 0xe2, 0x2a, 0xb2, 0x51, 0x58, 0xa9, 0x30, 0xcf, 0x6e, 0xcd, 0x66, 0x33, 0xca, 0x52, 0x62, 0x85, 0x83, 0x13, 0x6a, 0x92, 0x21, 0xcc, 0x5d, 0x0c, 0x22, 0x99, 0x3f, 0x2d, 0x26, 0x6e, 0x5b, 0x4f, 0x11, 0x9f, 0x2b, 0x1b, 0xb9, 0x92, 0x0c, 0x1c, 0x21, 0xe1, 0xe2, 0xff, 0x06, 0x57, 0xbb, 0x4e, 0xeb, 0xf9, 0x30, 0xef, 0xf2, 0xf2, 0x43, 0xca, 0x26, 0xb4, 0xb9, 0x40, 0x96, 0x0a, 0xcd, 0x10, 0xe3, 0x97, 0xe3, 0xe3, 0x0e, 0xd8, 0xd7, 0x5a, 0xf4, 0xe5, 0xbd, 0xb6, 0xda, 0xf3, 0xa9, 0x20, 0x22, 0x19, 0xb2, 0xb7, 0xaf, 0x77, 0x5c, 0x7d, 0xc0, 0x5f, 0x77, 0x48, 0xb4, 0xe1, 0x64, 0x18, 0xe2, 0x08, 0x55, 0x1b, 0xdc, 0xe3, 0x2f, 0x89, 0xe0, 0xe4, 0xd0, 0x13, 0x3b, 0x92, 0x02, 0x74, 0x5f, 0x24, 0x9d, 0x71, 0x27, 0x75, 0xe5, 0x63, 0x48, 0x03, 0x34, 0xc1, 0x1c, 0xc6, 0xf0, 0x7c, 0x6c, 0x1c, 0x4a, 0xf4, 0xc9, 0x9a, 0x9e, 0x46, 0x42, 0x50, 0x23, 0x62, 0xcb, 0x72, 0x2c, 0x8c, 0xe1, 0xf2, 0x6a, 0x80, 0x7e, 0x1e, 0x62, 0xa5, 0x73, 0xa8, 0xf5, 0x82, 0xfb, 0x0c, 0xea, 0x0c, 0xbc, 0x31, 0xbb, 0x7c, 0x92, 0x7e, 0xc8, 0x99, 0xe3, 0x7f, 0x5d, 0xe5, 0x19, 0x35, 0xc4, 0x34, 0xfc, 0x26, 0x79, 0xcd, 0x99, 0x61, 0xd2, 0xaf, 0x8f, 0x1b, 0x83, 0x52, 0xf3, 0x50, 0x3c, 0x6a, 0x27, 0x10, 0x58, 0x00, 0x66, 0x42, 0xb8, 0x87, 0x6f, 0x69, 0xd2, 0xaf, 0x30, 0xe9, 0x85, 0xb9, 0xe8, 0x64, 0xbf, 0x7b, 0x20, 0x63, 0x9a, 0x34, 0xa0, 0x99, 0xfc, 0x7c, 0x25, 0xd3, 0xfa, 0x63, 0x98, 0xab, 0x3f, 0x68, 0xb5, 0x69, 0x22, 0x9b, 0x51, 0x2c, 0x81, 0x06, 0x3d, 0xbe, 0x8a, 0x74, 0xbe, 0x53, 0x37, 0x33, 0xf0, 0xbf, 0x55, 0x31, 0xc7, 0x24, 0x31, 0x94, 0xb6, 0xa4, 0xeb, 0xee, 0x4d, 0x13, 0x43, 0x8d, 0x09, 0x0e, 0x88, 0x7c, 0xd7, 0xd6, 0xee, 0x90, 0x9a, 0x25, 0x5f, 0x81, 0x6d, 0x5c, 0x03, 0xbd, 0x10, 0x1d, 0xc8, 0xdf, 0x2a, 0xb8, 0x11, 0x78, 0xc5, 0xb4, 0x91, 0xad, 0x73, 0x5b, 0x87, 0x95, 0x70, 0x8d, 0x09, 0x19, 0x42, 0x9b, 0x94, 0xb5, 0x22, 0x27, 0x9b, 0x45, 0x9a, 0xd7, 0x5b, 0xf7, 0x89, 0xb0, 0xb8, 0xee, 0x85, 0x3b, 0x69, 0x7b, 0x0f, 0xb8, 0xe5, 0xf0, 0xbd, 0x38, 0x27, 0xfc, 0x46, 0xd8, 0xa7, 0xf9, 0x67, 0x23, 0x9d, 0x78, 0x21, 0x03, 0x0b, 0xe4, 0x04, 0x53, 0xd2, 0xe6, 0x3e, 0x4a, 0x42, 0x53, 0x0b, 0xf4, 0xc3, 0x02, 0xd3, 0x45, 0x1a, 0xe8, 0x19, 0x72, 0x5a, 0x09, 0x48, 0xc2, 0x74, 0x6e, 0x78, 0x7d, 0xc4, 0xe0, 0xd4, 0xd6, 0x89, 0xc0, 0x03, 0x1b, 0x74, 0xd9, 0x69, 0xbd, 0x82, 0x0a, 0x32, 0x5f, 0xe1, 0xdb, 0x0c, 0xa5, 0x65, 0xa1, 0x9c, 0xb4, 0xb6, 0x3b, 0x0a, 0x7f, 0x66, 0x01, 0x53, 0x70, 0x47, 0x3d, 0x24, 0xb8, 0x95, 0x36, 0x5a, 0x55, 0x90, 0xb4, 0x2e, 0x9a, 0xd8, 0xa8, 0x67, 0x76, 0xb0, 0x0a, 0x07, 0x7e, 0x57, 0x72, 0xdf, 0x00, 0x47, 0x39, 0x8b, 0x4e, 0xa7, 0xd5, 0x72, 0x3c, 0x6d, 0xa2, 0xce, 0x34, 0xe2, 0x62, 0x24, 0x64, 0xfc, 0xb9, 0xa9, 0xf4, 0xd0, 0x8a, 0x67, 0xca, 0x30, 0x6f, 0x35, 0xfa, 0x3e, 0x2a, 0x82, 0xb8, 0x47, 0xa7, 0x1d, 0x39, 0x2b, 0x0e, 0xb6, 0xa7, 0xb8, 0xdc, 0xbd, 0xd6, 0x94, 0x18, 0xad, 0xa6, 0x88, 0x65, 0x2a, 0x3f, 0xa4, 0x11, 0x79, 0xab, 0xf5, 0xf8, 0xbf, 0x52, 0x1e, 0x3e, 0x69, 0x77, 0xd3, 0x12, 0x6c, 0xbb, 0x5f, 0x74, 0xa1, 0xd2, 0x87, 0xdd, 0xa8, 0x9e, 0xaa, 0x82, 0xff, 0x99, 0x37, 0x2a, 0x7d, 0xd8, 0x95, 0x4a, 0x5b, 0x77, 0xaa, 0xa7, 0x7d, 0x7c, 0xef, 0x8c, 0x7f, 0xc5, 0x5b, 0x66, 0x13, 0x30, 0x1e, 0x7a, 0xc7, 0x94, 0x26, 0xfe, 0x67, 0xdf, 0xb2, 0xcf, 0x3b, 0x5a, 0x20, 0x01, 0x45, 0xae, 0x69, 0x5a, 0xe7, 0xe7, 0xa8, 0x20, 0x19, 0x1c, 0xba, 0xd6, 0x8e, 0xc5, 0x74, 0x8b, 0x77, 0xae, 0x63, 0x0c, 0xa2, 0x68, 0x88, 0xa6, 0xd4, 0xa3, 0x7d, 0x62, 0x8f, 0x43, 0xeb, 0xab, 0xd7, 0x8e, 0x1c, 0x38, 0xa9, 0x14, 0x29, 0xd7, 0x01, 0x3d, 0x8c, 0x44, 0x7d, 0xd0, 0x35, 0x5d, 0x1a, 0xb9, 0xbe, 0xcc, 0x49, 0x3b, 0x30, 0x8a, 0x0b, 0x40, 0x1a, 0xbf, 0x1e, 0x8f, 0x87, 0x2f, 0x4f, 0x8f, 0x00, 0xd8, 0x3b, 0x0c, 0x29, 0xca, 0x83, 0xcc, 0x2d, 0xfd, 0x39, 0xc6, 0xec, 0x82, 0xfe, 0x74, 0x93, 0xf6, 0xd7, 0x8d, 0x9e, 0xdb, 0xdd, 0xd6, 0x97, 0x75, 0xd2, 0x4a, 0xa7, 0xd4, 0x49, 0x59, 0xbc, 0x7d, 0x68, 0xdb, 0x8a, 0x3e, 0x4b, 0x29, 0xcd, 0x30, 0x4a, 0xc1, 0xb5, 0xe8, 0x81, 0x20, 0xf7, 0x94, 0xa0, 0x46, 0x00, 0x12, 0xb2, 0xf7, 0xfc, 0xe9, 0x9e, 0xb9, 0x15, 0x77, 0x8c, 0x7f, 0x27, 0x2f, 0x3f, 0x1e, 0x3d, 0xda, 0x79, 0x3c, 0x7a, 0x0c, 0x9e, 0x26, 0x41, 0x21, 0x32, 0xea, 0x64, 0x78, 0xc3, 0xed, 0x22, 0xd9, 0x17, 0x2c, 0xc4, 0xde, 0x1d, 0xbe, 0x4a, 0x38, 0x45, 0x8f, 0x10, 0xd1, 0x12, 0x2a, 0x16, 0x42, 0xe5, 0x91, 0xc4, 0xb1, 0x29, 0x4d, 0x00, 0xac, 0x54, 0x8e, 0x90, 0x89, 0x35, 0x30, 0xc6, 0x82, 0xed, 0x50, 0x53, 0x82, 0x4a, 0xf3, 0x0b, 0x3b, 0x11, 0xb0, 0x3b, 0xb6, 0x2a, 0x64, 0x5f, 0x30, 0xc7, 0xb0, 0xd2, 0xc6, 0xdb, 0x12, 0x6f, 0xc3, 0xee, 0x49, 0xa3, 0x7d, 0xdc, 0x7f, 0x3e, 0x6a, 0xbe, 0xf4, 0x18, 0x40, 0xce, 0x43, 0x19, 0xd8, 0x39, 0xc2, 0x10, 0x35, 0xc1, 0x10, 0xae, 0x96, 0xe9, 0xc2, 0x9a, 0x24, 0x17, 0x7f, 0x9d, 0x15, 0xa3, 0x9f, 0x6b, 0x4f, 0x45, 0x14, 0x62, 0xcf, 0x6c, 0xd2, 0xa9, 0x0b, 0x23, 0x13, 0x5b, 0xa9, 0x6f, 0x41, 0x62, 0x22, 0x75, 0x3d, 0x01, 0x4c, 0x02, 0xb8, 0xcc, 0x6c, 0x41, 0x79, 0x43, 0xd9, 0xf1, 0x23, 0x3f, 0xd3, 0xd1, 0x23, 0x25, 0x18, 0xf8, 0x18, 0x8f, 0x55, 0x65, 0xe9, 0x5c, 0x66, 0xe5, 0x7d, 0x27, 0xfc, 0x25, 0xb5, 0xd8, 0x06, 0xb3, 0xad, 0xc3, 0xf4, 0x33, 0x87, 0x92, 0xaa, 0x53, 0xb0, 0xe9, 0x28, 0xae, 0x8d, 0xc3, 0xb2, 0x32, 0xe2, 0x24, 0x5f, 0xa6, 0xf3, 0xe4, 0x01, 0x39, 0xd4, 0xfd, 0x87, 0x7f, 0x4f, 0x93, 0x4e, 0x9a, 0xbd, 0xde, 0xce, 0x35, 0x8c, 0x4e, 0xc1, 0x6f, 0xba, 0x22, 0x2f, 0xe4, 0x72, 0x3d, 0x83, 0xa1, 0x42, 0xdc, 0x71, 0x33, 0xa5, 0xb8, 0x6e, 0xa2, 0x80, 0xb1, 0x24, 0xad, 0x87, 0x69, 0x5a, 0x2e, 0x96, 0x2e, 0x64, 0xa0, 0xc3, 0x4a, 0x6d, 0xdf, 0x76, 0x97, 0x11, 0xc6, 0x98, 0x3b, 0xf7, 0x7f, 0x9f, 0x3e, 0x80, 0xf3, 0xfe, 0x1a, 0xcc, 0x10, 0x2a, 0x1c, 0xfb, 0x19, 0x7e, 0xbe, 0x32, 0x27, 0x5b, 0x98, 0x6c, 0x51, 0xb8, 0x3b, 0x6b, 0x83, 0xfb, 0x69, 0x00, 0x35, 0xe2, 0xa5, 0xa2, 0xe8, 0x18, 0x11, 0x08, 0x36, 0xe4, 0x01, 0xb8, 0xb9, 0x1d, 0xc5, 0x2f, 0xc4, 0x09, 0xfa, 0x9f, 0xa0, 0x06, 0x3e, 0x49, 0xec, 0x59, 0x3d, 0x44, 0x1d, 0x64, 0x88, 0x69, 0x6e, 0x36, 0x1c, 0xe0, 0x34, 0x39, 0x93, 0xeb, 0xff, 0xd7, 0x06, 0xff, 0xbf, 0xa4, 0x0d, 0xfe, 0x33, 0xb7, 0x74, 0x28, 0xf9, 0x9b, 0x7c, 0x2d, 0x6d, 0x06, 0x89, 0xe4, 0xdb, 0x47, 0x13, 0xab, 0xe7, 0x77, 0x23, 0x0f, 0x9a, 0x8d, 0xf1, 0xc0, 0x1f, 0x76, 0x45, 0x43, 0x52, 0xf8, 0x9f, 0x71, 0x45, 0x1f, 0x74, 0x33, 0xff, 0x7f, 0xdf, 0xc7, 0x7f, 0xb7, 0x7b, 0x18, 0x21, 0x48, 0x1d, 0x6c, 0xcb, 0x90, 0xd9, 0x0d, 0xb2, 0x93, 0xb8, 0xd3, 0x11, 0x59, 0xda, 0xdb, 0x4e, 0xf5, 0x41, 0xd9, 0x11, 0x6f, 0xdd, 0xd1, 0xe9, 0x77, 0x4f, 0x09, 0x6d, 0x64, 0xdc, 0x0d, 0xda, 0x57, 0xc9, 0xf1, 0xeb, 0x97, 0xa7, 0x3f, 0xe3, 0xb6, 0xff, 0x89, 0xdc, 0xac, 0xcb, 0x2c, 0x9b, 0x0d, 0x39, 0x3e, 0xf2, 0x82, 0xfe, 0x11, 0x0d, 0x2c, 0x2a, 0x8a, 0x00, 0x91, 0x2d, 0xc2, 0x26, 0x61, 0xbc, 0x96, 0x5e, 0x36, 0x6a, 0x4a, 0x21, 0xd8, 0x1e, 0x4b, 0xea, 0xb9, 0x1a, 0xf8, 0x58, 0xca, 0x62, 0xb6, 0x2d, 0x2a, 0x20, 0x7f, 0x9b, 0x48, 0x45, 0xe2, 0xec, 0xb8, 0xde, 0x97, 0xc0, 0xff, 0xb2, 0x18, 0x8a, 0xde, 0x33, 0x9c, 0x71, 0x14, 0x4d, 0xfa, 0xb8, 0x73, 0x4b, 0xe1, 0xd0, 0x0e, 0xa3, 0x74, 0x3d, 0xda, 0x85, 0xff, 0x9d, 0x38, 0x48, 0xd6, 0x7c, 0x42, 0x54, 0x81, 0xee, 0xe7, 0xfb, 0xd2, 0x06, 0xd6, 0x6e, 0xa5, 0x7f, 0x12, 0xad, 0x1d, 0x44, 0x24, 0x70, 0xb6, 0xaa, 0xc2, 0x16, 0x82, 0xa9, 0xbf, 0x3b, 0x1c, 0x29, 0xe7, 0xf9, 0xda, 0x4f, 0xb4, 0xf7, 0xd2, 0x7c, 0xbe, 0xb5, 0x9d, 0x91, 0x2c, 0xc5, 0x41, 0x2b, 0x2b, 0xc3, 0x9f, 0x92, 0x8d, 0x07, 0xee, 0x25, 0xea, 0xda, 0xe7, 0xda, 0x79, 0x29, 0xd9, 0xff, 0x53, 0x98, 0x35, 0xe6, 0xbd, 0x7e, 0x5f, 0x1b, 0xd2, 0xb2, 0x68, 0x2a, 0xea, 0xb6, 0xa0, 0xa1, 0xd2, 0x5a, 0xd1, 0xcb, 0x57, 0x5e, 0x2b, 0xd7, 0x94, 0x12, 0xa2, 0x69, 0xd7, 0x42, 0x50, 0x48, 0xbe, 0xdf, 0x59, 0x33, 0x1d, 0xd9, 0x93, 0x25, 0xa0, 0x36, 0xf3, 0xab, 0xa9, 0x51, 0x71, 0xb5, 0x1d, 0xad, 0x59, 0x61, 0xa5, 0xf8, 0x7e, 0xc3, 0x61, 0x8f, 0xaf, 0x42, 0x23, 0xfe, 0x3d, 0xe9, 0xe4, 0xbf, 0x62, 0xfa, 0xec, 0xfa, 0xe6, 0x67, 0x61, 0xa9, 0xbc, 0xba, 0x63, 0x2c, 0x57, 0x48, 0x0d, 0x3b, 0xa3, 0x22, 0x73, 0xea, 0x90, 0x9a, 0x37, 0x77, 0x40, 0x5b, 0xb8, 0x91, 0xba, 0x9f, 0x2e, 0xbf, 0x1f, 0x1f, 0x3f, 0xa2, 0x6d, 0x3d, 0x3f, 0x1e, 0xfb, 0x38, 0xe2, 0x35, 0xf5, 0xcc, 0xa5, 0x3a, 0xaf, 0xaf, 0x0e, 0x5f, 0x8e, 0xcf, 0x47, 0xc1, 0x12, 0xcd, 0x1a, 0xc3, 0xc4, 0x10, 0x26, 0x18, 0x66, 0xc2, 0xe3, 0x63, 0xb3, 0xd6, 0x3b, 0xc0, 0x04, 0x4a, 0xfd, 0x18, 0x26, 0xc7, 0x73, 0xd3, 0xd1, 0x61, 0xe7, 0xa6, 0x9c, 0xc5, 0xdc, 0x64, 0x55, 0x98, 0x7a, 0x61, 0xf6, 0x6e, 0x92, 0xcf, 0xb1, 0x02, 0x33, 0x2f, 0x63, 0x0d, 0x2d, 0x24, 0x39, 0x9c, 0xaa, 0x91, 0xcb, 0x39, 0x52, 0xca, 0xf0, 0x99, 0xb6, 0x1f, 0x02, 0x89, 0x97, 0x52, 0xa2, 0xdd, 0x5f, 0x70, 0x69, 0xf4, 0x8e, 0x12, 0x7d, 0x70, 0xec, 0x54, 0x75, 0xaf, 0xb8, 0x18, 0xcc, 0x56, 0x64, 0x30, 0x8e, 0x0b, 0xc0, 0x2a, 0xc2, 0xb4, 0xd6, 0xb4, 0xfe, 0xa8, 0xc9, 0xfd, 0xd4, 0x54, 0x10, 0xc9, 0x33, 0x6b, 0x73, 0xeb, 0xba, 0x96, 0x90, 0x39, 0x68, 0xaa, 0xfd, 0x45, 0x15, 0x48, 0x90, 0x04, 0x0e, 0x07, 0x40, 0x91, 0xcd, 0xb7, 0xd7, 0x9c, 0xb8, 0x46, 0xc8, 0xfd, 0xa6, 0x87, 0x18, 0x2d, 0xde, 0x74, 0x2a, 0x99, 0x5e, 0x65, 0x46, 0x88, 0x8c, 0xbc, 0x0a, 0xf6, 0x07, 0x6f, 0xc8, 0x67, 0x01, 0xcc, 0x59, 0x64, 0x7b, 0x7e, 0xf6, 0x86, 0x3c, 0x7e, 0x1c, 0x6e, 0x48, 0x95, 0xfd, 0x75, 0x16, 0x03, 0x85, 0xa6, 0x5c, 0x7b, 0x4a, 0xf3, 0xe7, 0xf4, 0xf8, 0x33, 0x46, 0xb6, 0xc6, 0x54, 0x77, 0xd0, 0xdb, 0x45, 0xf3, 0x85, 0x1d, 0x68, 0x18, 0x2c, 0x6c, 0x04, 0x20, 0xc3, 0x5e, 0xcc, 0x0a, 0x2e, 0xe8, 0xf5, 0xde, 0xcb, 0xe3, 0xb0, 0x07, 0x92, 0xc5, 0x29, 0x1f, 0x59, 0xab, 0x41, 0x22, 0x9b, 0x93, 0x3a, 0x84, 0xa0, 0x94, 0xce, 0x5e, 0x9e, 0xe1, 0xf0, 0xa2, 0x59, 0xda, 0x85, 0xad, 0xa5, 0x8e, 0xdd, 0x60, 0x33, 0x7a, 0x96, 0x7e, 0x5e, 0x69, 0xa7, 0x94, 0xf5, 0xab, 0x0f, 0xb3, 0xca, 0xd0, 0x7e, 0x84, 0x13, 0x46, 0x09, 0x9d, 0x49, 0x3a, 0x28, 0xf7, 0x6e, 0x83, 0x2b, 0xcd, 0x93, 0x8d, 0x08, 0x99, 0x07, 0x6d, 0x4b, 0x2b, 0x32, 0x6a, 0x17, 0x2c, 0x1c, 0x5c, 0xa3, 0xa3, 0xb2, 0x05, 0x5c, 0x42, 0x46, 0x89, 0xdb, 0xc1, 0x6d, 0x2f, 0x1a, 0x63, 0xcd, 0x5f, 0x67, 0x73, 0x2a, 0x64, 0xcd, 0x8a, 0x69, 0x75, 0xb7, 0xf4, 0x51, 0xcc, 0x67, 0xff, 0xcc, 0xfe, 0x6b, 0x05, 0x84, 0xf4, 0xf3, 0xde, 0x33, 0xcc, 0x6e, 0x3b, 0xd4, 0xbf, 0x50, 0x8f, 0x28, 0xe3, 0x31, 0xee, 0x22, 0xa4, 0x70, 0xe3, 0xe7, 0x44, 0xc3, 0x96, 0x51, 0xce, 0xcd, 0x50, 0x81, 0x52, 0x52, 0x7e, 0x11, 0x3a, 0x90, 0xb1, 0xb9, 0x36, 0xe3, 0xf9, 0xc1, 0x27, 0xbf, 0x3f, 0xe0, 0xed, 0xba, 0xde, 0x0f, 0x78, 0xc2, 0xf8, 0x78, 0x3b, 0x79, 0x03, 0x1f, 0x4d, 0xdb, 0x09, 0x8f, 0xeb, 0xaa, 0x7d, 0x9a, 0xf6, 0xd9, 0x11, 0xe5, 0xb7, 0x6a, 0x15, 0x79, 0x9c, 0x06, 0x29, 0x4e, 0x54, 0x01, 0x4b, 0x6f, 0xbb, 0x5a, 0xc4, 0xb1, 0x61, 0xad, 0x9c, 0xc0, 0xa5, 0x9e, 0xa5, 0xc9, 0x2a, 0x17, 0xa0, 0x05, 0xc8, 0x3f, 0xf3, 0xf4, 0xf5, 0x7e, 0x1f, 0x22, 0xf7, 0x48, 0x7e, 0x4d, 0xc5, 0xba, 0xb3, 0x8c, 0x40, 0xad, 0x15, 0x33, 0x30, 0xb1, 0x1d, 0xbb, 0x29, 0x7b, 0x11, 0xee, 0xe9, 0xa7, 0x7b, 0xcf, 0x9e, 0x6e, 0xaf, 0x6b, 0x51, 0x8c, 0x26, 0x26, 0x28, 0x42, 0x64, 0x12, 0xc2, 0xbf, 0xf6, 0x47, 0xfe, 0x06, 0x25, 0xae, 0xc9, 0x83, 0x14, 0x93, 0x86, 0x12, 0xce, 0x88, 0x1b, 0x90, 0x04, 0x6d, 0x84, 0xc5, 0xbd, 0x07, 0xb1, 0xf0, 0xba, 0x9a, 0xd2, 0xde, 0x72, 0x22, 0xe5, 0xae, 0x51, 0x18, 0x40, 0x72, 0x93, 0x91, 0x38, 0x7c, 0xa4, 0x73, 0x60, 0xe9, 0xe9, 0xf7, 0x29, 0xe4, 0xc9, 0xd2, 0xdf, 0x47, 0xed, 0x7f, 0xf9, 0xc1, 0x4c, 0x37, 0xc0, 0x2f, 0x39, 0xe5, 0x47, 0xff, 0x82, 0x53, 0x7e, 0xb4, 0xfe, 0x94, 0x1f, 0x3d, 0xf4, 0x94, 0x9f, 0x3d, 0x79, 0xfa, 0xf9, 0x2f, 0x38, 0x65, 0x6f, 0x87, 0xff, 0xcb, 0x4e, 0xd9, 0xa3, 0xb4, 0x5f, 0x76, 0xca, 0x92, 0x14, 0xd2, 0x2d, 0x3c, 0x93, 0xe4, 0x17, 0x4a, 0xdf, 0x03, 0x64, 0x00, 0xa7, 0xeb, 0xf3, 0xb3, 0x61, 0x3d, 0x89, 0x74, 0xe1, 0xe3, 0xee, 0x5f, 0xd0, 0xc3, 0x22, 0x46, 0xb6, 0x83, 0x50, 0x20, 0x0d, 0x77, 0x39, 0x47, 0x17, 0xa9, 0xcd, 0xe1, 0xa6, 0xba, 0x47, 0xb4, 0x4c, 0x4c, 0xf1, 0x7f, 0xf8, 0x73, 0xe6, 0xa8, 0xff, 0x85, 0xe8, 0x51, 0x61, 0xce, 0x8c, 0x97, 0xf5, 0xd4, 0xde, 0xb4, 0xbb, 0xb9, 0x31, 0x13, 0x38, 0x07, 0x29, 0x9a, 0xfd, 0x26, 0x08, 0xd7, 0x16, 0xc1, 0x46, 0x1d, 0x35, 0x13, 0xa3, 0x14, 0x1a, 0x29, 0x50, 0x20, 0xa9, 0xe7, 0x6e, 0x9e, 0x49, 0xa1, 0x24, 0x16, 0x0d, 0xca, 0x80, 0x29, 0xdf, 0x75, 0x09, 0x4b, 0xd3, 0x94, 0x4e, 0xc6, 0x92, 0x6d, 0xbb, 0x5e, 0xb6, 0x27, 0xc3, 0x3d, 0x32, 0xcd, 0x2d, 0x99, 0x12, 0x6e, 0x53, 0xb6, 0x88, 0x80, 0x9a, 0xac, 0xe1, 0xf4, 0x4f, 0xbb, 0x09, 0x77, 0x3d, 0x4d, 0x5a, 0x62, 0x09, 0x68, 0xd4, 0xb0, 0xa7, 0xdd, 0xb1, 0x87, 0x73, 0x61, 0x19, 0x39, 0x8c, 0x14, 0xfe, 0x6e, 0x1b, 0x1c, 0x69, 0xa0, 0x13, 0x14, 0x5c, 0x42, 0xa6, 0xcb, 0x82, 0xda, 0xfd, 0x67, 0x5c, 0x36, 0xa1, 0xee, 0xcc, 0xfd, 0xb5, 0x01, 0x48, 0xae, 0x6d, 0x6c, 0x2b, 0x11, 0x2f, 0x4f, 0xee, 0x35, 0x4e, 0x77, 0xb6, 0x5a, 0x2c, 0x15, 0xf4, 0x0d, 0x55, 0x1c, 0x39, 0x95, 0x0b, 0x49, 0xe1, 0x77, 0xac, 0x47, 0x7a, 0x5a, 0x79, 0x5e, 0x26, 0x49, 0x6e, 0x63, 0x8f, 0x95, 0x9e, 0x95, 0x00, 0x18, 0xf0, 0x02, 0x28, 0x71, 0x8d, 0x4a, 0x26, 0x80, 0x23, 0x95, 0x5d, 0x04, 0xa9, 0x07, 0xd4, 0x42, 0x81, 0xa2, 0x93, 0xd9, 0x64, 0x75, 0xa9, 0xb5, 0xd3, 0xb6, 0xd3, 0x57, 0x9b, 0x2a, 0xa9, 0xce, 0x04, 0x68, 0x2a, 0x99, 0x76, 0x5e, 0x0f, 0x41, 0x24, 0x1a, 0xf4, 0xb8, 0x9b, 0xae, 0x4b, 0x0e, 0x0b, 0x16, 0x4e, 0xc4, 0xde, 0x5a, 0x39, 0xfd, 0xa4, 0xd5, 0x81, 0x29, 0xd2, 0x43, 0xc8, 0x27, 0x95, 0x66, 0xba, 0x1c, 0x5e, 0xa4, 0x80, 0x60, 0x0c, 0x0a, 0x68, 0x25, 0x21, 0x54, 0xae, 0xc0, 0xf9, 0xab, 0xd3, 0xe4, 0x4d, 0x2a, 0x7d, 0x57, 0x92, 0x2d, 0xc3, 0x81, 0x9f, 0x3d, 0xde, 0x7b, 0xb4, 0xbd, 0x56, 0x0f, 0x6f, 0xc3, 0x0a, 0xd1, 0xb7, 0x8a, 0x32, 0x96, 0x98, 0x7b, 0xbe, 0xaa, 0x8a, 0x44, 0xf1, 0x4a, 0xcc, 0x97, 0x3e, 0xbc, 0x3b, 0x79, 0x7d, 0x78, 0xfc, 0xf2, 0x4f, 0xb6, 0x3a, 0x1e, 0x9b, 0xa0, 0x15, 0x96, 0x1f, 0x8c, 0xf9, 0x7a, 0xf7, 0xa1, 0xce, 0xcc, 0x9c, 0x9b, 0xad, 0x47, 0xdb, 0xa8, 0x50, 0x0a, 0xba, 0xe3, 0x5d, 0x66, 0x6d, 0x4c, 0x01, 0xce, 0x93, 0x5e, 0x03, 0x8c, 0x63, 0x1d, 0x94, 0xbb, 0xa3, 0x7d, 0xe9, 0xae, 0x20, 0xf0, 0xf0, 0x8e, 0x67, 0x79, 0x9d, 0x1e, 0x52, 0x81, 0xcf, 0xe2, 0x1a, 0xc4, 0xb0, 0x12, 0x05, 0x00, 0x06, 0xf9, 0x34, 0x87, 0xb5, 0x22, 0xd7, 0x3a, 0x47, 0x18, 0xfe, 0xa2, 0x0d, 0xbf, 0x47, 0x45, 0x8a, 0xf8, 0xc5, 0xfa, 0xb0, 0x72, 0x9b, 0xf7, 0x37, 0x24, 0x2c, 0xb2, 0x79, 0x91, 0x35, 0x43, 0x99, 0xd8, 0x0b, 0xf3, 0xe7, 0x17, 0xd7, 0xe9, 0x3c, 0x28, 0x7d, 0x45, 0x73, 0x39, 0xa5, 0x4c, 0xcb, 0x8a, 0xf0, 0xa6, 0xd7, 0x59, 0x62, 0x6c, 0x5b, 0x2c, 0xe8, 0x93, 0xe6, 0xaa, 0x04, 0x9d, 0x14, 0xce, 0xcf, 0xff, 0x74, 0x7a, 0xf8, 0xc5, 0x0b, 0x30, 0xb2, 0x3f, 0x22, 0xc7, 0xbe, 0x6e, 0xf1, 0xb5, 0x04, 0xcd, 0xac, 0x83, 0x35, 0xfc, 0xf0, 0xfa, 0x68, 0x7c, 0x7a, 0x7c, 0xf2, 0xea, 0x8b, 0x17, 0x3f, 0xc0, 0xa6, 0x34, 0xc2, 0xe3, 0xce, 0x7b, 0xd7, 0xfe, 0xcc, 0xa2, 0xc5, 0x87, 0xc0, 0x09, 0x87, 0xdf, 0x7f, 0x38, 0x7c, 0xf7, 0xdd, 0x17, 0x2f, 0xae, 0xd3, 0x6a, 0x80, 0xf5, 0xf1, 0xdb, 0x3d, 0xbd, 0x1b, 0x5b, 0xa4, 0x06, 0xf5, 0x7c, 0x32, 0xff, 0x58, 0xe7, 0x7f, 0xcb, 0x12, 0xf3, 0xfa, 0x7c, 0x15, 0xc2, 0x35, 0x9f, 0x4b, 0x3f, 0x20, 0x23, 0xbb, 0x61, 0x0e, 0x7d, 0x75, 0xfc, 0x2d, 0x20, 0x41, 0xad, 0x9f, 0x74, 0xc1, 0x0d, 0x68, 0x92, 0x3f, 0x3e, 0xd9, 0xdb, 0xdf, 0x76, 0x6d, 0x0f, 0x09, 0x52, 0xd8, 0xcc, 0xf8, 0x63, 0x50, 0x1d, 0xf2, 0x37, 0xa9, 0x73, 0x71, 0x5d, 0x40, 0x1a, 0x67, 0x51, 0x91, 0xc0, 0x50, 0x97, 0x13, 0xa1, 0x02, 0x50, 0xfe, 0x2b, 0xba, 0x46, 0x56, 0x04, 0xaf, 0x14, 0x78, 0xdc, 0xce, 0xdf, 0x78, 0x58, 0x1e, 0x5f, 0x39, 0xd2, 0x33, 0xd3, 0x11, 0xaf, 0xdd, 0x5a, 0xf9, 0xf8, 0x09, 0x63, 0x39, 0x5d, 0x93, 0x92, 0x36, 0xdb, 0x88, 0x34, 0xa1, 0x9f, 0xf8, 0x3e, 0x7b, 0x39, 0x3e, 0x54, 0xe9, 0x52, 0x32, 0x06, 0x1d, 0xad, 0x52, 0x09, 0x4f, 0x4b, 0xa7, 0xef, 0xf1, 0xe1, 0xe5, 0x0b, 0xd4, 0x58, 0x66, 0x75, 0xa2, 0xfe, 0x1d, 0xcf, 0x7b, 0x33, 0xcf, 0x2e, 0xd3, 0xe9, 0x9d, 0x45, 0xd2, 0xa5, 0x03, 0x99, 0x75, 0x6f, 0x27, 0x79, 0xf8, 0xa6, 0x30, 0xe6, 0x8c, 0x08, 0xbe, 0x24, 0xf6, 0xcc, 0x90, 0x11, 0xe6, 0xba, 0x5a, 0xa7, 0x0f, 0x4f, 0xcd, 0x82, 0x62, 0xa8, 0xb8, 0xc4, 0xa6, 0x76, 0xa5, 0x73, 0x7b, 0x8b, 0x3b, 0xd4, 0x07, 0xb2, 0xa1, 0xa6, 0xac, 0x6b, 0xf7, 0xf4, 0x71, 0xdb, 0x63, 0xfe, 0x37, 0xba, 0xe4, 0x40, 0x1b, 0x22, 0xa7, 0xec, 0x0b, 0xfc, 0x35, 0x8e, 0x37, 0x4e, 0x7d, 0x8a, 0xc8, 0x6d, 0xc1, 0x7d, 0x77, 0x19, 0xdc, 0x1d, 0xcb, 0xb6, 0x38, 0x71, 0xd2, 0xbe, 0x03, 0xb0, 0xd5, 0x8d, 0x73, 0xa7, 0xc7, 0xb1, 0xbc, 0xac, 0x53, 0xdb, 0x90, 0x67, 0x66, 0x5b, 0xfe, 0xf4, 0x8c, 0x67, 0x0b, 0x11, 0xf1, 0xfb, 0x88, 0x63, 0x53, 0x92, 0x11, 0x5e, 0x60, 0x2c, 0xb0, 0x44, 0xe8, 0x24, 0x66, 0xa7, 0xfe, 0xa8, 0x51, 0x1f, 0xea, 0xf0, 0x52, 0x0a, 0xc2, 0x14, 0x3d, 0xc4, 0x88, 0x19, 0x75, 0x08, 0x37, 0xc0, 0xd9, 0xed, 0xea, 0x38, 0xe0, 0x04, 0x0d, 0x84, 0xd4, 0x2c, 0x7c, 0xae, 0x99, 0x66, 0xad, 0x5a, 0x29, 0x8a, 0xbd, 0xc8, 0x4c, 0x77, 0x00, 0x9b, 0x91, 0x9a, 0x6b, 0xaf, 0x3a, 0x49, 0x81, 0x8f, 0x79, 0x65, 0x92, 0x8e, 0x40, 0x13, 0xda, 0x5a, 0x60, 0x21, 0x82, 0xc3, 0xce, 0xa0, 0xf7, 0x7d, 0x9d, 0xab, 0x3b, 0x52, 0xca, 0x8c, 0x89, 0x11, 0x44, 0x42, 0x91, 0x4c, 0xe2, 0xf2, 0xf3, 0xce, 0x6e, 0x44, 0xaa, 0x2c, 0x1b, 0x4e, 0xe2, 0xef, 0x8a, 0x28, 0x80, 0x27, 0x6b, 0xea, 0x7c, 0x6b, 0x04, 0xbf, 0x2d, 0xd7, 0xd6, 0xd0, 0xf5, 0x34, 0xca, 0x1b, 0xab, 0xb2, 0x45, 0xa0, 0x45, 0x2c, 0xc0, 0xb3, 0x05, 0xa8, 0x62, 0xd7, 0xa7, 0xd2, 0x87, 0x50, 0x04, 0x3e, 0xb6, 0xc3, 0x25, 0x6e, 0xca, 0x82, 0xf2, 0x48, 0x89, 0x6d, 0x30, 0x58, 0x91, 0xdd, 0xf8, 0x83, 0x39, 0xbb, 0xc3, 0x0e, 0xf8, 0x29, 0xbd, 0xdd, 0xc6, 0x66, 0x42, 0x5d, 0x4e, 0xf2, 0xe2, 0xbb, 0xc3, 0xb3, 0xf1, 0xd1, 0xc9, 0xbb, 0x3f, 0x46, 0xcd, 0x61, 0xf9, 0xa5, 0xed, 0x78, 0xa5, 0x15, 0x7d, 0xae, 0xed, 0x10, 0xbc, 0x60, 0xea, 0x6b, 0xe1, 0xee, 0x35, 0x79, 0x81, 0x47, 0x82, 0x6e, 0x46, 0xd3, 0x6c, 0xd9, 0x90, 0xbe, 0xa4, 0xb6, 0xb4, 0xeb, 0xac, 0x48, 0xfd, 0x2e, 0xc8, 0x86, 0xdb, 0x1d, 0xe8, 0xdf, 0xf6, 0xec, 0xdf, 0xf6, 0x23, 0x70, 0x56, 0xfc, 0x9b, 0x47, 0xc1, 0x06, 0xc5, 0x13, 0x76, 0xbc, 0x78, 0xf9, 0x6a, 0xc9, 0xd5, 0x60, 0x00, 0x6d, 0x60, 0x80, 0x17, 0x7f, 0x01, 0x01, 0x3e, 0x3d, 0x3a, 0x9f, 0xfa, 0x2f, 0x9a, 0x87, 0xaf, 0xf7, 0xbc, 0x0a, 0x16, 0xfb, 0xdc, 0x5e, 0xec, 0xb9, 0xbd, 0xf0, 0xb9, 0xfd, 0xd8, 0x73, 0xfb, 0xe1, 0x73, 0x8f, 0x62, 0xcf, 0x79, 0xeb, 0xf5, 0xcc, 0x78, 0xd9, 0xb9, 0x75, 0x96, 0x71, 0xeb, 0x5f, 0x8f, 0x46, 0xee, 0xf8, 0x3f, 0xb3, 0xde, 0x8a, 0x6e, 0xcf, 0x4e, 0xcf, 0xb0, 0x57, 0xbb, 0xbe, 0xdf, 0xac, 0x7f, 0xd9, 0x69, 0x09, 0x6e, 0xd4, 0xc4, 0x8e, 0x8b, 0xd9, 0x7c, 0x6f, 0xef, 0xd1, 0x70, 0x9a, 0x2f, 0xaf, 0x20, 0x75, 0x5e, 0x68, 0x0b, 0x2b, 0x6c, 0x3e, 0x16, 0x2b, 0xbf, 0x58, 0xc1, 0x24, 0x0f, 0xf5, 0x90, 0xe3, 0xf1, 0x76, 0xe2, 0xe1, 0xb2, 0x08, 0x14, 0x21, 0xbd, 0x92, 0xf0, 0x3b, 0x0e, 0x95, 0x25, 0x74, 0x30, 0x07, 0xa5, 0x2e, 0xd6, 0x7d, 0x63, 0xde, 0x93, 0x09, 0x30, 0xe9, 0xea, 0xac, 0x74, 0x9a, 0x32, 0x36, 0xa3, 0x87, 0x6a, 0xe8, 0xbd, 0xeb, 0xda, 0x25, 0x2c, 0x7f, 0x7d, 0x45, 0xb1, 0xbc, 0xd0, 0x83, 0xaa, 0xe8, 0xac, 0x8e, 0x87, 0xb3, 0x2a, 0x77, 0x59, 0xc4, 0x44, 0xe5, 0xfb, 0xb3, 0xe3, 0x40, 0xb5, 0xb4, 0xed, 0xd8, 0xa9, 0xd5, 0xf2, 0x55, 0x7a, 0x7b, 0x3b, 0xaa, 0xb3, 0x1d, 0xc3, 0x4f, 0xea, 0x1d, 0xf2, 0xf7, 0xca, 0xa7, 0xaf, 0x9a, 0xc5, 0xfc, 0xd3, 0x32, 0x0c, 0xa4, 0xa3, 0x41, 0x91, 0x35, 0xe2, 0xd6, 0xfc, 0xf7, 0x8f, 0x61, 0x61, 0x29, 0xad, 0xb8, 0x9b, 0xb4, 0x06, 0xcd, 0x17, 0x05, 0x4f, 0xdc, 0x90, 0x9b, 0xbf, 0x66, 0xfb, 0x0b, 0x6a, 0xb3, 0xf7, 0x9e, 0xf2, 0x5f, 0xe2, 0x11, 0x1b, 0xe3, 0xb3, 0xd3, 0x8d, 0x81, 0x44, 0xaa, 0xcd, 0x17, 0x86, 0xe6, 0xdf, 0x09, 0x59, 0x58, 0x68, 0xa1, 0xf1, 0xe4, 0xb1, 0x24, 0x95, 0xf1, 0x1c, 0xb9, 0x91, 0x54, 0x18, 0x3a, 0xa1, 0x5f, 0xba, 0xc4, 0xba, 0xaa, 0xd5, 0xec, 0xc6, 0xd8, 0x3e, 0xed, 0x05, 0x72, 0xb6, 0xcb, 0x80, 0x33, 0x18, 0xd6, 0xa8, 0x34, 0x0e, 0xdb, 0x0d, 0x4d, 0xce, 0x31, 0xcf, 0x51, 0xc7, 0x3b, 0x5e, 0x56, 0x1f, 0x05, 0xef, 0x5f, 0x7c, 0xfc, 0x74, 0xb1, 0x82, 0x16, 0xac, 0xad, 0x8b, 0x66, 0xdd, 0x82, 0xe2, 0x5b, 0xb4, 0x6b, 0x96, 0x0d, 0x1b, 0x24, 0x72, 0x07, 0xfa, 0xfa, 0x8c, 0x4a, 0xeb, 0x4f, 0x68, 0x27, 0x5f, 0x17, 0x2b, 0x1c, 0x0a, 0x0d, 0xa4, 0xe3, 0xc8, 0x30, 0xf7, 0xe0, 0x51, 0x3c, 0xee, 0x9c, 0xbe, 0x6e, 0x5e, 0xe4, 0xd8, 0x5d, 0x67, 0x71, 0x3a, 0x24, 0xd2, 0xe7, 0x15, 0x72, 0x2f, 0x42, 0x12, 0x02, 0x8b, 0xd5, 0x5b, 0x49, 0xa5, 0xf8, 0x11, 0xde, 0x89, 0x8c, 0x34, 0xf0, 0x24, 0x2c, 0xca, 0x9d, 0xb5, 0x87, 0x79, 0x7f, 0xff, 0x82, 0xfc, 0xf5, 0xd0, 0xdb, 0xd1, 0x64, 0x63, 0x2c, 0x49, 0x93, 0x31, 0x1f, 0xb4, 0x20, 0x07, 0x68, 0xd6, 0xbb, 0x24, 0x0d, 0xce, 0xb7, 0x17, 0xe5, 0x56, 0xe5, 0x2d, 0xcb, 0x51, 0x29, 0x96, 0x16, 0x90, 0xde, 0x83, 0x16, 0xda, 0x5a, 0x29, 0xc4, 0x43, 0x94, 0xa9, 0x46, 0xbc, 0xdd, 0x9e, 0x38, 0x24, 0xf1, 0x67, 0x56, 0xcf, 0x5a, 0x31, 0xc3, 0x67, 0xac, 0xa9, 0x28, 0xa0, 0xf0, 0x96, 0xb8, 0xbd, 0x31, 0x8a, 0xf6, 0x2a, 0x58, 0x53, 0x07, 0x1b, 0x0a, 0x09, 0xc8, 0xae, 0x38, 0xff, 0xbf, 0x77, 0xae, 0x7b, 0x9d, 0xb9, 0xfe, 0x0b, 0xa6, 0xba, 0xff, 0xcb, 0x76, 0x75, 0xff, 0xbf, 0x60, 0x57, 0x1f, 0xfd, 0xc2, 0x5d, 0x7d, 0xf4, 0xab, 0xef, 0xaa, 0x6b, 0xa0, 0xac, 0xf2, 0x31, 0x6f, 0x77, 0x44, 0xe1, 0xe4, 0x6b, 0xf4, 0xde, 0x9d, 0x40, 0x3d, 0x14, 0x35, 0x01, 0xa5, 0xe7, 0x19, 0xb5, 0x92, 0xed, 0xac, 0xbc, 0xb1, 0xa8, 0x19, 0x16, 0xff, 0x5d, 0x1c, 0xcf, 0x82, 0xc5, 0x0b, 0x66, 0xff, 0x55, 0x09, 0xbb, 0xc9, 0xf0, 0xc4, 0x41, 0xf2, 0x6e, 0x3c, 0xe6, 0x64, 0x83, 0x31, 0x05, 0x4c, 0xba, 0x96, 0x34, 0x5c, 0x10, 0xa4, 0xd9, 0x6c, 0x41, 0x60, 0x9e, 0x98, 0x19, 0x3a, 0xc2, 0xe2, 0xf7, 0x16, 0xe9, 0x14, 0x3f, 0xde, 0x1d, 0xed, 0xb9, 0xcd, 0xd9, 0xfe, 0x19, 0x30, 0x37, 0x2e, 0x9a, 0x11, 0xd5, 0xb9, 0x23, 0x80, 0xb4, 0x88, 0xcf, 0x42, 0x3e, 0xb7, 0x8f, 0xe6, 0x56, 0xa8, 0x47, 0xd5, 0x99, 0x7e, 0xe8, 0x53, 0xea, 0x6f, 0x23, 0x01, 0x29, 0x8c, 0x61, 0xdd, 0x26, 0x14, 0x79, 0x65, 0x94, 0x86, 0xf0, 0xe2, 0x77, 0x5d, 0xf6, 0xdc, 0x82, 0xfa, 0xe7, 0xc6, 0x93, 0xbc, 0xd8, 0xcd, 0x7f, 0x59, 0x3c, 0xe9, 0x41, 0x5a, 0xb1, 0x7f, 0x65, 0xaa, 0xa1, 0x36, 0x8e, 0x89, 0xa3, 0xd3, 0x3a, 0x77, 0x02, 0xf2, 0xff, 0x09, 0xb8, 0x6a, 0xc6, 0xa4, 0x83, 0xf8, 0xfa, 0xa1, 0xbc, 0xeb, 0xbc, 0xfa, 0x9c, 0xb5, 0x11, 0xa2, 0x4b, 0x94, 0x9a, 0x6b, 0x6b, 0xf1, 0x14, 0xb4, 0xa0, 0x9d, 0x57, 0x59, 0x33, 0xc5, 0xad, 0x0a, 0xfd, 0x8c, 0xab, 0x0c, 0x27, 0x64, 0x97, 0xb0, 0x6f, 0x71, 0xc6, 0xb8, 0x1f, 0xf9, 0x7d, 0x32, 0xe2, 0x69, 0x7b, 0xbd, 0xe9, 0x34, 0x1b, 0xa6, 0xf5, 0x34, 0xcf, 0xe3, 0x8d, 0xeb, 0x34, 0xfa, 0x83, 0x70, 0x3b, 0xf9, 0xed, 0xd0, 0x23, 0x1b, 0x9e, 0x76, 0xed, 0x43, 0x9b, 0x17, 0x82, 0x84, 0x81, 0xe9, 0x96, 0xab, 0xe6, 0xb2, 0x54, 0x17, 0xde, 0x20, 0xe2, 0x0e, 0x80, 0x2f, 0x9e, 0x8e, 0xd8, 0x9c, 0xce, 0xb4, 0xca, 0x97, 0x84, 0xb2, 0xe7, 0x37, 0xbd, 0x19, 0xd8, 0x9e, 0xb0, 0x64, 0x62, 0x4b, 0xcc, 0x84, 0x5b, 0xa4, 0xbe, 0x0f, 0x10, 0x08, 0x36, 0x86, 0x1b, 0x70, 0x66, 0xd8, 0x5e, 0x21, 0xe6, 0x5d, 0x60, 0xa3, 0x7a, 0xd1, 0x0a, 0xee, 0xb7, 0xdd, 0x1f, 0x7c, 0x53, 0xe7, 0xa5, 0x21, 0xa1, 0x3b, 0xc5, 0xdf, 0x24, 0x38, 0x74, 0x0d, 0x4a, 0x40, 0x45, 0x34, 0x77, 0x10, 0x4e, 0xb5, 0x52, 0xea, 0xf3, 0xaf, 0xb2, 0x5b, 0xae, 0x1e, 0x0b, 0x95, 0x4d, 0x51, 0x6f, 0xaf, 0xa8, 0x3b, 0x0d, 0x9e, 0x7d, 0x39, 0x7e, 0x75, 0x74, 0xd4, 0xaa, 0x35, 0xc3, 0xe6, 0x31, 0x78, 0x1f, 0x01, 0x02, 0xd4, 0x00, 0x31, 0x44, 0xa8, 0x26, 0x16, 0x7b, 0xe3, 0x4e, 0x58, 0xe6, 0xfa, 0x91, 0xbf, 0xd5, 0x70, 0x82, 0x5c, 0xfb, 0x94, 0xa5, 0x9c, 0xd7, 0xb1, 0x2a, 0xcc, 0x34, 0x73, 0x40, 0xcb, 0x5c, 0xad, 0x16, 0x69, 0xf1, 0xe9, 0xc1, 0x33, 0xe2, 0x29, 0xdc, 0xb2, 0x5b, 0x7c, 0xaf, 0xfc, 0xf8, 0x4e, 0x48, 0x6b, 0x11, 0xd8, 0xf1, 0xd3, 0x4a, 0x9a, 0x52, 0x31, 0x4e, 0x8c, 0xe0, 0x86, 0xa3, 0x6b, 0x32, 0x50, 0xbc, 0x78, 0x64, 0xb3, 0x56, 0x0d, 0x19, 0x31, 0x24, 0xaf, 0x30, 0x92, 0x48, 0x73, 0x6a, 0x71, 0x9e, 0xaf, 0xad, 0x91, 0xd9, 0xeb, 0x8a, 0x4a, 0xfa, 0xc8, 0xbf, 0xf2, 0x06, 0xf8, 0x17, 0xe0, 0x5e, 0xfa, 0x97, 0x0b, 0xd0, 0x73, 0x03, 0x28, 0x3f, 0xde, 0xb5, 0xd8, 0xb9, 0xff, 0x12, 0x90, 0x7f, 0x61, 0xe3, 0x77, 0x1b, 0x71, 0x60, 0xfa, 0x07, 0xdc, 0xa4, 0x16, 0xec, 0xc2, 0xbf, 0x96, 0xd2, 0x22, 0x38, 0x10, 0x1e, 0x13, 0xf3, 0xcf, 0x74, 0x55, 0xe4, 0xb7, 0x94, 0xc6, 0x6d, 0x54, 0x89, 0x17, 0x00, 0x65, 0xef, 0x01, 0x1c, 0x7f, 0xc5, 0x8a, 0x4d, 0xa2, 0x59, 0xe9, 0xb4, 0x8a, 0xf7, 0xe6, 0xe5, 0x64, 0x56, 0x2e, 0x10, 0xd5, 0xe7, 0x31, 0x06, 0x3e, 0xf2, 0x2b, 0xb1, 0xf5, 0x48, 0x56, 0x40, 0x91, 0x35, 0x30, 0xfc, 0xd6, 0xfa, 0xb3, 0xdb, 0x31, 0x82, 0x73, 0xea, 0xf0, 0xb4, 0x44, 0xaa, 0xf0, 0x9a, 0xfe, 0xa1, 0xec, 0xe6, 0xf7, 0x12, 0x73, 0x7d, 0xc0, 0x50, 0xf8, 0xaf, 0x5d, 0x9b, 0x11, 0xa1, 0x1f, 0x91, 0xfa, 0x04, 0x3a, 0x1f, 0x4b, 0x60, 0xb0, 0xdd, 0x11, 0x5c, 0x6f, 0x91, 0xbc, 0xeb, 0x8f, 0xa4, 0xee, 0x15, 0x2e, 0x68, 0x23, 0x7d, 0xbf, 0x42, 0xd9, 0xdd, 0x69, 0x72, 0x32, 0xf2, 0xfa, 0x2d, 0xb6, 0x7a, 0xb0, 0x10, 0x0a, 0x53, 0x3e, 0x07, 0xf9, 0xef, 0x68, 0x4c, 0x73, 0x1e, 0x66, 0xdc, 0xba, 0xc6, 0x1e, 0xcc, 0xea, 0x50, 0xde, 0x41, 0x71, 0x0d, 0xfc, 0x9b, 0x00, 0x54, 0xd4, 0x59, 0xd5, 0x5e, 0x84, 0x34, 0xeb, 0xe9, 0xaa, 0x2f, 0x5e, 0xd4, 0xe9, 0x0a, 0xbd, 0x5e, 0x75, 0x5e, 0x15, 0x13, 0x62, 0xbb, 0x9b, 0xaf, 0x06, 0xb2, 0xbc, 0x6e, 0x05, 0x91, 0x6e, 0xef, 0xa2, 0x9f, 0x89, 0x1a, 0xc5, 0xb8, 0x7a, 0x28, 0xb1, 0x01, 0x3c, 0x3a, 0xb2, 0x73, 0x6c, 0x6b, 0x49, 0x3e, 0x58, 0x6e, 0x4a, 0x2b, 0x95, 0x7c, 0x01, 0x6e, 0x60, 0x3e, 0x6f, 0x65, 0x4b, 0xaf, 0xa4, 0x2b, 0x9d, 0x14, 0x68, 0x6c, 0x19, 0x65, 0x9d, 0x95, 0x36, 0xbe, 0x3c, 0x80, 0x36, 0x57, 0xe0, 0xd9, 0x7e, 0x50, 0xd2, 0x28, 0xa8, 0x4b, 0x3b, 0x6d, 0x05, 0x9c, 0x63, 0x2b, 0x55, 0xec, 0x36, 0x78, 0xc8, 0xb7, 0x55, 0xed, 0x34, 0x37, 0x3c, 0x2f, 0x7c, 0x72, 0x0f, 0x7c, 0xda, 0xd2, 0xde, 0x44, 0xd8, 0x52, 0xf2, 0x52, 0x30, 0x73, 0x33, 0xb8, 0x79, 0xba, 0xdf, 0x19, 0xf9, 0xdf, 0xe1, 0x14, 0xf9, 0xed, 0x00, 0x69, 0xfd, 0xae, 0xdb, 0x7b, 0xd5, 0x7e, 0x1b, 0xf3, 0xd4, 0x4a, 0x50, 0x99, 0x19, 0xa5, 0x14, 0x22, 0x9f, 0x92, 0xc2, 0x8d, 0xe1, 0x4d, 0xa4, 0xd2, 0x64, 0x7a, 0x89, 0xd2, 0xba, 0x09, 0x3e, 0x4f, 0xba, 0x24, 0x70, 0x9e, 0xa5, 0x70, 0x34, 0xc6, 0xc8, 0x93, 0xd5, 0x22, 0x84, 0xc3, 0xc0, 0x69, 0x81, 0x8f, 0x86, 0xba, 0x37, 0x45, 0x5b, 0x75, 0xf8, 0x85, 0x42, 0xe0, 0x68, 0xe1, 0x75, 0xb6, 0x8d, 0x90, 0xd0, 0x59, 0xa1, 0x54, 0x04, 0xf8, 0x3e, 0xb4, 0x79, 0xc1, 0x12, 0x4e, 0x0e, 0xf1, 0x46, 0x38, 0xd8, 0xef, 0xa5, 0x3f, 0x43, 0xee, 0xf7, 0x3a, 0xa3, 0x96, 0xc1, 0x01, 0x5d, 0x09, 0xe5, 0x09, 0x70, 0x35, 0x55, 0xf5, 0x8e, 0xa4, 0x8d, 0x07, 0x94, 0x76, 0x55, 0x33, 0x93, 0x8d, 0xcb, 0x79, 0x39, 0x99, 0x98, 0x85, 0x6f, 0x78, 0x4a, 0xa9, 0xf9, 0x72, 0xe0, 0x45, 0xf3, 0xe7, 0x61, 0x2c, 0xab, 0x4b, 0x8a, 0x69, 0x0c, 0x38, 0x1b, 0x45, 0xa0, 0x9f, 0x21, 0x90, 0xb5, 0x7c, 0x4a, 0xbe, 0xaf, 0x48, 0xaf, 0x11, 0x39, 0x23, 0x79, 0xb1, 0x42, 0x18, 0x58, 0x98, 0x97, 0xe5, 0x2c, 0xd5, 0x84, 0xf8, 0xa9, 0x4e, 0x90, 0x33, 0x8c, 0x92, 0xbe, 0x24, 0xb9, 0x56, 0xa3, 0x8d, 0x81, 0xf6, 0x59, 0xca, 0xeb, 0xd0, 0xab, 0x4a, 0xbb, 0xd0, 0x5e, 0xd0, 0xc6, 0xdf, 0xf1, 0xc7, 0xde, 0x00, 0xff, 0xdd, 0xff, 0xc7, 0x06, 0x39, 0x5e, 0x0f, 0x76, 0x76, 0x6e, 0x6e, 0x6e, 0x46, 0x82, 0x24, 0x3f, 0x32, 0x47, 0xf6, 0x59, 0x58, 0xef, 0x03, 0xf4, 0xa5, 0x9e, 0x0f, 0x9c, 0x27, 0x1b, 0xf9, 0xe2, 0xf2, 0xcf, 0x7b, 0xc3, 0xbd, 0xdd, 0xdd, 0xdd, 0x9f, 0x46, 0x4b, 0x6c, 0xf1, 0x05, 0x0d, 0x6b, 0xfe, 0xeb, 0x0f, 0xbb, 0xc3, 0x33, 0xd9, 0x89, 0x02, 0xda, 0xc9, 0x46, 0x5a, 0xe4, 0x86, 0x82, 0x41, 0xc9, 0x99, 0x90, 0x0f, 0x3c, 0x26, 0xc3, 0xf1, 0xa3, 0xb4, 0xbf, 0x7a, 0x96, 0xfb, 0x03, 0xc1, 0x79, 0xfa, 0xe4, 0xd1, 0xfe, 0x7e, 0xc2, 0x2a, 0x07, 0x17, 0xa5, 0x70, 0x08, 0x13, 0xf5, 0xc8, 0xd2, 0x40, 0x95, 0x65, 0xd9, 0x14, 0xb0, 0x4c, 0x15, 0xf7, 0x67, 0x2c, 0x2f, 0x7a, 0x12, 0xb9, 0x38, 0x62, 0x68, 0x04, 0x25, 0x50, 0xe2, 0xca, 0xd9, 0x9d, 0x1b, 0xd8, 0x50, 0x79, 0x05, 0xde, 0xca, 0xbd, 0xce, 0x1a, 0x81, 0x98, 0x80, 0xb6, 0x12, 0xd1, 0xda, 0x6c, 0x81, 0x09, 0x09, 0x39, 0x02, 0x01, 0x2c, 0x4a, 0x69, 0xe3, 0x49, 0xf1, 0xba, 0x8b, 0x55, 0x25, 0x3d, 0x1c, 0x28, 0xbc, 0x79, 0x93, 0xde, 0xb5, 0x84, 0xbd, 0xd9, 0xf1, 0x17, 0xe6, 0x3f, 0x7d, 0x8d, 0xb7, 0x53, 0xed, 0x41, 0x79, 0x91, 0x35, 0xd3, 0xab, 0x00, 0xd3, 0x96, 0xd8, 0x37, 0x54, 0xf7, 0x2b, 0xb3, 0x1a, 0x0b, 0x19, 0xdb, 0xd7, 0xdf, 0xca, 0x55, 0xe3, 0x99, 0x41, 0x81, 0x66, 0x4e, 0xf9, 0xc8, 0xdc, 0xee, 0x96, 0x79, 0x62, 0x44, 0x39, 0xf2, 0xb4, 0x3a, 0x4c, 0x05, 0x99, 0x62, 0x79, 0xad, 0xd5, 0x82, 0xd3, 0xab, 0x6c, 0x21, 0xfc, 0x72, 0x4b, 0x13, 0xa5, 0x36, 0x84, 0x08, 0x37, 0x42, 0x91, 0xb6, 0x71, 0x21, 0xbf, 0x31, 0x8b, 0xd9, 0x96, 0x6a, 0x3b, 0x2b, 0xe5, 0xa4, 0xd5, 0xc3, 0xe5, 0x0a, 0x56, 0xe3, 0x24, 0x15, 0x71, 0xa2, 0x65, 0xa0, 0x7d, 0xf9, 0x8c, 0xe0, 0x89, 0x59, 0x45, 0x52, 0x0c, 0xfe, 0x97, 0xa1, 0xe8, 0x3e, 0x22, 0x54, 0x29, 0xac, 0x6c, 0x6e, 0xec, 0xeb, 0xa3, 0x57, 0xe7, 0x54, 0xfa, 0x36, 0xa0, 0x24, 0xf9, 0x01, 0xd5, 0xbb, 0x85, 0x6d, 0x38, 0x4e, 0xc9, 0x3f, 0x42, 0x84, 0x2a, 0x4d, 0x0a, 0x53, 0x97, 0x58, 0xe3, 0x30, 0x56, 0xb5, 0x7a, 0xc5, 0x6b, 0xa0, 0x12, 0xc9, 0x18, 0x6c, 0x69, 0x89, 0x36, 0x1d, 0xe9, 0xf1, 0x93, 0xd1, 0x2e, 0xaf, 0xd1, 0x75, 0xf8, 0xd4, 0xfa, 0x0c, 0x72, 0x23, 0xd5, 0x02, 0x77, 0x99, 0xc6, 0x23, 0x85, 0x76, 0x3a, 0x83, 0x84, 0xb1, 0x5d, 0xb9, 0x80, 0x5a, 0x7f, 0xeb, 0xe5, 0x48, 0xad, 0xd5, 0x4c, 0xfd, 0x86, 0xeb, 0x20, 0xcb, 0x0e, 0x28, 0x27, 0x82, 0x02, 0xa5, 0xad, 0xad, 0x12, 0x74, 0x85, 0x58, 0x91, 0x0c, 0xd1, 0x44, 0x22, 0x1e, 0xac, 0x26, 0x2b, 0x06, 0xae, 0xb3, 0x46, 0x09, 0x29, 0x20, 0x12, 0x4b, 0xaa, 0x0e, 0x5a, 0x8d, 0xe8, 0x62, 0xfa, 0x49, 0xd0, 0xb0, 0x64, 0xf8, 0x95, 0x74, 0x12, 0x65, 0x3d, 0x39, 0x56, 0xf0, 0x81, 0xa3, 0xdc, 0xd6, 0xdc, 0x36, 0xb6, 0x5b, 0x55, 0xe1, 0x1c, 0xc1, 0x5d, 0xc8, 0xc7, 0xde, 0x74, 0x5b, 0xce, 0x9a, 0x2b, 0x3a, 0x0c, 0x31, 0xea, 0xa6, 0x94, 0x04, 0x71, 0x67, 0x3b, 0x23, 0xa5, 0xb2, 0x42, 0xa2, 0x04, 0x32, 0xf6, 0xc8, 0x3f, 0xb5, 0xf1, 0x07, 0xb8, 0xc3, 0xbf, 0x78, 0xb9, 0xd1, 0xba, 0x91, 0xb1, 0xde, 0x1c, 0x35, 0x73, 0xb7, 0xb6, 0x25, 0x23, 0x3c, 0x0d, 0x7c, 0x3f, 0xbb, 0x6d, 0x58, 0xee, 0x5f, 0x50, 0x7f, 0xcd, 0xe2, 0xd1, 0x7e, 0x52, 0xdf, 0x19, 0x25, 0x62, 0xe1, 0x6f, 0x42, 0xb7, 0x9d, 0x6a, 0x34, 0x08, 0xd0, 0xea, 0x43, 0xc4, 0x7c, 0xeb, 0x3d, 0x5e, 0x79, 0x49, 0xaf, 0x48, 0xe7, 0x12, 0xcd, 0xd2, 0x79, 0x40, 0x8f, 0x5e, 0x64, 0x49, 0x32, 0x17, 0x9b, 0xcc, 0xd3, 0xe2, 0xa3, 0x4d, 0xa7, 0xe4, 0x91, 0x06, 0x68, 0x7e, 0xc7, 0xf5, 0x63, 0xee, 0x87, 0x92, 0xb6, 0x43, 0x92, 0x31, 0xe8, 0x11, 0x03, 0xbd, 0x74, 0x91, 0x56, 0x28, 0x2c, 0xa2, 0x3d, 0x93, 0x94, 0xc7, 0xde, 0x36, 0xc0, 0xd4, 0x30, 0xd6, 0x76, 0x8c, 0x0d, 0x45, 0x18, 0x11, 0x14, 0x67, 0x45, 0xda, 0xbc, 0xd1, 0x9e, 0x7e, 0x37, 0xbf, 0x5e, 0x54, 0x71, 0xa5, 0x27, 0x61, 0xb8, 0xb6, 0xf9, 0xef, 0x81, 0x86, 0x3e, 0xfa, 0xf8, 0xb7, 0x95, 0x1e, 0xb6, 0xa5, 0xab, 0x0d, 0x96, 0xf8, 0x4d, 0xfa, 0x58, 0xbd, 0x73, 0x41, 0x9a, 0x58, 0x6c, 0x71, 0x94, 0x9c, 0x38, 0x73, 0xb2, 0x18, 0x10, 0x10, 0x66, 0x53, 0x4d, 0xc5, 0x98, 0xa4, 0xbf, 0x0f, 0xb5, 0xd7, 0x76, 0x6c, 0x07, 0xa8, 0x67, 0x0d, 0x92, 0xa1, 0xee, 0xac, 0x18, 0x68, 0xcd, 0x6e, 0xa0, 0xf8, 0x25, 0xcc, 0xe7, 0xcc, 0xc6, 0xa2, 0x69, 0x1a, 0x07, 0x31, 0xd3, 0x20, 0x1f, 0x93, 0x17, 0x11, 0xef, 0x96, 0xc3, 0x21, 0x4d, 0xdb, 0x26, 0xcf, 0x3d, 0x5e, 0x4b, 0x1c, 0x73, 0x6e, 0xe4, 0x22, 0x47, 0x9c, 0x1d, 0xda, 0xb5, 0x61, 0x69, 0x65, 0x31, 0x08, 0x50, 0x5d, 0x10, 0x35, 0x64, 0x8f, 0x13, 0x32, 0x81, 0x16, 0xd2, 0x9d, 0xd4, 0xb6, 0x38, 0x4c, 0xf9, 0x3d, 0xa5, 0x4d, 0xff, 0xcb, 0xf7, 0x34, 0x52, 0xe4, 0x4e, 0x07, 0x7a, 0x18, 0x86, 0x0a, 0x07, 0x5c, 0xc0, 0x13, 0x2c, 0xe9, 0xa4, 0xd0, 0x1b, 0x29, 0x20, 0x33, 0x39, 0x97, 0x4f, 0xd6, 0xbe, 0x8d, 0x79, 0x85, 0x96, 0x14, 0x9e, 0xff, 0x43, 0x90, 0x7a, 0x8c, 0xba, 0x19, 0xe8, 0xcb, 0xb8, 0x8d, 0x94, 0x7c, 0x64, 0x76, 0x18, 0x9a, 0x0a, 0x45, 0xf1, 0x91, 0x23, 0xe5, 0x52, 0x12, 0xa1, 0x4f, 0x64, 0x05, 0x5b, 0xf5, 0xa5, 0x45, 0x5c, 0x32, 0xe7, 0x13, 0x22, 0xa6, 0xcd, 0x18, 0x50, 0xb3, 0xd6, 0x96, 0x8e, 0xb6, 0x7d, 0xeb, 0xa5, 0xc8, 0x91, 0x1a, 0x09, 0x5e, 0x86, 0xa3, 0x31, 0xda, 0x3e, 0x36, 0xc8, 0x76, 0x51, 0x8f, 0xb4, 0xcc, 0xe0, 0x95, 0x0a, 0x42, 0xf8, 0x9d, 0x0f, 0xf4, 0x69, 0xee, 0xc2, 0x75, 0xce, 0x7b, 0xcf, 0x10, 0x46, 0x93, 0x2a, 0xcf, 0x2e, 0xa0, 0x81, 0xd0, 0x8a, 0x24, 0x73, 0x2c, 0xf0, 0x1a, 0x65, 0x69, 0x45, 0xe2, 0x0f, 0xca, 0x01, 0xca, 0x06, 0x73, 0xf2, 0x1c, 0x31, 0x4f, 0xb4, 0x9d, 0x46, 0x18, 0x42, 0x17, 0x15, 0x52, 0xb4, 0x88, 0x54, 0x2b, 0x19, 0xa2, 0x59, 0x59, 0xd4, 0x65, 0x56, 0x3c, 0x9e, 0xa0, 0xae, 0x02, 0xb7, 0xd8, 0x76, 0xaa, 0xa2, 0x2f, 0x32, 0x5b, 0x15, 0xed, 0xc6, 0x6b, 0x76, 0x12, 0xc7, 0x6b, 0xc5, 0x2e, 0x7d, 0x9b, 0x55, 0x46, 0xfe, 0x95, 0x75, 0xf2, 0xdd, 0x13, 0x4d, 0xbe, 0x92, 0x7e, 0xbb, 0xa2, 0x8a, 0xd8, 0x52, 0x37, 0x4a, 0x12, 0xe6, 0xa9, 0x07, 0xe1, 0x0b, 0x4e, 0xd9, 0x66, 0xee, 0xa5, 0xaf, 0x8b, 0x42, 0xc2, 0x46, 0x7a, 0xd1, 0xbd, 0x72, 0xe6, 0x27, 0x86, 0xfc, 0xd0, 0xe7, 0x3c, 0xda, 0x5b, 0xc5, 0xb5, 0xc8, 0x34, 0xda, 0x15, 0x88, 0x05, 0xbe, 0x3c, 0x73, 0x96, 0x93, 0x86, 0x94, 0x1c, 0x23, 0x9d, 0xec, 0xc4, 0x93, 0xf3, 0x1c, 0xee, 0x1e, 0x49, 0x2d, 0x08, 0x55, 0x40, 0x4e, 0x50, 0x16, 0xb5, 0xc6, 0xa1, 0x02, 0x77, 0x02, 0xc3, 0xd0, 0x23, 0xeb, 0x2b, 0x68, 0x62, 0xd0, 0x10, 0xc8, 0xc8, 0xef, 0x51, 0xef, 0x59, 0x3e, 0xbe, 0x3b, 0x3f, 0x7e, 0x2b, 0xa6, 0xb3, 0x63, 0x73, 0xa2, 0xd5, 0x38, 0xb3, 0x58, 0xd8, 0x0e, 0x53, 0x55, 0x58, 0x09, 0xac, 0x9b, 0xa1, 0x45, 0x45, 0x5c, 0x87, 0x8e, 0x6d, 0x1b, 0x48, 0x12, 0x42, 0x25, 0xe5, 0x2a, 0x62, 0x74, 0xe9, 0xa6, 0x46, 0x3c, 0xd9, 0x20, 0xc2, 0x9a, 0xce, 0x9e, 0x5c, 0x25, 0x46, 0xa2, 0x18, 0x46, 0xe3, 0x75, 0xd6, 0x0a, 0x39, 0x56, 0x69, 0x33, 0x65, 0x12, 0xef, 0xcb, 0xbc, 0x12, 0xb0, 0x18, 0x46, 0x03, 0x4f, 0x5e, 0x97, 0x37, 0xc5, 0xf0, 0x18, 0x55, 0x87, 0xc9, 0x71, 0x79, 0x69, 0xb6, 0xea, 0x1d, 0x29, 0x2c, 0xdd, 0x53, 0x7b, 0x7f, 0xfa, 0x2e, 0xd9, 0x82, 0xdc, 0x4d, 0x4e, 0x2d, 0xd2, 0x14, 0x9e, 0xdc, 0x16, 0xfb, 0xa2, 0x66, 0x9d, 0x44, 0x66, 0x33, 0x48, 0x0e, 0x7f, 0x78, 0xf9, 0xf6, 0xf4, 0xf8, 0xf0, 0x47, 0x36, 0x31, 0x82, 0xe5, 0xe0, 0xc7, 0x5f, 0x7a, 0x36, 0x17, 0x45, 0x68, 0x90, 0x29, 0x64, 0xe6, 0x11, 0x85, 0x99, 0x60, 0xfa, 0x64, 0xd6, 0xa8, 0x24, 0x38, 0x1e, 0x9f, 0x1e, 0x0d, 0x15, 0x26, 0x8a, 0x7b, 0xb1, 0xe5, 0x05, 0x0c, 0x24, 0x92, 0x47, 0x02, 0xe3, 0xfe, 0x6d, 0x18, 0x8c, 0xd2, 0x1b, 0x31, 0x48, 0xde, 0x69, 0x02, 0xd2, 0x80, 0x4e, 0x1c, 0x57, 0xf0, 0x75, 0x7e, 0x49, 0x01, 0xa5, 0x4e, 0xf2, 0x0c, 0x88, 0x83, 0xa6, 0x30, 0x0d, 0x92, 0xf8, 0xa9, 0x85, 0x8e, 0xc3, 0xc8, 0xaa, 0xb3, 0x39, 0xbb, 0x2f, 0x7b, 0x25, 0x24, 0x31, 0x03, 0x3a, 0x46, 0x64, 0x87, 0x07, 0xa1, 0x32, 0xc9, 0x16, 0x9f, 0xdc, 0xf9, 0xbd, 0x7b, 0x2c, 0x8d, 0xb0, 0x5c, 0x10, 0x6d, 0xc2, 0xb2, 0xfd, 0x83, 0x64, 0x63, 0xb8, 0x4a, 0x0e, 0x36, 0x3e, 0xa1, 0x8a, 0xe0, 0x7b, 0x7a, 0x23, 0xad, 0x40, 0x24, 0x5e, 0xa6, 0xae, 0x60, 0x46, 0x67, 0x60, 0x7f, 0xb5, 0x7a, 0xdb, 0xd8, 0x63, 0x6e, 0xae, 0xba, 0x48, 0x5f, 0x2a, 0x48, 0xb9, 0x8c, 0x80, 0x38, 0x14, 0xc4, 0x97, 0x32, 0x8e, 0x9b, 0x1a, 0x0d, 0x15, 0x5d, 0xd2, 0xd9, 0x8d, 0x0f, 0x16, 0xbf, 0x41, 0xb1, 0x49, 0xb1, 0xa0, 0xca, 0xd9, 0x06, 0x3a, 0x87, 0x53, 0x0c, 0xa2, 0x46, 0xde, 0x69, 0x38, 0x1c, 0xed, 0xd5, 0xe6, 0x1f, 0x37, 0x25, 0xbe, 0xba, 0x21, 0x4a, 0x15, 0x78, 0xf5, 0x06, 0x2b, 0xb0, 0x50, 0x8c, 0x31, 0x7b, 0x73, 0xe3, 0x37, 0x5f, 0x6c, 0x2a, 0x5c, 0xbe, 0x3e, 0xd9, 0x65, 0x38, 0xf4, 0x9e, 0x84, 0xf8, 0x54, 0xad, 0x96, 0xd3, 0x97, 0x8c, 0x52, 0x23, 0x35, 0x67, 0x19, 0x09, 0x6f, 0xee, 0x8a, 0xc5, 0xc8, 0x6e, 0x1c, 0x42, 0xec, 0xaa, 0x1c, 0xad, 0x99, 0xcb, 0x5c, 0xff, 0x4d, 0xe7, 0xea, 0x75, 0x8e, 0x44, 0x50, 0xc2, 0x75, 0x30, 0x9a, 0x70, 0xf3, 0xc1, 0x3e, 0x7d, 0x88, 0xe2, 0x5e, 0x64, 0x1c, 0x93, 0x26, 0x1c, 0x2d, 0x1c, 0x1a, 0x74, 0x2a, 0x72, 0x28, 0xae, 0x15, 0xba, 0x2f, 0x1b, 0x8b, 0x63, 0x88, 0x91, 0x37, 0x2b, 0x34, 0xa7, 0xe0, 0xb6, 0xce, 0xe8, 0x7a, 0xd5, 0x77, 0x53, 0xd5, 0xb5, 0xeb, 0x28, 0x8f, 0xa5, 0xad, 0xe6, 0x45, 0x43, 0x9d, 0xa0, 0x07, 0x45, 0x1d, 0x10, 0xdb, 0x6e, 0x10, 0x62, 0x58, 0x70, 0xe3, 0x1c, 0x85, 0xcc, 0xb7, 0xd1, 0xa7, 0x76, 0xac, 0x54, 0x8b, 0x03, 0xa3, 0xd8, 0xd9, 0x5e, 0x91, 0x5d, 0xbb, 0x37, 0x93, 0xf8, 0xb2, 0x09, 0x54, 0xbc, 0xbf, 0x9a, 0x89, 0xb6, 0xc9, 0xed, 0x53, 0x50, 0x0f, 0xe6, 0x82, 0x21, 0x76, 0x7e, 0xf1, 0xb4, 0xb7, 0x68, 0x58, 0xe4, 0x3b, 0xb9, 0x55, 0x75, 0x68, 0x67, 0xbd, 0x96, 0xc0, 0x99, 0x1f, 0x8f, 0x92, 0x02, 0x21, 0x76, 0x1c, 0x8a, 0x8d, 0xa2, 0xe1, 0x79, 0x4d, 0x1a, 0xc8, 0xc9, 0xbb, 0x5f, 0x8f, 0xe2, 0xad, 0xc5, 0xa9, 0xc9, 0x02, 0x87, 0xec, 0x64, 0x45, 0xec, 0x61, 0xa7, 0x68, 0x9a, 0x0e, 0x81, 0xdc, 0x4b, 0xba, 0x0f, 0x3a, 0x76, 0x24, 0xb4, 0x4a, 0xd2, 0xe3, 0x51, 0xc5, 0xad, 0x97, 0xef, 0xf0, 0x64, 0x95, 0x56, 0xdc, 0x94, 0xb4, 0xf8, 0xa8, 0xb9, 0x63, 0x18, 0x39, 0xbb, 0xcd, 0xa6, 0xab, 0xa6, 0x5d, 0xf8, 0xe2, 0xcd, 0x49, 0xe0, 0x5c, 0x68, 0x4a, 0x5b, 0x74, 0x11, 0xd4, 0x18, 0x3d, 0x55, 0x2c, 0x8e, 0x83, 0x8d, 0x6d, 0x0d, 0xe2, 0xa6, 0xa2, 0xc3, 0xf3, 0x2f, 0x62, 0xf1, 0x59, 0x9d, 0x72, 0x95, 0xb1, 0x47, 0xd5, 0xa5, 0x2a, 0x44, 0x3f, 0x6f, 0x68, 0xb4, 0x8a, 0x7e, 0xfd, 0x0d, 0xfb, 0xde, 0xbc, 0x8f, 0xdb, 0x5e, 0x64, 0xe2, 0x96, 0xab, 0x83, 0xab, 0x1c, 0x7c, 0x99, 0x9a, 0xb2, 0x1a, 0x06, 0x65, 0x1b, 0x2a, 0xeb, 0xab, 0xba, 0xf9, 0x81, 0x3b, 0xf4, 0xe8, 0xf4, 0xfa, 0xa9, 0xe7, 0xcd, 0x86, 0xc4, 0xa3, 0x1f, 0x59, 0x8e, 0x1f, 0xac, 0xe2, 0x63, 0x35, 0x79, 0x6c, 0xfe, 0xf8, 0x16, 0x7f, 0x5c, 0xb0, 0x5f, 0x40, 0xa0, 0xb4, 0xd8, 0x0f, 0x1b, 0x92, 0x36, 0x4a, 0xa1, 0x13, 0xbf, 0x9e, 0x9a, 0xea, 0x1a, 0x50, 0x9e, 0x04, 0xdc, 0x2d, 0x07, 0x81, 0x42, 0x56, 0x8d, 0x0e, 0x33, 0xe0, 0x92, 0xc1, 0x30, 0x48, 0x29, 0xff, 0x23, 0x9c, 0x28, 0xc6, 0x61, 0x1a, 0x90, 0xcf, 0x69, 0xcc, 0x0d, 0xe3, 0xca, 0x58, 0xd5, 0x98, 0xd9, 0xaa, 0xbf, 0x21, 0x50, 0x61, 0xeb, 0x57, 0xa9, 0x23, 0xf8, 0xc2, 0x16, 0x0a, 0x80, 0x00, 0x5d, 0x42, 0x07, 0xbb, 0xa7, 0x71, 0xd1, 0x98, 0x9f, 0xe5, 0x3d, 0x53, 0xe8, 0x5f, 0x32, 0x49, 0x77, 0xf9, 0x23, 0x84, 0x9a, 0xec, 0x7f, 0xef, 0x35, 0xd5, 0x4c, 0xf2, 0x8d, 0xd7, 0x2e, 0x4d, 0x50, 0xd8, 0xf4, 0xa8, 0x5d, 0xd5, 0x38, 0x3f, 0x6a, 0xb9, 0x03, 0xab, 0x25, 0x3d, 0xf3, 0x5c, 0x70, 0x53, 0x2c, 0x60, 0xed, 0x13, 0x5b, 0xf8, 0xc8, 0x3e, 0x19, 0xa4, 0x34, 0x65, 0x0b, 0x84, 0xbe, 0xac, 0x64, 0x64, 0xf0, 0x1e, 0x68, 0x56, 0xf8, 0xdc, 0x30, 0x3e, 0xdc, 0x0c, 0xda, 0x1b, 0xa4, 0x2c, 0xa7, 0x6f, 0xfd, 0x26, 0x88, 0x76, 0xd6, 0x77, 0xc5, 0xf4, 0xea, 0xf5, 0xbb, 0x71, 0xfc, 0xf5, 0xee, 0xe2, 0xe8, 0x69, 0xa3, 0x85, 0x80, 0x16, 0xd8, 0xe4, 0x14, 0xec, 0x3a, 0xb8, 0xcf, 0x5e, 0x7a, 0xbf, 0x8d, 0x0f, 0xd7, 0x7e, 0xc5, 0xba, 0x02, 0xa1, 0x59, 0x30, 0x17, 0x17, 0xc5, 0x93, 0xf2, 0xc3, 0x87, 0x29, 0xee, 0x02, 0x7b, 0x3d, 0xe2, 0xc3, 0x35, 0x57, 0x88, 0x16, 0x51, 0x5b, 0x68, 0x1a, 0xb1, 0xf2, 0x12, 0xd0, 0xba, 0x74, 0x4d, 0x6d, 0x36, 0xf4, 0x8f, 0x9f, 0x73, 0xcc, 0xc7, 0xe8, 0x2c, 0x1e, 0x09, 0x2e, 0x06, 0x3b, 0x64, 0xe3, 0x34, 0x2e, 0xf6, 0x6b, 0x48, 0x75, 0x8e, 0xd7, 0x99, 0x4a, 0x07, 0x42, 0xac, 0xf4, 0xa3, 0xaa, 0x6f, 0x49, 0x66, 0x4f, 0xf6, 0xbf, 0xfe, 0x2a, 0x94, 0x9e, 0xaf, 0xdf, 0xf5, 0x7c, 0x0e, 0xbf, 0x19, 0x6a, 0x0d, 0x91, 0x68, 0x04, 0x9e, 0x42, 0x1f, 0xee, 0x85, 0x00, 0xa0, 0xc6, 0x27, 0xa0, 0xe8, 0xa8, 0xf7, 0x70, 0x09, 0xc0, 0x42, 0xf3, 0x1f, 0x6b, 0x1f, 0x94, 0x6c, 0xe6, 0xf8, 0xa7, 0x38, 0x45, 0x9c, 0x33, 0xfc, 0x92, 0x33, 0x8e, 0xe2, 0x9e, 0x8a, 0x22, 0xbc, 0xbd, 0xee, 0x8c, 0xe2, 0xc3, 0x81, 0xbf, 0xc5, 0x80, 0x68, 0xc0, 0x16, 0xf6, 0xf9, 0x8f, 0x9d, 0x7d, 0x9b, 0x9a, 0x66, 0x0b, 0xc1, 0xe8, 0x9a, 0x1a, 0x09, 0x1e, 0x2a, 0x08, 0x45, 0x7e, 0x3b, 0xa6, 0x7c, 0x82, 0x1e, 0x6a, 0xa6, 0xc4, 0x03, 0xce, 0x38, 0xb0, 0x93, 0xc3, 0x3c, 0x55, 0x13, 0x8b, 0xce, 0x64, 0xcc, 0xee, 0xbb, 0xfb, 0x88, 0x29, 0x8f, 0x64, 0xd3, 0xad, 0x43, 0xdb, 0x7b, 0x6b, 0x94, 0x24, 0x08, 0xd7, 0x07, 0x13, 0xa9, 0xbe, 0x90, 0x6c, 0x4d, 0x8c, 0xb8, 0xf6, 0xc0, 0x33, 0x58, 0xc5, 0x7e, 0xcc, 0xc9, 0xfb, 0xf1, 0xe1, 0x9e, 0x7c, 0xfe, 0xe4, 0xf1, 0xf6, 0xb6, 0xcb, 0x70, 0xe7, 0x04, 0x99, 0x09, 0x95, 0x61, 0xe4, 0xe0, 0x5c, 0xdc, 0x0c, 0xd6, 0x6c, 0xf1, 0x15, 0x31, 0x06, 0xeb, 0x33, 0x8a, 0x0f, 0x07, 0x39, 0xa6, 0xef, 0xe1, 0x10, 0x61, 0x82, 0x13, 0x43, 0xb7, 0x86, 0x30, 0x84, 0x4d, 0xc6, 0x0f, 0xd8, 0x98, 0x4b, 0x2f, 0x57, 0x20, 0x47, 0x8a, 0xf3, 0x30, 0xc2, 0xb1, 0xc4, 0xe1, 0xe2, 0x54, 0x25, 0x6d, 0x98, 0x08, 0x7a, 0xca, 0x62, 0x8f, 0xfe, 0xa0, 0x92, 0xa7, 0x2b, 0x6d, 0x50, 0x79, 0xba, 0x9a, 0xcc, 0x8d, 0x0c, 0x1a, 0xa3, 0xa3, 0xf6, 0x6d, 0x72, 0x9c, 0x4b, 0xa7, 0x51, 0xd6, 0xc1, 0x25, 0xb9, 0xa1, 0x4f, 0xe6, 0xd0, 0xba, 0xdb, 0x84, 0x26, 0xb9, 0x9e, 0xae, 0x6c, 0x53, 0xb4, 0xb6, 0x64, 0x63, 0xc9, 0x1f, 0x42, 0xef, 0xee, 0x61, 0xdf, 0xc2, 0x6e, 0xb3, 0x3a, 0x34, 0xe3, 0xde, 0x22, 0x6e, 0x6b, 0x04, 0xf6, 0x83, 0x8f, 0xde, 0xb6, 0xf4, 0x6c, 0xa7, 0xec, 0x5a, 0xbd, 0xf3, 0x06, 0x7a, 0x27, 0x41, 0x6f, 0x20, 0x96, 0x91, 0xbc, 0x60, 0x0d, 0xb3, 0xbf, 0xc7, 0xa3, 0x96, 0x40, 0xfb, 0xba, 0x28, 0x69, 0xf5, 0xe4, 0xf7, 0x4f, 0x2f, 0x90, 0x97, 0xcc, 0x49, 0x98, 0xf3, 0x8c, 0xda, 0xd4, 0x83, 0x3f, 0x86, 0x58, 0x04, 0x15, 0xfb, 0x27, 0x79, 0x0c, 0xf1, 0x7d, 0x88, 0x07, 0x9f, 0x72, 0xeb, 0x52, 0xc2, 0x52, 0x61, 0x2f, 0x10, 0x63, 0x78, 0xb0, 0xcf, 0xcb, 0xd0, 0xce, 0x6d, 0xc0, 0x13, 0x24, 0xa5, 0xb6, 0xb8, 0x4b, 0xbc, 0x38, 0x8f, 0x16, 0x59, 0xd7, 0xad, 0x2f, 0x05, 0xae, 0x1b, 0xd4, 0x5c, 0x06, 0x3a, 0x49, 0x43, 0x36, 0xf1, 0x06, 0xcf, 0x68, 0x83, 0x8a, 0x4a, 0x35, 0x7e, 0x4e, 0xd9, 0x57, 0x6a, 0x35, 0xb0, 0xde, 0xad, 0x63, 0x8b, 0x87, 0x32, 0x8d, 0xc4, 0xd4, 0x75, 0x8e, 0x1b, 0x5f, 0x6a, 0x26, 0xd7, 0x86, 0xa6, 0x00, 0x74, 0x1a, 0xef, 0xca, 0x98, 0x32, 0x64, 0xa4, 0xce, 0x9a, 0xd3, 0x22, 0xa8, 0x63, 0x30, 0x4e, 0xcd, 0x0c, 0x39, 0xdc, 0x88, 0x2a, 0xb4, 0x76, 0x03, 0x80, 0x70, 0x4a, 0xe6, 0x6d, 0xcb, 0xec, 0xd3, 0x4f, 0xb8, 0xa8, 0x1f, 0xd2, 0xbb, 0x9b, 0xbc, 0x59, 0x85, 0x4c, 0x77, 0xa2, 0xa8, 0x80, 0x54, 0x97, 0x4e, 0x62, 0x1a, 0x87, 0xe1, 0x8a, 0xc7, 0xc9, 0xcc, 0x43, 0xc2, 0x27, 0x5a, 0xc9, 0xd5, 0x96, 0x47, 0xc0, 0xf9, 0x39, 0x2f, 0x6f, 0x82, 0x0c, 0x71, 0x58, 0x18, 0x76, 0x76, 0xed, 0xd2, 0x1f, 0xf3, 0xf6, 0xef, 0xfe, 0xae, 0xbf, 0xfc, 0x80, 0x9d, 0xfa, 0x87, 0xee, 0x94, 0x26, 0xdd, 0xa5, 0x41, 0x71, 0x34, 0xd9, 0xd6, 0xc9, 0xef, 0x68, 0x57, 0xfe, 0x82, 0xac, 0x26, 0xde, 0x1a, 0xe0, 0x92, 0xd0, 0x80, 0xbf, 0x1b, 0x59, 0x3d, 0x5a, 0x06, 0x49, 0x51, 0xed, 0x49, 0xca, 0xfe, 0xe4, 0x2e, 0x70, 0x49, 0x81, 0x0c, 0x7f, 0x2c, 0x06, 0x04, 0xb0, 0x6a, 0x4c, 0xba, 0x94, 0xda, 0xc9, 0xa3, 0x55, 0x20, 0x9f, 0xe2, 0x8f, 0x95, 0xa0, 0x8c, 0x18, 0x5b, 0xc6, 0xcc, 0x1c, 0x86, 0x1e, 0xff, 0x3c, 0x6e, 0x58, 0x68, 0x52, 0x8b, 0x78, 0x53, 0x5a, 0xc0, 0x33, 0x66, 0x1c, 0x34, 0xc0, 0x55, 0x43, 0x7c, 0xa2, 0x98, 0x0f, 0x34, 0xd5, 0xb0, 0x59, 0x36, 0x23, 0x33, 0x08, 0x24, 0x88, 0xbe, 0xcc, 0xad, 0x9a, 0x6c, 0x8e, 0xc6, 0xef, 0xfe, 0xce, 0x89, 0x80, 0xff, 0x08, 0x75, 0xdf, 0x93, 0xf3, 0xc3, 0x03, 0x9a, 0xd2, 0xef, 0x86, 0xf5, 0xdd, 0x62, 0x52, 0xce, 0xe5, 0xe2, 0x61, 0xf3, 0xcd, 0x06, 0xea, 0xcf, 0x98, 0x4a, 0x28, 0x56, 0x37, 0xf4, 0x60, 0x0b, 0x06, 0x51, 0x44, 0x7a, 0xd8, 0x61, 0xe5, 0x74, 0x4a, 0xd5, 0x64, 0x28, 0x5c, 0x30, 0x37, 0xef, 0x77, 0x89, 0x22, 0x11, 0x70, 0xd7, 0x3d, 0xe9, 0xaf, 0x28, 0x1e, 0x55, 0xed, 0x4f, 0x15, 0x0d, 0x01, 0xad, 0xa7, 0x63, 0xcb, 0xd3, 0xa3, 0x80, 0x0f, 0xe0, 0x17, 0x66, 0x9a, 0x1f, 0xa8, 0x5e, 0x4c, 0xcc, 0xdc, 0x57, 0xfc, 0xb3, 0xe1, 0x39, 0xfd, 0x4c, 0xf3, 0x68, 0xa4, 0xc4, 0x18, 0x99, 0x19, 0x52, 0x03, 0x3c, 0x08, 0xcb, 0x12, 0x93, 0x58, 0x6a, 0x1e, 0x75, 0x2a, 0x2e, 0x42, 0x89, 0xac, 0xb7, 0xfa, 0x43, 0x46, 0x30, 0x9c, 0xf9, 0x75, 0xb6, 0x7e, 0x34, 0xea, 0xeb, 0x61, 0x18, 0xf3, 0x22, 0x95, 0x64, 0x36, 0xce, 0x5e, 0xb3, 0xf7, 0x49, 0xc1, 0x90, 0x28, 0xb7, 0xd9, 0x9c, 0xf6, 0xe8, 0xbe, 0xe1, 0xb0, 0xa7, 0x5a, 0xb5, 0x21, 0x99, 0x3f, 0xf0, 0xaf, 0xe5, 0x17, 0x56, 0xc3, 0x68, 0x80, 0x08, 0x84, 0x94, 0x23, 0x8c, 0x7c, 0xcf, 0x5a, 0x4b, 0x0d, 0x51, 0x08, 0xdb, 0xe2, 0x70, 0xe5, 0xc9, 0x20, 0x71, 0xd1, 0x6d, 0x4d, 0xea, 0x4b, 0x10, 0x08, 0x5f, 0x3f, 0x9c, 0x8d, 0x92, 0xdb, 0xd0, 0xd4, 0x11, 0x35, 0x23, 0x2d, 0x39, 0xfd, 0x90, 0xe6, 0x89, 0x3a, 0x96, 0x05, 0xbc, 0xb6, 0x91, 0x38, 0x73, 0x12, 0xe1, 0xf6, 0x14, 0x1c, 0xfd, 0x0f, 0x2f, 0xda, 0xce, 0xae, 0xad, 0xa1, 0x17, 0x65, 0x37, 0xba, 0x08, 0x43, 0xdd, 0xad, 0x1f, 0x8e, 0xf3, 0xef, 0x9f, 0x8e, 0x76, 0xb7, 0x83, 0x43, 0x6d, 0x96, 0x1f, 0xa8, 0xef, 0xf5, 0x07, 0x64, 0xa9, 0xd2, 0x99, 0x69, 0x54, 0x81, 0x7e, 0x40, 0x3b, 0xcb, 0x35, 0xcb, 0xab, 0x25, 0xc6, 0x21, 0x32, 0x9f, 0x97, 0x6c, 0xb0, 0xdd, 0xb7, 0x8c, 0x76, 0x3e, 0xa8, 0x0f, 0x9d, 0xb1, 0xd5, 0xee, 0xfc, 0xf4, 0x38, 0x98, 0x18, 0x12, 0x50, 0x3e, 0x50, 0xe4, 0xda, 0x12, 0x93, 0x91, 0x7b, 0x59, 0x95, 0x4f, 0xfd, 0x36, 0x88, 0xf4, 0x00, 0x91, 0x14, 0x23, 0x02, 0x22, 0x94, 0x1d, 0x85, 0x3e, 0xed, 0xfc, 0x8f, 0xfc, 0xbf, 0x5e, 0xc8, 0xca, 0xa6, 0x3b, 0xd2, 0x69, 0x9b, 0x89, 0x22, 0xb3, 0xc6, 0x65, 0x20, 0x1c, 0xdd, 0xb3, 0x4e, 0xc2, 0x56, 0xde, 0x67, 0x94, 0xaa, 0x79, 0x9e, 0xd6, 0x76, 0x82, 0xbc, 0x02, 0xd7, 0xfb, 0x9b, 0x10, 0xa5, 0xae, 0x02, 0xf8, 0xda, 0x24, 0x12, 0x35, 0xe2, 0x58, 0xd3, 0x45, 0x39, 0xea, 0xd9, 0x19, 0x4e, 0x1c, 0xee, 0xee, 0x4c, 0xff, 0x86, 0xf0, 0x9a, 0xc3, 0xe0, 0x63, 0xd7, 0xad, 0xc0, 0x1b, 0xbb, 0x25, 0x41, 0x3c, 0x52, 0xce, 0xb7, 0xf9, 0xb6, 0x10, 0x2d, 0x78, 0xe0, 0x51, 0xc4, 0x60, 0xee, 0xb9, 0xb5, 0x5b, 0xed, 0x8e, 0x97, 0x3d, 0xe7, 0x6c, 0xab, 0xf3, 0x99, 0xa3, 0xe1, 0x67, 0x89, 0x2b, 0xd9, 0xe7, 0xe4, 0x3e, 0xea, 0xcb, 0x6e, 0x59, 0xcf, 0xfc, 0x2e, 0x89, 0xa2, 0x6a, 0xaf, 0xf9, 0xfc, 0x93, 0xdd, 0x08, 0xfd, 0x53, 0xfa, 0xf0, 0x87, 0x7c, 0xe9, 0xf1, 0x2c, 0xaf, 0x0b, 0xbd, 0x94, 0x4d, 0x70, 0x8e, 0x31, 0x52, 0x2e, 0xb4, 0x37, 0x0d, 0xe7, 0x2a, 0xdd, 0xbb, 0x99, 0x53, 0xaa, 0x3e, 0x4e, 0xd8, 0x21, 0xe0, 0x17, 0x88, 0x1b, 0xfb, 0x56, 0xb4, 0x34, 0x71, 0x10, 0x1c, 0x9d, 0x5e, 0x3f, 0x0e, 0x03, 0x51, 0x49, 0xc4, 0x5d, 0xe6, 0x2f, 0x69, 0xff, 0x79, 0xef, 0x92, 0x18, 0x47, 0x5f, 0x96, 0xc4, 0x0b, 0xf0, 0x9b, 0x5f, 0xc8, 0x42, 0x74, 0x1d, 0xfe, 0x44, 0xef, 0x59, 0x92, 0x5b, 0xc4, 0xbd, 0x33, 0x31, 0xdf, 0xfa, 0x60, 0x91, 0x99, 0x8d, 0x6c, 0xe6, 0x4f, 0xe3, 0xdb, 0x46, 0x31, 0x71, 0x98, 0xcd, 0xd4, 0x37, 0x5a, 0x88, 0x94, 0xa7, 0x12, 0xd7, 0xa8, 0x93, 0x88, 0x82, 0xdd, 0xa1, 0xaf, 0x47, 0xd1, 0x39, 0x68, 0xff, 0xc9, 0xda, 0xce, 0xc1, 0x4c, 0xc1, 0xfd, 0x90, 0xaf, 0x0b, 0x44, 0xdf, 0x45, 0x29, 0x3d, 0x61, 0xed, 0x6c, 0xee, 0x99, 0x03, 0x5f, 0x81, 0xfb, 0x67, 0x41, 0xd7, 0xe8, 0x43, 0x5d, 0xcf, 0x41, 0xea, 0xf9, 0xc5, 0x9d, 0x99, 0x52, 0xdd, 0x0b, 0x19, 0xe1, 0x0b, 0x50, 0x7e, 0x4e, 0x8f, 0xcb, 0x33, 0x98, 0x37, 0x6b, 0xf2, 0x69, 0x2e, 0x33, 0xa4, 0xdf, 0x30, 0x24, 0xf0, 0x7d, 0xc4, 0x08, 0x39, 0x4c, 0x9f, 0x77, 0x81, 0x3e, 0xe1, 0x13, 0x56, 0x59, 0x18, 0xa1, 0x27, 0xb3, 0x58, 0x82, 0xf7, 0x10, 0x42, 0x6b, 0x24, 0x0c, 0xe2, 0xa2, 0xdb, 0xed, 0x0d, 0x41, 0x21, 0x62, 0xb0, 0x21, 0xba, 0xfb, 0x1f, 0x48, 0x13, 0xe0, 0x78, 0xb4, 0x76, 0x5d, 0xb6, 0x7d, 0xc5, 0x53, 0xa1, 0x0d, 0x8d, 0x29, 0x0f, 0x8f, 0x21, 0x0c, 0xe7, 0x11, 0xc8, 0xe3, 0x24, 0x52, 0xc6, 0x4f, 0x2d, 0x6e, 0x28, 0x07, 0xdb, 0x1d, 0xf5, 0x56, 0x29, 0x15, 0xa5, 0xdc, 0x0f, 0x9c, 0x7e, 0x91, 0xf4, 0xba, 0x58, 0x5d, 0xba, 0x47, 0xb3, 0x3d, 0x50, 0xad, 0x4e, 0x55, 0x35, 0xc9, 0xb1, 0x21, 0xd4, 0x3a, 0x62, 0xfc, 0x53, 0x74, 0x83, 0xa0, 0x4c, 0xb3, 0x74, 0xfd, 0x70, 0x3a, 0x1d, 0xe9, 0x92, 0x44, 0xd6, 0xd6, 0x25, 0x01, 0xfa, 0x94, 0x1d, 0x52, 0x32, 0x42, 0x25, 0xb2, 0x73, 0x10, 0xa6, 0x96, 0x65, 0x9d, 0x3b, 0xf9, 0x1a, 0x32, 0xae, 0x7f, 0xea, 0x7a, 0xf7, 0xb0, 0xa8, 0x0e, 0x17, 0xba, 0x4f, 0x30, 0x46, 0x19, 0x83, 0xac, 0x41, 0x79, 0x94, 0xb7, 0x86, 0x3e, 0x1e, 0xf5, 0xa9, 0x58, 0x94, 0x64, 0xbf, 0xb6, 0xe2, 0x46, 0x94, 0x2c, 0x28, 0xbf, 0xd8, 0xaa, 0x1d, 0x78, 0x2a, 0x8a, 0xe5, 0x66, 0x36, 0x62, 0xb0, 0x1d, 0xc3, 0x57, 0xea, 0xaa, 0x71, 0x86, 0x82, 0x7d, 0x91, 0x45, 0xe1, 0xe8, 0x7b, 0xef, 0x06, 0x00, 0xaa, 0x3e, 0x58, 0x0c, 0x7f, 0x0e, 0xdc, 0x50, 0xdb, 0xea, 0x74, 0x61, 0xe4, 0x39, 0x31, 0x03, 0x86, 0x1a, 0x73, 0x8c, 0x4b, 0x9f, 0x8e, 0xf8, 0xe8, 0x68, 0x34, 0x09, 0x03, 0x27, 0xeb, 0x46, 0xd3, 0x1a, 0x41, 0x3b, 0x14, 0x85, 0x52, 0xef, 0xb9, 0x69, 0xc0, 0x00, 0x89, 0x7e, 0x51, 0x2f, 0xb1, 0xec, 0x29, 0x7f, 0x72, 0xcd, 0x0a, 0x3c, 0xe3, 0x7d, 0xfd, 0x17, 0x7d, 0x16, 0x11, 0xff, 0xb4, 0xa4, 0xff, 0x27, 0x0f, 0xdb, 0x3a, 0xcd, 0x60, 0x0f, 0xc7, 0x42, 0xfb, 0x02, 0x77, 0x0e, 0x18, 0x2b, 0x45, 0x22, 0xc1, 0xa5, 0xd7, 0x60, 0x81, 0x9b, 0x5e, 0x38, 0x9b, 0xc6, 0xf0, 0xce, 0x7a, 0x55, 0x71, 0x53, 0xf1, 0xfb, 0x75, 0x3c, 0xf5, 0x20, 0xd9, 0xf1, 0x00, 0x29, 0xd7, 0xee, 0xfc, 0xd0, 0x33, 0x2b, 0xbb, 0x44, 0xda, 0x5c, 0x9d, 0x96, 0x16, 0x3e, 0xfc, 0x4a, 0xb3, 0xe2, 0xd1, 0x1e, 0x32, 0xa7, 0x7f, 0x56, 0xae, 0x75, 0x25, 0x19, 0x89, 0x2a, 0x2b, 0x61, 0x1e, 0xc4, 0xec, 0xd7, 0x8b, 0xb2, 0x96, 0xb4, 0xba, 0xff, 0xce, 0xf6, 0x89, 0xb2, 0xbd, 0x28, 0x0b, 0x61, 0x24, 0x5f, 0xfd, 0xdf, 0x1b, 0x28, 0xce, 0x24, 0x2a, 0x96, 0x65, 0x0e, 0x92, 0x2b, 0x06, 0x62, 0x5b, 0xde, 0x90, 0x6d, 0xe9, 0xfc, 0x90, 0xf1, 0xba, 0xdb, 0x24, 0x92, 0x81, 0x4e, 0xae, 0x2b, 0x75, 0xaa, 0xb0, 0x11, 0xa1, 0x9e, 0x11, 0x76, 0x8d, 0x8c, 0x1e, 0xce, 0x90, 0x9f, 0x3e, 0x8a, 0xaf, 0x81, 0x66, 0xf4, 0x89, 0xd7, 0xd0, 0xef, 0x17, 0x1a, 0x25, 0x3e, 0x96, 0xe3, 0xfa, 0xe1, 0x24, 0x4f, 0x9e, 0x5d, 0x49, 0x7e, 0xab, 0xa2, 0x16, 0x60, 0x2f, 0xfc, 0xc0, 0x09, 0x3b, 0x6b, 0xef, 0xb1, 0x78, 0xe8, 0x05, 0x4d, 0xac, 0xe6, 0x02, 0xd3, 0xb6, 0xe5, 0x10, 0xdd, 0x32, 0x08, 0x85, 0x0f, 0xe9, 0x72, 0x29, 0xd2, 0xe6, 0x7e, 0x92, 0x4f, 0x18, 0xae, 0x8d, 0x9b, 0x73, 0xa2, 0x3d, 0x0c, 0x01, 0xe3, 0x35, 0x65, 0xf9, 0x91, 0x9d, 0xaa, 0x9c, 0x82, 0x8d, 0x62, 0xc8, 0x10, 0x1f, 0x36, 0x20, 0xf9, 0xb9, 0xde, 0x9b, 0x9d, 0xf1, 0xf8, 0x9b, 0x9d, 0xac, 0x99, 0xaa, 0xd4, 0xdb, 0x71, 0xd9, 0x7f, 0x62, 0x7d, 0xdf, 0xaf, 0xc5, 0x92, 0xe4, 0xa5, 0x3e, 0x5d, 0x20, 0x7e, 0xeb, 0xd7, 0x7e, 0x00, 0xed, 0xd3, 0x26, 0xb4, 0x6d, 0xd1, 0x4f, 0xb0, 0x4c, 0xa0, 0xdc, 0xea, 0x47, 0xda, 0x2e, 0x05, 0x9a, 0xf4, 0x16, 0x23, 0x45, 0x1a, 0x3b, 0xf5, 0xfe, 0x9b, 0xed, 0x16, 0x17, 0x5d, 0x0a, 0x5c, 0x2b, 0x48, 0xf9, 0x59, 0x2d, 0xff, 0x4b, 0xce, 0x93, 0x3c, 0x3b, 0x1c, 0xfb, 0xa5, 0x04, 0xa9, 0xfb, 0x27, 0xbc, 0x84, 0x0f, 0x83, 0xdd, 0x14, 0xf7, 0xcf, 0xf8, 0xc1, 0x13, 0x7e, 0xd8, 0x8c, 0x25, 0x30, 0x40, 0x3e, 0x34, 0x9d, 0x04, 0xcd, 0x99, 0xdc, 0xd3, 0x82, 0xee, 0x8b, 0x9a, 0x80, 0xcb, 0xbc, 0x78, 0x88, 0x73, 0xcf, 0xa6, 0xe8, 0xc0, 0xdf, 0x8a, 0xc6, 0xd2, 0x76, 0x50, 0x49, 0x00, 0xae, 0x25, 0x57, 0xf8, 0xb2, 0xbc, 0x77, 0x76, 0xa9, 0xc0, 0xeb, 0x42, 0x2c, 0x78, 0xce, 0xf7, 0xa9, 0xd2, 0x0f, 0xf2, 0x78, 0xf2, 0xe9, 0x0a, 0xf9, 0xc7, 0x91, 0x3e, 0xb3, 0x81, 0x1b, 0xcb, 0xe8, 0x7b, 0x5c, 0x6b, 0x75, 0x8d, 0xb0, 0x7c, 0xcf, 0x59, 0x58, 0xbd, 0xfe, 0xbe, 0xcd, 0x46, 0xea, 0xf5, 0x7c, 0x6e, 0xed, 0x80, 0x7b, 0x45, 0x92, 0x11, 0x67, 0x4b, 0xdd, 0x1e, 0xd0, 0x05, 0x91, 0x09, 0x93, 0xe9, 0x40, 0x2f, 0xc6, 0x20, 0x79, 0x30, 0x29, 0x50, 0xa8, 0x41, 0xb7, 0xd6, 0x81, 0x85, 0xd2, 0x59, 0x22, 0xd6, 0xce, 0xbf, 0x4c, 0xc5, 0x53, 0x71, 0x93, 0xd6, 0xf7, 0xcd, 0x2e, 0xe5, 0xfe, 0x52, 0x9d, 0x5d, 0xe0, 0x3c, 0xa2, 0x96, 0x46, 0x41, 0xd9, 0x51, 0x0f, 0x12, 0xe7, 0xb9, 0x80, 0x60, 0xd9, 0xd0, 0x9e, 0xbf, 0x5b, 0xb5, 0xe3, 0xcf, 0x0f, 0x10, 0x78, 0x51, 0x83, 0x9c, 0xa6, 0x4a, 0x33, 0x7f, 0xf8, 0xf5, 0xf9, 0x04, 0x17, 0x9e, 0x53, 0xd4, 0xa0, 0x92, 0x76, 0x2f, 0x8e, 0x42, 0xac, 0x3f, 0xd4, 0x15, 0x42, 0x19, 0xfa, 0xea, 0x24, 0xb7, 0xb9, 0x6e, 0x1d, 0x16, 0xc1, 0x31, 0x9d, 0x79, 0x5d, 0xde, 0xaf, 0x05, 0xd2, 0x09, 0x78, 0xe9, 0xeb, 0x80, 0xd4, 0x66, 0x07, 0xa6, 0xb1, 0x83, 0x70, 0x71, 0x1a, 0x25, 0x9a, 0xfb, 0x5d, 0x8a, 0x68, 0xce, 0x1d, 0x3d, 0x00, 0xb1, 0x0a, 0xda, 0x46, 0x42, 0xb8, 0xcb, 0x16, 0x1f, 0x92, 0xf2, 0xf6, 0x28, 0xc5, 0xf6, 0x21, 0x44, 0x04, 0x87, 0x67, 0xe4, 0xae, 0x12, 0x58, 0xb9, 0x1a, 0x65, 0xfc, 0x65, 0xaa, 0xcf, 0xb4, 0x4e, 0xd3, 0x8c, 0xe3, 0x4f, 0x78, 0xdd, 0x95, 0x73, 0x90, 0x15, 0x0a, 0x7d, 0x72, 0x78, 0x9f, 0xab, 0x9d, 0x82, 0x12, 0x88, 0x4a, 0x50, 0x0e, 0x29, 0x35, 0xa7, 0x45, 0x58, 0x42, 0xc3, 0x9f, 0xe2, 0x93, 0x50, 0x78, 0xed, 0x83, 0xf5, 0xc3, 0x29, 0x30, 0xff, 0x27, 0xc4, 0x58, 0xbc, 0x4d, 0xcd, 0x1d, 0x88, 0xd5, 0x07, 0xd4, 0x29, 0x49, 0x21, 0xd7, 0x0c, 0x81, 0x03, 0x26, 0xed, 0x3e, 0x96, 0x4d, 0xb7, 0x6b, 0x72, 0xdd, 0x44, 0x4a, 0x48, 0x8c, 0x5a, 0x4f, 0xf1, 0x6d, 0x16, 0x16, 0xc6, 0xa2, 0x4e, 0xa9, 0x7a, 0x04, 0xa7, 0x9c, 0xdd, 0x36, 0x1c, 0x5f, 0xa0, 0xdf, 0x61, 0x2e, 0xb9, 0xd1, 0xeb, 0x10, 0xd2, 0x76, 0xf0, 0x8d, 0x91, 0xaa, 0x0a, 0xa9, 0x63, 0xa5, 0xaf, 0x59, 0x7f, 0xdd, 0xed, 0xec, 0x72, 0x54, 0x56, 0x39, 0xe4, 0x0d, 0x25, 0x72, 0xea, 0x60, 0xa0, 0xfb, 0x01, 0xf1, 0x13, 0x58, 0x8f, 0xb1, 0xe1, 0x34, 0xb2, 0x96, 0x24, 0x1c, 0x5a, 0x0b, 0x86, 0x5e, 0x10, 0xbd, 0xe2, 0x77, 0x76, 0x54, 0x81, 0x4e, 0x88, 0xd5, 0x97, 0x6b, 0x0d, 0x8e, 0xed, 0xe0, 0xa8, 0x29, 0x2f, 0x76, 0xb5, 0x6e, 0xa1, 0x88, 0xc1, 0x1a, 0xc2, 0xab, 0xb8, 0x92, 0x3d, 0xf0, 0x45, 0xe5, 0x75, 0xbd, 0xa2, 0x03, 0x7b, 0x73, 0x74, 0x7c, 0x68, 0xb3, 0xda, 0xfe, 0x9f, 0x9d, 0x11, 0xb6, 0xbc, 0x9a, 0x06, 0x39, 0x7c, 0x5c, 0x43, 0xea, 0x15, 0x04, 0x4b, 0x91, 0xe9, 0xb7, 0x03, 0xee, 0x77, 0x47, 0x3f, 0x6e, 0x55, 0x98, 0x1e, 0xbe, 0xfb, 0xee, 0xe8, 0xec, 0xe4, 0xdd, 0xdb, 0xc3, 0x77, 0xe7, 0x9f, 0x79, 0xec, 0x2e, 0x86, 0xe6, 0x5e, 0x87, 0xc9, 0x05, 0x39, 0xc2, 0x41, 0x37, 0x54, 0x04, 0xc8, 0x3d, 0x15, 0xcc, 0x4a, 0xe5, 0x5f, 0x23, 0x7f, 0x38, 0xef, 0x21, 0xf5, 0xec, 0x23, 0x93, 0x64, 0x09, 0xcf, 0xce, 0x0c, 0x71, 0xd5, 0x11, 0xc7, 0x02, 0x6c, 0xbf, 0x50, 0x00, 0xca, 0xdf, 0x02, 0xc0, 0x97, 0x52, 0x81, 0x51, 0x3b, 0xf6, 0x99, 0xdd, 0x12, 0x0e, 0x02, 0xba, 0x58, 0x69, 0x6b, 0x12, 0x8e, 0xb8, 0xdf, 0x4b, 0x01, 0x68, 0x91, 0x44, 0x57, 0xc3, 0x15, 0x0c, 0x8d, 0xeb, 0x38, 0xce, 0xa5, 0xe8, 0x1a, 0x7d, 0x61, 0x26, 0xe1, 0xe5, 0x80, 0x3a, 0x80, 0x00, 0xbf, 0xb5, 0x69, 0xb7, 0x77, 0x81, 0xb7, 0x8a, 0x3f, 0xab, 0xb3, 0xe8, 0x60, 0x67, 0xe7, 0x27, 0xea, 0xaa, 0xfb, 0x47, 0x69, 0xab, 0x1b, 0x82, 0x3f, 0xd6, 0xde, 0x34, 0x5c, 0xc9, 0x90, 0x56, 0x17, 0x82, 0x6e, 0xed, 0x76, 0x92, 0x1b, 0xf8, 0xc3, 0xe9, 0xd9, 0xc9, 0x0f, 0x7f, 0xfa, 0x95, 0x3f, 0xe1, 0x25, 0x9b, 0xfd, 0x19, 0x39, 0x98, 0x3a, 0xf8, 0x4f, 0xbf, 0xfa, 0xd7, 0xda, 0xc3, 0x0f, 0xbc, 0xde, 0xef, 0x31, 0x85, 0x8c, 0x8b, 0xb7, 0x19, 0xe2, 0xda, 0xa5, 0x44, 0x27, 0x9e, 0x8f, 0xc3, 0x26, 0x03, 0x91, 0x88, 0xab, 0xdb, 0x04, 0x9a, 0x86, 0x80, 0xb7, 0x23, 0x2e, 0x29, 0x76, 0x19, 0xbc, 0x5a, 0x55, 0x8e, 0xca, 0x71, 0xae, 0x2d, 0xa7, 0x7c, 0x54, 0xbb, 0x1f, 0x2f, 0x8f, 0x8f, 0x7f, 0xd5, 0x4d, 0xa0, 0xce, 0xa4, 0x6e, 0x2d, 0x43, 0xab, 0xa1, 0x6a, 0x6f, 0xf3, 0xf5, 0x18, 0x9c, 0xef, 0x4e, 0x64, 0x36, 0x2f, 0x48, 0x39, 0x1e, 0xd6, 0x99, 0x51, 0x69, 0x53, 0xc4, 0xfb, 0x15, 0x50, 0x18, 0x13, 0xab, 0x77, 0x38, 0x71, 0x32, 0xc0, 0x37, 0xa6, 0x87, 0x28, 0x59, 0x80, 0x4c, 0x28, 0xca, 0xab, 0xe4, 0xdd, 0xe4, 0xb2, 0x38, 0xaa, 0x5b, 0x28, 0x2d, 0x2e, 0x11, 0xf7, 0x49, 0xe6, 0x3e, 0xbd, 0x17, 0x91, 0x36, 0xac, 0x8c, 0x0e, 0x01, 0x79, 0x5b, 0xe5, 0xf5, 0x47, 0x2a, 0xea, 0xc0, 0x0d, 0x25, 0x05, 0x49, 0xeb, 0xf7, 0xa1, 0xf2, 0xd2, 0x9c, 0x46, 0x0c, 0x31, 0xe2, 0xaa, 0xe9, 0xf2, 0x3a, 0x36, 0x3b, 0xea, 0x67, 0xc3, 0xa2, 0x18, 0x6e, 0x54, 0x76, 0x42, 0xa7, 0xad, 0xd2, 0x2e, 0x01, 0x65, 0xe6, 0x24, 0xaa, 0xda, 0xe2, 0x0c, 0xc4, 0xca, 0xd2, 0x07, 0x5a, 0x6e, 0x6c, 0xfb, 0x9b, 0xe7, 0x4d, 0x9d, 0xcd, 0x2f, 0xe2, 0x15, 0xf6, 0x51, 0x6e, 0x21, 0x15, 0xfe, 0xb6, 0x51, 0xb4, 0xdf, 0x88, 0x3e, 0x23, 0x4c, 0x1a, 0x84, 0x16, 0x42, 0x7f, 0x9d, 0xd0, 0x61, 0x2b, 0xcf, 0xe0, 0xd6, 0xb5, 0xf7, 0x49, 0xbc, 0x6a, 0x56, 0xce, 0x13, 0xd3, 0xb3, 0xfd, 0x62, 0x16, 0x16, 0x4c, 0x19, 0x8e, 0xe4, 0xe3, 0x77, 0xa8, 0xe4, 0x1d, 0xde, 0x26, 0x0a, 0x1c, 0xc2, 0xe7, 0xd4, 0x7a, 0x46, 0x7e, 0xf3, 0x90, 0xe1, 0x08, 0x34, 0xbd, 0x46, 0x6e, 0xb4, 0x4c, 0x35, 0x69, 0x90, 0xdd, 0xdb, 0x24, 0xe2, 0x17, 0x67, 0x25, 0x9c, 0xb0, 0x76, 0xc2, 0x3a, 0x09, 0x6f, 0xe2, 0xeb, 0x26, 0xda, 0x3b, 0xd3, 0x48, 0x6c, 0xd8, 0x3c, 0x06, 0x17, 0x3c, 0x83, 0xc8, 0xf8, 0xe3, 0xd9, 0x79, 0x92, 0xb6, 0xca, 0x73, 0x64, 0x3d, 0x4e, 0xa1, 0xb4, 0xb2, 0x58, 0x10, 0x2e, 0x9a, 0x7e, 0xe3, 0x5f, 0x19, 0xb9, 0x0b, 0xb6, 0xa4, 0x9d, 0x94, 0x70, 0x5b, 0x16, 0xea, 0x22, 0xed, 0x08, 0xb7, 0x24, 0xa1, 0x7f, 0x9c, 0xe2, 0x2f, 0x10, 0xea, 0xc4, 0x88, 0x28, 0x56, 0x62, 0xeb, 0x0e, 0xa4, 0x58, 0x96, 0xea, 0xeb, 0x26, 0x5a, 0x66, 0xac, 0xc1, 0x2d, 0x23, 0x02, 0xe7, 0x65, 0x1d, 0x83, 0xd3, 0x9c, 0x20, 0x6b, 0x3e, 0xa3, 0x06, 0x1c, 0x7c, 0xe5, 0xcd, 0x7f, 0xcf, 0x4f, 0x5e, 0x9d, 0x1c, 0x9b, 0xbf, 0x1c, 0xbe, 0x39, 0xfa, 0xc1, 0x69, 0x05, 0x0c, 0x50, 0xd1, 0x2a, 0x90, 0x71, 0xbd, 0xc7, 0x2d, 0x1b, 0xe2, 0x1c, 0x44, 0xa4, 0x1f, 0x72, 0x4a, 0x5c, 0x97, 0x42, 0x2d, 0xb7, 0xf4, 0xf8, 0x9c, 0x74, 0x10, 0x6f, 0x75, 0x03, 0x17, 0xe0, 0x25, 0x68, 0xd1, 0x3c, 0xb2, 0x2d, 0xa6, 0x70, 0x9b, 0x8c, 0x1a, 0x29, 0x9f, 0xcd, 0x49, 0x36, 0xaa, 0xfb, 0x64, 0xae, 0xb0, 0x44, 0xad, 0xc9, 0x95, 0x95, 0xed, 0x4e, 0xd9, 0xf8, 0x9d, 0x8f, 0x3b, 0xad, 0x26, 0x3c, 0xf0, 0x56, 0xa3, 0xe1, 0xfa, 0x8b, 0xb4, 0xed, 0x8a, 0x9b, 0x2a, 0x23, 0xae, 0x48, 0x40, 0x75, 0x50, 0x04, 0x7c, 0x94, 0x8f, 0x0e, 0x45, 0x50, 0x85, 0x8e, 0x1d, 0xb1, 0xbd, 0x26, 0xd9, 0x00, 0xc9, 0xe5, 0xa3, 0xdc, 0x0a, 0xe8, 0xf1, 0x1e, 0xc4, 0x8f, 0x50, 0x6b, 0xb4, 0x5c, 0x50, 0xea, 0x94, 0xf0, 0x07, 0x65, 0x57, 0x71, 0x14, 0x43, 0x38, 0xea, 0xb9, 0xd7, 0x72, 0x99, 0xa5, 0x82, 0x04, 0x9f, 0x96, 0xa1, 0x69, 0x85, 0x33, 0x10, 0x65, 0xbf, 0xad, 0x71, 0xd4, 0x7d, 0x9f, 0x86, 0x89, 0x2a, 0x7b, 0xe0, 0x3e, 0x1d, 0x64, 0x5d, 0x73, 0xcb, 0xf1, 0x75, 0x63, 0x40, 0x23, 0xfc, 0xeb, 0x2a, 0xbf, 0x4e, 0xa9, 0xb6, 0xcc, 0x5c, 0x16, 0xed, 0x53, 0xde, 0x19, 0x23, 0xfd, 0x45, 0x83, 0xa4, 0xed, 0x51, 0x9e, 0xfc, 0x92, 0x41, 0x9e, 0x74, 0xc6, 0xb8, 0xfa, 0x45, 0x83, 0x0c, 0x55, 0x40, 0x18, 0xc5, 0xf8, 0x87, 0xa3, 0xf3, 0xe4, 0xd5, 0xc9, 0x6b, 0x77, 0xc1, 0xce, 0x6d, 0xf6, 0x76, 0x9a, 0x4c, 0x56, 0x85, 0xa1, 0x41, 0xf4, 0x48, 0xa1, 0x06, 0xa7, 0x18, 0x86, 0xd3, 0x14, 0x91, 0x83, 0x53, 0x6b, 0xc5, 0x5a, 0x5e, 0x31, 0x14, 0x11, 0xf2, 0x6a, 0x18, 0x49, 0xc9, 0xab, 0xd1, 0xc5, 0xd3, 0x0b, 0x00, 0x1d, 0x5d, 0xaa, 0xf4, 0xc5, 0xad, 0x04, 0xd6, 0x5d, 0x5a, 0x69, 0x55, 0xe9, 0x24, 0x05, 0x98, 0x51, 0xc1, 0xb5, 0x91, 0x46, 0x76, 0x46, 0xa0, 0x87, 0x75, 0x38, 0x1f, 0x81, 0xd8, 0xe8, 0xce, 0x79, 0xa3, 0x53, 0xf1, 0x33, 0x09, 0xf7, 0x34, 0xd7, 0xbf, 0x45, 0xe9, 0xd2, 0x76, 0x8a, 0x84, 0x1f, 0xf2, 0xba, 0x67, 0x5a, 0x16, 0x47, 0x2a, 0x71, 0xe1, 0x72, 0xf6, 0xb9, 0xf9, 0x6c, 0x20, 0xb1, 0xed, 0x10, 0xf6, 0x3b, 0xfb, 0x12, 0x4a, 0x30, 0x2a, 0x3a, 0xfb, 0x0d, 0x24, 0xaf, 0x2c, 0xff, 0x9b, 0xa7, 0xa0, 0x3f, 0xb2, 0xfa, 0x98, 0x59, 0xf9, 0x9c, 0x3a, 0xba, 0xce, 0xf8, 0x42, 0xd4, 0x77, 0x46, 0xa8, 0xdf, 0x92, 0x41, 0x0e, 0xfb, 0x49, 0xe0, 0x9c, 0xdc, 0x9b, 0x8f, 0x45, 0x2b, 0x4b, 0x2c, 0x6e, 0x14, 0xb5, 0xc5, 0x59, 0xb6, 0xa3, 0x41, 0xce, 0x6b, 0xa1, 0x25, 0xd2, 0xdc, 0xdf, 0xbc, 0x46, 0x87, 0xd9, 0x88, 0xe7, 0xc2, 0x25, 0x1e, 0x30, 0x7c, 0x03, 0x97, 0x5b, 0x97, 0xec, 0xd6, 0xf4, 0xda, 0x87, 0x59, 0xb0, 0x1f, 0x64, 0x26, 0xd1, 0x7e, 0x0d, 0xb9, 0x77, 0x4a, 0x50, 0x97, 0xee, 0x2a, 0x30, 0xd5, 0xe2, 0x98, 0x95, 0xb4, 0x81, 0x03, 0xca, 0xe4, 0x45, 0xab, 0xeb, 0x14, 0x50, 0x0f, 0xd4, 0xb2, 0x2c, 0x2d, 0xb8, 0xd2, 0x50, 0x4f, 0x20, 0x5e, 0x73, 0xe7, 0x6a, 0x9e, 0x9e, 0xf0, 0x1f, 0xaf, 0x54, 0x63, 0x93, 0xb2, 0x21, 0x9f, 0xb1, 0xb0, 0x90, 0x11, 0xeb, 0xa6, 0x24, 0x8c, 0x0e, 0xc8, 0x20, 0x5a, 0x1f, 0x31, 0xc8, 0x70, 0x13, 0xea, 0x8e, 0x8f, 0xf3, 0x69, 0xcf, 0x57, 0x18, 0xd2, 0xc9, 0x7d, 0xc4, 0xf7, 0xc9, 0xeb, 0x16, 0xca, 0xb3, 0xde, 0x68, 0xcf, 0xba, 0x74, 0xe1, 0x79, 0xf6, 0x69, 0x44, 0xfb, 0xe4, 0xe7, 0xe2, 0x8b, 0xc8, 0x50, 0xb4, 0x28, 0xca, 0x73, 0x95, 0x2d, 0xe7, 0xb2, 0x32, 0xf9, 0x09, 0x05, 0x8e, 0xc9, 0x9b, 0x40, 0xbb, 0x3c, 0xd5, 0x59, 0x1a, 0x75, 0xd8, 0x37, 0x05, 0x9f, 0xcb, 0x67, 0xd1, 0x9c, 0x89, 0x55, 0x07, 0xc2, 0xdd, 0xc8, 0x2d, 0xbd, 0x49, 0x33, 0x68, 0xfa, 0x11, 0x12, 0x1c, 0x09, 0xd5, 0x41, 0xff, 0x2d, 0x6f, 0x04, 0x48, 0x77, 0x1d, 0x57, 0x32, 0x56, 0xbb, 0xaa, 0xb8, 0x68, 0xd7, 0x61, 0x3b, 0x52, 0x1e, 0x7b, 0x5a, 0x34, 0x92, 0xff, 0x57, 0x01, 0x92, 0x6f, 0x64, 0x78, 0x51, 0x19, 0xa0, 0x4f, 0x96, 0x17, 0x8d, 0x60, 0x7f, 0x71, 0x1f, 0x24, 0xde, 0x9f, 0xab, 0xb4, 0xb8, 0xcc, 0xd8, 0xff, 0xe2, 0xc1, 0x53, 0x72, 0x0f, 0x2d, 0x16, 0x87, 0xe6, 0xae, 0x93, 0x93, 0xa7, 0x17, 0x7d, 0xc2, 0xed, 0xc3, 0xde, 0xae, 0xdd, 0x07, 0x6e, 0x8f, 0x43, 0xd5, 0x29, 0xd8, 0x85, 0xef, 0x09, 0x91, 0xf0, 0x26, 0xe5, 0xf6, 0x99, 0xda, 0x64, 0xda, 0x19, 0x2d, 0x36, 0xcc, 0x83, 0xc8, 0x5a, 0x98, 0x27, 0x4d, 0x48, 0x0e, 0xc8, 0x82, 0x81, 0x3e, 0xc0, 0xa9, 0x9e, 0x5c, 0xde, 0x28, 0xe2, 0x6a, 0x40, 0x06, 0xbd, 0x65, 0x90, 0x1c, 0x67, 0x25, 0xde, 0x7b, 0x9d, 0xc5, 0x60, 0x33, 0x14, 0xb7, 0xca, 0xcb, 0xe6, 0x70, 0xa0, 0x21, 0xde, 0x7a, 0xf6, 0xec, 0x7a, 0x6e, 0x88, 0x50, 0x4e, 0x5f, 0x8e, 0xc7, 0x4a, 0x26, 0xaf, 0x42, 0x8a, 0x90, 0xe8, 0x11, 0x21, 0xe8, 0x48, 0x91, 0x74, 0x44, 0x55, 0x94, 0x41, 0x3a, 0x49, 0x06, 0x7b, 0xcc, 0xd3, 0x5e, 0x33, 0x63, 0x26, 0x6d, 0x42, 0xd6, 0xcb, 0x74, 0xa5, 0x2b, 0xbe, 0x59, 0xbf, 0x93, 0x9f, 0x45, 0xd3, 0x55, 0x38, 0x60, 0x89, 0x7d, 0xa6, 0x62, 0x64, 0xe5, 0xf1, 0xa4, 0x1a, 0xde, 0x2e, 0xdb, 0x1d, 0xb1, 0xf7, 0x1e, 0x85, 0x8b, 0xfe, 0x8e, 0x57, 0x35, 0xf8, 0xa7, 0x16, 0xfd, 0x5d, 0x64, 0xd1, 0x8f, 0xdd, 0xc5, 0xe1, 0x8f, 0x25, 0xfb, 0xfb, 0xcf, 0xb4, 0x20, 0xc4, 0xd0, 0x31, 0x7d, 0xcf, 0x7d, 0xd0, 0xfb, 0xa2, 0x79, 0x6e, 0x48, 0xf5, 0x07, 0xe1, 0xb7, 0xbc, 0xcb, 0xeb, 0x7d, 0xea, 0x89, 0xfd, 0x94, 0x51, 0xbf, 0x61, 0x81, 0x1a, 0x9d, 0x9e, 0xb9, 0x4c, 0xc0, 0x7c, 0xd4, 0x94, 0x83, 0x1a, 0x7e, 0x83, 0xfc, 0xa9, 0xc6, 0xea, 0x92, 0x9d, 0x4f, 0xe9, 0x2c, 0xbc, 0xef, 0x3c, 0xb5, 0x6e, 0x94, 0x9d, 0x7d, 0x0d, 0xa0, 0xbf, 0x24, 0x5e, 0x3c, 0xcf, 0x16, 0x44, 0x99, 0xb3, 0x0c, 0x68, 0x3d, 0xce, 0xfd, 0xc7, 0x35, 0x77, 0x17, 0x55, 0x4a, 0x68, 0xcb, 0xf3, 0xf4, 0x2e, 0x02, 0xb6, 0x25, 0x9e, 0x62, 0x36, 0x57, 0x52, 0xcc, 0xbe, 0x80, 0xad, 0x40, 0x9a, 0x80, 0xb8, 0xcd, 0xe0, 0x87, 0xc5, 0x89, 0x96, 0x17, 0xd6, 0x55, 0x2b, 0x5f, 0x0d, 0xe0, 0x00, 0x6a, 0x69, 0x5b, 0xc6, 0x57, 0x46, 0xb4, 0x84, 0x38, 0x36, 0xdc, 0xde, 0x33, 0x77, 0x44, 0xf6, 0x1c, 0xe0, 0xd8, 0x62, 0x88, 0x10, 0x6f, 0xf7, 0x94, 0x97, 0x68, 0x3c, 0x40, 0x5a, 0x88, 0x20, 0x4a, 0x97, 0x87, 0x56, 0x73, 0xe5, 0x29, 0x88, 0x7b, 0xcc, 0x8d, 0x4f, 0xc1, 0xec, 0x04, 0x70, 0x77, 0x94, 0x9c, 0x90, 0x17, 0xae, 0x05, 0x31, 0x7e, 0xc1, 0xa4, 0xef, 0x8a, 0x46, 0xdb, 0x84, 0xfb, 0xdc, 0x9d, 0xb0, 0xce, 0x49, 0x93, 0x5f, 0x76, 0x94, 0xc9, 0x5a, 0x81, 0xa2, 0xde, 0xe6, 0x2c, 0x39, 0x3b, 0x3c, 0x3f, 0xa3, 0x38, 0x2f, 0x31, 0x80, 0x00, 0x24, 0x35, 0xad, 0xb6, 0x2d, 0x48, 0x90, 0xb0, 0x33, 0xa7, 0x87, 0x38, 0x06, 0xc1, 0xf8, 0x65, 0xf6, 0xbc, 0xf9, 0x9f, 0xfa, 0x1e, 0x57, 0xbf, 0x64, 0x5a, 0x6b, 0xe2, 0x22, 0x3a, 0x6d, 0x64, 0xb5, 0xfd, 0x7d, 0x97, 0x85, 0xc4, 0x2d, 0x4d, 0x59, 0xcc, 0x49, 0x26, 0xf9, 0x48, 0xb2, 0x5b, 0xb4, 0xf8, 0x42, 0x5b, 0x58, 0xe1, 0x21, 0xce, 0xc6, 0x2e, 0xab, 0x88, 0xc8, 0x95, 0x4f, 0xab, 0xfc, 0xe7, 0x29, 0x38, 0x14, 0x35, 0xfe, 0x1a, 0xff, 0x94, 0xb9, 0xa7, 0x54, 0x00, 0x26, 0x8f, 0x77, 0x77, 0x23, 0xb0, 0xc3, 0xe9, 0xc4, 0x30, 0x55, 0xd1, 0xe6, 0xa4, 0xaa, 0x87, 0xde, 0x62, 0xaf, 0x29, 0xa9, 0x97, 0x35, 0x4c, 0x8d, 0xe1, 0x05, 0xdc, 0x98, 0xd8, 0xb1, 0xd0, 0xa8, 0xd8, 0x67, 0x1e, 0xf3, 0x3d, 0x55, 0x19, 0xe9, 0xa6, 0x75, 0x98, 0x0b, 0x97, 0x20, 0x69, 0xcf, 0xcc, 0xd4, 0x03, 0x63, 0x16, 0xff, 0x77, 0x30, 0xb3, 0x80, 0x7f, 0xef, 0x3f, 0x09, 0x29, 0x62, 0x7c, 0x7e, 0x72, 0x26, 0x14, 0x16, 0x8a, 0x66, 0xde, 0x11, 0x7a, 0xc4, 0xa1, 0xad, 0x0c, 0x42, 0xc8, 0x9d, 0x99, 0xc5, 0x07, 0xb0, 0x28, 0xa6, 0xde, 0x57, 0x99, 0x03, 0x50, 0xdb, 0x2c, 0x59, 0xda, 0x77, 0x82, 0x08, 0xa0, 0x78, 0xbd, 0x7a, 0x2f, 0xbd, 0x97, 0xf8, 0x9a, 0x9d, 0xf0, 0xfd, 0xe5, 0xea, 0x75, 0xd0, 0x91, 0xd4, 0xb1, 0x03, 0xef, 0x57, 0xd2, 0x61, 0x6d, 0x7f, 0xbf, 0x2e, 0x2d, 0xf2, 0x25, 0x3a, 0x71, 0x90, 0xcc, 0xcc, 0xe1, 0x65, 0x9d, 0xd6, 0x2a, 0xa6, 0x1e, 0x93, 0xe0, 0x13, 0x0c, 0x59, 0x2c, 0x89, 0x4d, 0x29, 0xfb, 0xc2, 0xa6, 0x01, 0xac, 0x7b, 0x59, 0xcd, 0x24, 0x7d, 0x45, 0x04, 0xa7, 0x1a, 0x0b, 0x4e, 0xcf, 0x76, 0x52, 0xff, 0xf4, 0xe4, 0xec, 0xdc, 0xca, 0x7c, 0x7c, 0x96, 0x7e, 0xd0, 0xb9, 0x3d, 0xe8, 0x97, 0x22, 0xf8, 0x13, 0x22, 0xd9, 0xa8, 0x73, 0xe7, 0x67, 0x51, 0x08, 0x02, 0x39, 0x12, 0x1a, 0x47, 0x07, 0x1a, 0x50, 0x9b, 0xd5, 0x59, 0xc9, 0x70, 0x3e, 0x96, 0xdf, 0xb0, 0x07, 0x9d, 0x04, 0x4d, 0x0f, 0x32, 0x98, 0x53, 0x6e, 0x1f, 0xed, 0x85, 0x94, 0x01, 0x1b, 0xfa, 0xec, 0x70, 0x7c, 0xce, 0x33, 0xc7, 0xdf, 0x82, 0x99, 0x73, 0x7d, 0xa8, 0xfc, 0x30, 0x74, 0xa2, 0x5a, 0xca, 0x40, 0x06, 0x9a, 0xb1, 0x36, 0x68, 0x7c, 0x5b, 0xe0, 0xee, 0xed, 0xd8, 0x23, 0x2f, 0xdb, 0x90, 0x98, 0xa6, 0xd0, 0x09, 0xdd, 0x6f, 0xfa, 0xc1, 0x86, 0x7c, 0x65, 0xc3, 0xa8, 0x65, 0x7c, 0x1d, 0x5a, 0xf0, 0xeb, 0x8f, 0x1e, 0xbb, 0x11, 0x96, 0x90, 0x54, 0x32, 0xc0, 0x91, 0x36, 0xc7, 0xc4, 0x0f, 0x87, 0x4a, 0x2a, 0x24, 0x2c, 0x98, 0x28, 0xf8, 0x39, 0x37, 0xce, 0x13, 0x29, 0x51, 0x3f, 0xb6, 0xaa, 0x82, 0x37, 0x15, 0xfc, 0x58, 0x53, 0x7e, 0x48, 0xdb, 0xe8, 0x90, 0xdc, 0x23, 0xa6, 0xf4, 0xaf, 0x90, 0x2d, 0x68, 0xd3, 0x16, 0x79, 0xed, 0xbe, 0x5c, 0x30, 0xca, 0x56, 0x5e, 0xac, 0x32, 0xd2, 0xd1, 0xd2, 0x6a, 0x8e, 0x5e, 0x0f, 0x86, 0x89, 0x54, 0x5c, 0x3f, 0x76, 0x53, 0xc4, 0x60, 0xa9, 0xbd, 0x6f, 0x88, 0xfc, 0x39, 0x3a, 0x3e, 0x74, 0x47, 0xc5, 0x7d, 0x22, 0xe8, 0x12, 0x3b, 0x5d, 0x1f, 0x0d, 0xad, 0xad, 0x98, 0x18, 0x25, 0xa7, 0xe8, 0x54, 0x4c, 0x3a, 0x53, 0xfd, 0xef, 0x6e, 0x34, 0xbe, 0x24, 0xe4, 0x81, 0x37, 0x62, 0x93, 0xca, 0x9d, 0xf3, 0xc2, 0x9c, 0x2c, 0xfd, 0x04, 0x7f, 0xf5, 0x30, 0xcd, 0x83, 0xe5, 0x3e, 0x77, 0x2f, 0xd7, 0x66, 0x25, 0xc6, 0x42, 0xef, 0x3e, 0xf2, 0x58, 0xe8, 0xca, 0x98, 0xef, 0x34, 0x84, 0x65, 0xcd, 0xb8, 0xcb, 0xd2, 0x2c, 0x66, 0xc6, 0x23, 0x5c, 0xe8, 0x33, 0x2d, 0x16, 0xee, 0x0d, 0xc5, 0xc2, 0xe0, 0xe5, 0xc4, 0x36, 0x10, 0x42, 0x92, 0x30, 0x14, 0x39, 0x33, 0x56, 0x01, 0x4e, 0x3b, 0xb7, 0xb9, 0xf6, 0x7e, 0x0c, 0x98, 0xb6, 0xd6, 0xe2, 0x45, 0x75, 0x37, 0xb7, 0xd3, 0x76, 0xf9, 0x31, 0x53, 0xa2, 0x25, 0x1b, 0x2b, 0xbf, 0x5a, 0xb3, 0x93, 0xec, 0x64, 0xc1, 0xbd, 0x83, 0xd3, 0x00, 0xf1, 0x00, 0x23, 0xdf, 0x7d, 0xe5, 0xff, 0xf1, 0x13, 0x37, 0xd4, 0x05, 0x81, 0xf7, 0x28, 0x5f, 0x7f, 0xd9, 0x72, 0xca, 0xd9, 0x4e, 0x12, 0xb9, 0x7d, 0x92, 0xcd, 0x46, 0xae, 0x3d, 0x8f, 0x5c, 0x29, 0xef, 0x1b, 0xcf, 0xc4, 0xf4, 0x85, 0xed, 0x5b, 0xdc, 0xb9, 0xe4, 0xfb, 0x11, 0x47, 0x95, 0xd9, 0x6f, 0xc6, 0x8d, 0x6a, 0xe4, 0x37, 0x02, 0xc2, 0x78, 0x25, 0x7e, 0x19, 0xf4, 0xfb, 0x0c, 0x10, 0x17, 0x57, 0x0b, 0xc9, 0xe1, 0xf5, 0xbe, 0xf4, 0xb9, 0x78, 0x32, 0x50, 0x7c, 0x5e, 0x38, 0x90, 0x22, 0x6f, 0x21, 0x50, 0x74, 0xc5, 0x6a, 0xd6, 0x50, 0xbe, 0x61, 0x8e, 0xd3, 0xd4, 0xa6, 0x00, 0x87, 0x18, 0x7b, 0x40, 0x2e, 0x03, 0x9b, 0x15, 0x65, 0x57, 0x3d, 0x0a, 0xa5, 0x16, 0x01, 0x8b, 0x67, 0x41, 0x1e, 0xe3, 0x5f, 0xd9, 0xa6, 0x41, 0xa1, 0x4b, 0xbc, 0xca, 0xfe, 0x42, 0x8a, 0xe4, 0xc8, 0xf6, 0x68, 0xd4, 0x80, 0x72, 0x5a, 0xac, 0x52, 0xcf, 0x96, 0x7f, 0xfc, 0x5c, 0x3c, 0x54, 0xe2, 0x06, 0xd1, 0x9e, 0xe0, 0xdd, 0xf0, 0xe2, 0x93, 0x3d, 0xeb, 0xab, 0x44, 0xca, 0xac, 0xd4, 0x81, 0xf8, 0x89, 0xb3, 0x80, 0x3f, 0x1e, 0x7f, 0x93, 0xbc, 0x7d, 0xfd, 0x04, 0x09, 0x3d, 0x97, 0x59, 0xb5, 0xac, 0x90, 0xc4, 0xa9, 0x34, 0x7c, 0xf2, 0xad, 0x37, 0xd8, 0xbe, 0xcb, 0xbe, 0x50, 0x70, 0x44, 0x61, 0x66, 0x62, 0x2f, 0x98, 0x23, 0x44, 0xe1, 0xf3, 0xe5, 0x40, 0x82, 0x2d, 0x8a, 0xe3, 0xa7, 0x68, 0x55, 0xa4, 0xb5, 0x74, 0xfb, 0xac, 0xb7, 0x19, 0xd8, 0x93, 0x47, 0x8e, 0x81, 0x55, 0x77, 0x4b, 0x34, 0x57, 0x29, 0x2e, 0x61, 0x16, 0x44, 0x6e, 0xd4, 0x13, 0x66, 0x9a, 0xaf, 0xf8, 0xde, 0x43, 0x87, 0x0d, 0x5f, 0x23, 0xf5, 0x9c, 0xdc, 0xa5, 0xde, 0x7b, 0x4f, 0x7c, 0xaf, 0x02, 0xe0, 0x71, 0x29, 0x51, 0x8a, 0x5b, 0x62, 0x90, 0x86, 0xe2, 0x3d, 0xfb, 0xd4, 0x3e, 0x0b, 0xbf, 0x51, 0x5e, 0x78, 0x2d, 0x8c, 0x7a, 0xde, 0x10, 0xe5, 0x57, 0x0d, 0x04, 0x55, 0xcc, 0x58, 0xdf, 0xf1, 0xf6, 0xde, 0x7b, 0xe5, 0x79, 0xdb, 0x69, 0x42, 0xbd, 0x0d, 0x2c, 0x61, 0xd2, 0xa2, 0xa8, 0x85, 0xa6, 0xe7, 0x66, 0x61, 0x19, 0x7d, 0xda, 0xcd, 0x83, 0x56, 0x1e, 0x98, 0xf9, 0x08, 0x22, 0x7a, 0xd5, 0x99, 0xf4, 0x5f, 0xbd, 0x4c, 0xfa, 0x8a, 0x80, 0x88, 0xd6, 0xbd, 0x8f, 0xec, 0xc9, 0x9d, 0x41, 0x37, 0xda, 0xcb, 0x22, 0xff, 0x5b, 0xe6, 0xe5, 0x82, 0x69, 0xfb, 0x29, 0xef, 0xf1, 0x7d, 0x61, 0x18, 0xdc, 0x71, 0x94, 0x98, 0x22, 0x82, 0xa7, 0xee, 0x81, 0x47, 0x42, 0xb5, 0xdc, 0xa2, 0x97, 0x73, 0x1f, 0xd0, 0x60, 0x1b, 0xa1, 0xfb, 0xac, 0x95, 0x56, 0xff, 0xf4, 0xb1, 0xe8, 0x5c, 0xaa, 0x1b, 0x43, 0xf2, 0x62, 0x23, 0xe6, 0x04, 0xc8, 0xd8, 0x65, 0xd3, 0x4f, 0x45, 0xec, 0xc9, 0x51, 0xda, 0x16, 0x54, 0xb6, 0x9d, 0x17, 0xfe, 0x7a, 0x93, 0x17, 0x92, 0xe8, 0x1e, 0xbc, 0xfe, 0xb4, 0xc7, 0xfd, 0x58, 0xb3, 0xcc, 0x3c, 0x24, 0x5a, 0xf2, 0x9e, 0x7f, 0xe6, 0x6e, 0x82, 0x43, 0xa0, 0x1d, 0x38, 0xdc, 0xdb, 0x81, 0x8f, 0x59, 0xaa, 0x77, 0x89, 0x5d, 0x28, 0x19, 0xf7, 0x3a, 0x88, 0x20, 0xcb, 0x5f, 0xd8, 0xcf, 0xcf, 0x4b, 0x70, 0x53, 0xef, 0x7b, 0x4c, 0x52, 0x6f, 0xa8, 0x57, 0x85, 0x33, 0x0e, 0x8a, 0x56, 0x87, 0x79, 0xf7, 0xf4, 0x73, 0xa1, 0x0d, 0x95, 0x97, 0xd6, 0x58, 0xed, 0x7b, 0xe3, 0xd9, 0xae, 0xaf, 0xac, 0xce, 0x10, 0x95, 0xe5, 0x32, 0xfe, 0xde, 0x17, 0x98, 0x32, 0x8e, 0xe6, 0x68, 0xd6, 0x3e, 0xd7, 0x16, 0xf0, 0x8a, 0x66, 0xe8, 0x1e, 0xdb, 0x6f, 0x31, 0xdd, 0x73, 0x5f, 0x7d, 0x4a, 0x8e, 0x5e, 0x7b, 0x0f, 0x3e, 0x72, 0x0b, 0x4c, 0xe7, 0xd0, 0x06, 0xee, 0xd8, 0x4f, 0x55, 0x4b, 0xf3, 0x79, 0xef, 0x51, 0xa6, 0x8c, 0x77, 0x25, 0xa3, 0x6e, 0xd1, 0xf6, 0x07, 0xcf, 0x30, 0x39, 0xbc, 0xba, 0x32, 0x52, 0x6d, 0xda, 0x50, 0x4e, 0x68, 0xa1, 0x31, 0xae, 0xee, 0xd9, 0x3f, 0x7b, 0xba, 0xe6, 0x59, 0x11, 0x9a, 0xb5, 0x15, 0xf5, 0xde, 0x7b, 0xcf, 0xc2, 0x6b, 0xae, 0xe6, 0x80, 0x96, 0x29, 0x98, 0xab, 0x86, 0x9b, 0x96, 0x6c, 0xa1, 0x3c, 0xfa, 0xdf, 0xd5, 0x31, 0x58, 0x01, 0x4f, 0xb0, 0xfe, 0x77, 0x7f, 0xbe, 0x9f, 0xfb, 0xb5, 0x0e, 0xec, 0x15, 0xac, 0x32, 0x8a, 0x13, 0x4c, 0x5b, 0xed, 0x22, 0x5c, 0x8e, 0x10, 0xed, 0x8e, 0x37, 0x02, 0x9f, 0xb9, 0xd1, 0x23, 0x56, 0x85, 0xe3, 0x1c, 0x6c, 0x04, 0x0a, 0x1a, 0xc1, 0xcc, 0x87, 0x9e, 0x04, 0xcf, 0x17, 0x0f, 0x94, 0xe7, 0x43, 0xdd, 0xed, 0x5c, 0x83, 0xfa, 0x6a, 0xc5, 0x26, 0xb7, 0x5d, 0x91, 0x73, 0xb0, 0x79, 0xaf, 0xed, 0x3b, 0xee, 0x45, 0x73, 0x23, 0xb5, 0xf1, 0x95, 0x99, 0x2d, 0xdb, 0xe4, 0xb6, 0x7f, 0x00, 0xd5, 0x4b, 0xdf, 0x54, 0x25, 0xfe, 0xaa, 0x10, 0x21, 0x5b, 0x69, 0x4f, 0x6a, 0xa6, 0x24, 0x91, 0x7b, 0x9f, 0x11, 0xd5, 0x06, 0x29, 0x4e, 0xe6, 0x94, 0xae, 0xb2, 0xe9, 0x47, 0xbd, 0x32, 0x32, 0x88, 0x4b, 0x3d, 0xf7, 0xde, 0x7a, 0x6c, 0xb7, 0x96, 0x0c, 0x9a, 0xb3, 0xc3, 0xae, 0x15, 0xe0, 0x1e, 0x65, 0xaa, 0x39, 0x3b, 0x1f, 0x9f, 0x1e, 0x60, 0xce, 0x1c, 0x37, 0x34, 0x17, 0xe2, 0xd5, 0x38, 0xfb, 0xab, 0xd4, 0x99, 0xd5, 0xee, 0xe9, 0xa7, 0x3d, 0x4f, 0x8f, 0xc5, 0xb1, 0x77, 0x44, 0x48, 0xcd, 0xe6, 0x1c, 0xfc, 0x97, 0x98, 0x68, 0x56, 0x85, 0xfa, 0xf7, 0xd9, 0xff, 0x85, 0x99, 0x11, 0x37, 0x44, 0x6c, 0xd9, 0x3d, 0xfc, 0xb9, 0xb3, 0x69, 0xae, 0x56, 0xc5, 0x47, 0xab, 0x2f, 0x0a, 0x8e, 0x9e, 0x1e, 0xb0, 0x7b, 0xe1, 0xb9, 0x5e, 0x0d, 0xcf, 0x0f, 0x6a, 0xf3, 0x9e, 0x06, 0xe2, 0xa1, 0xd0, 0x86, 0xf3, 0x1c, 0xf3, 0x34, 0xfc, 0x75, 0xe5, 0xed, 0xc1, 0xf3, 0x5d, 0x2b, 0x7e, 0x05, 0x92, 0xe7, 0x63, 0x76, 0xe7, 0xa8, 0x4e, 0x73, 0x2c, 0x96, 0x79, 0x01, 0x17, 0x84, 0x7b, 0xc4, 0x0d, 0xb0, 0xd7, 0x12, 0x02, 0x5d, 0x75, 0xa3, 0x6e, 0xd2, 0x66, 0xe5, 0x89, 0x98, 0xe7, 0x4c, 0x3b, 0x63, 0x44, 0x1d, 0x17, 0x42, 0xaf, 0x79, 0xa1, 0xde, 0xb6, 0x8e, 0x0b, 0x4d, 0x5f, 0xfa, 0xe1, 0x07, 0x96, 0x23, 0xa5, 0x02, 0x23, 0x49, 0xe8, 0xca, 0x36, 0x7f, 0x32, 0x4c, 0x97, 0x55, 0x0f, 0x5c, 0x61, 0x8a, 0xf7, 0x54, 0x19, 0xfa, 0x53, 0x2a, 0xf6, 0x0d, 0x5d, 0x9e, 0x58, 0xf4, 0xbc, 0x2c, 0x24, 0x66, 0x8b, 0xe4, 0x4d, 0x72, 0x7d, 0x32, 0xd8, 0x34, 0xbb, 0xc2, 0xcc, 0x0c, 0x5e, 0xbe, 0x3f, 0xff, 0xe6, 0xe4, 0x6c, 0x9c, 0xec, 0xa0, 0xb6, 0xfd, 0xfc, 0xec, 0xe8, 0xab, 0xf7, 0xe7, 0xe6, 0x9f, 0x3a, 0xd2, 0xeb, 0xb4, 0xc8, 0x8d, 0x74, 0x1a, 0x37, 0x59, 0x61, 0x68, 0xe5, 0x52, 0x7b, 0x34, 0x51, 0x0e, 0x0a, 0xe4, 0x71, 0x59, 0x29, 0xa4, 0x09, 0xd2, 0x51, 0xca, 0xb9, 0x4b, 0x26, 0x60, 0x0f, 0x36, 0x72, 0xfc, 0x4a, 0x67, 0x39, 0xe7, 0x9d, 0xa2, 0x7c, 0x4d, 0xdb, 0x49, 0xce, 0xbf, 0x79, 0xf9, 0xee, 0xdb, 0xb1, 0x76, 0xf0, 0xf8, 0xfe, 0xfb, 0xef, 0xbb, 0xc1, 0x5d, 0xbf, 0x0f, 0xf7, 0x67, 0x9f, 0x8d, 0x0f, 0x0f, 0x93, 0x97, 0xc7, 0xe3, 0x93, 0xcf, 0x1c, 0x8e, 0xc3, 0xd6, 0xde, 0xb6, 0x51, 0xd2, 0x2e, 0xb3, 0xc6, 0xfc, 0xe5, 0xb3, 0xcf, 0xfe, 0x5f, 0xd7, 0x18, 0xeb, 0x8e, 0x30, 0x88, 0x02, 0x00, }; #define BUF_SIZE 0x10000 static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size) { (void) opaque; /* not a typo, keep it calloc() */ return (voidpf) calloc(items, size); |
︙ | ︙ |
Changes to jni/curl/src/tool_main.c.
︙ | ︙ | |||
233 234 235 236 237 238 239 | /* Free the config structures */ config_free(config->last); config->first = NULL; config->last = NULL; } | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | /* Free the config structures */ config_free(config->last); config->first = NULL; config->last = NULL; } #ifdef WIN32 /* TerminalSettings for Windows */ static struct TerminalSettings { HANDLE hStdOut; DWORD dwOutputMode; } TerminalSettings; static void configure_terminal(void) |
︙ | ︙ | |||
271 272 273 274 275 276 277 | } #else #define configure_terminal() #endif static void restore_terminal(void) { | | | 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 | } #else #define configure_terminal() #endif static void restore_terminal(void) { #ifdef WIN32 /* Restore Console output mode and codepage to whatever they were * when Curl started */ SetConsoleMode(TerminalSettings.hStdOut, TerminalSettings.dwOutputMode); #endif } /* |
︙ | ︙ |
Changes to jni/curl/src/tool_metalink.c.
︙ | ︙ | |||
69 70 71 72 73 74 75 | The library's headers are even backward-compatible with OpenSSL's headers as long as we define COMMON_DIGEST_FOR_OPENSSL first. These functions are available on Tiger and later, as well as iOS 2.0 and later. If you're building for an older cat, well, sorry. */ # define COMMON_DIGEST_FOR_OPENSSL # include <CommonCrypto/CommonDigest.h> | | | 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | The library's headers are even backward-compatible with OpenSSL's headers as long as we define COMMON_DIGEST_FOR_OPENSSL first. These functions are available on Tiger and later, as well as iOS 2.0 and later. If you're building for an older cat, well, sorry. */ # define COMMON_DIGEST_FOR_OPENSSL # include <CommonCrypto/CommonDigest.h> #elif defined(WIN32) /* For Windows: If no other crypto library is provided, we fallback to the hash functions provided within the Microsoft Windows CryptoAPI */ # include <wincrypt.h> /* Custom structure in order to store the required provider and hash handle */ struct win32_crypto_hash { HCRYPTPROV hCryptProv; HCRYPTHASH hHash; |
︙ | ︙ | |||
376 377 378 379 380 381 382 | } static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx) { sha256_finish(ctx, digest); } | | | 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 | } static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx) { sha256_finish(ctx, digest); } #elif defined(WIN32) static void win32_crypto_final(struct win32_crypto_hash *ctx, unsigned char *digest, unsigned int digestLen) { unsigned long length; CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0); |
︙ | ︙ |
Changes to jni/curl/src/tool_operate.c.
︙ | ︙ | |||
97 98 99 100 101 102 103 | "could not\nestablish a secure connection to it. To learn more about " \ "this situation and\nhow to fix it, please visit the web page mentioned " \ "above.\n" static bool is_fatal_error(CURLcode code) { switch(code) { | < | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | "could not\nestablish a secure connection to it. To learn more about " \ "this situation and\nhow to fix it, please visit the web page mentioned " \ "above.\n" static bool is_fatal_error(CURLcode code) { switch(code) { case CURLE_FAILED_INIT: case CURLE_OUT_OF_MEMORY: case CURLE_UNKNOWN_OPTION: case CURLE_FUNCTION_NOT_FOUND: case CURLE_BAD_FUNCTION_ARGUMENT: /* critical error */ return TRUE; |
︙ | ︙ | |||
822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 | my_setopt(curl, CURLOPT_TCP_NODELAY, 0L); if(config->tcp_fastopen) my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L); /* where to store */ my_setopt(curl, CURLOPT_WRITEDATA, &outs); my_setopt(curl, CURLOPT_INTERLEAVEDATA, &outs); if(metalink || !config->use_metalink) /* what call to write */ my_setopt(curl, CURLOPT_WRITEFUNCTION, tool_write_cb); #ifdef USE_METALINK else /* Set Metalink specific write callback function to parse XML data progressively. */ | > > | 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 | my_setopt(curl, CURLOPT_TCP_NODELAY, 0L); if(config->tcp_fastopen) my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L); /* where to store */ my_setopt(curl, CURLOPT_WRITEDATA, &outs); #ifndef CURL_DISABLE_RTSP my_setopt(curl, CURLOPT_INTERLEAVEDATA, &outs); #endif if(metalink || !config->use_metalink) /* what call to write */ my_setopt(curl, CURLOPT_WRITEFUNCTION, tool_write_cb); #ifdef USE_METALINK else /* Set Metalink specific write callback function to parse XML data progressively. */ |
︙ | ︙ | |||
872 873 874 875 876 877 878 | my_setopt(curl, CURLOPT_NOBODY, 1L); if(config->oauth_bearer) my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->oauth_bearer); #if !defined(CURL_DISABLE_PROXY) { | < < | 873 874 875 876 877 878 879 880 881 882 883 884 885 886 | my_setopt(curl, CURLOPT_NOBODY, 1L); if(config->oauth_bearer) my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->oauth_bearer); #if !defined(CURL_DISABLE_PROXY) { my_setopt_str(curl, CURLOPT_PROXY, config->proxy); /* new in libcurl 7.5 */ if(config->proxy) my_setopt_enum(curl, CURLOPT_PROXYTYPE, config->proxyver); my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd); |
︙ | ︙ | |||
1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 | my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L); /* new in libcurl 7.64.0 */ my_setopt(curl, CURLOPT_HTTP09_ALLOWED, config->http09_allowed ? 1L : 0L); } /* (built_in_protos & CURLPROTO_HTTP) */ my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport); my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, config->low_speed_limit); my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time); my_setopt(curl, CURLOPT_MAX_SEND_SPEED_LARGE, config->sendpersecond); my_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, config->recvpersecond); if(config->use_resume) my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, config->resume_from); else my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, CURL_OFF_T_C(0)); my_setopt_str(curl, CURLOPT_KEYPASSWD, config->key_passwd); my_setopt_str(curl, CURLOPT_PROXY_KEYPASSWD, config->proxy_key_passwd); | > > > | | 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 | my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L); /* new in libcurl 7.64.0 */ my_setopt(curl, CURLOPT_HTTP09_ALLOWED, config->http09_allowed ? 1L : 0L); } /* (built_in_protos & CURLPROTO_HTTP) */ #ifndef CURL_DISABLE_FTP my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport); #endif my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, config->low_speed_limit); my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time); my_setopt(curl, CURLOPT_MAX_SEND_SPEED_LARGE, config->sendpersecond); my_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, config->recvpersecond); if(config->use_resume) my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, config->resume_from); else my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, CURL_OFF_T_C(0)); my_setopt_str(curl, CURLOPT_KEYPASSWD, config->key_passwd); #ifndef CURL_DISABLE_PROXY my_setopt_str(curl, CURLOPT_PROXY_KEYPASSWD, config->proxy_key_passwd); #endif if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) { /* SSH and SSL private key uses same command-line option */ /* new in libcurl 7.16.1 */ my_setopt_str(curl, CURLOPT_SSH_PRIVATE_KEYFILE, config->key); /* new in libcurl 7.16.1 */ my_setopt_str(curl, CURLOPT_SSH_PUBLIC_KEYFILE, config->pubkey); |
︙ | ︙ | |||
1236 1237 1238 1239 1240 1241 1242 1243 | my_setopt(curl, CURLOPT_TIMEVALUE_LARGE, config->condtime); my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest); customrequest_helper(config, config->httpreq, config->customrequest); my_setopt(curl, CURLOPT_STDERR, global->errors); /* three new ones in libcurl 7.3: */ my_setopt_str(curl, CURLOPT_INTERFACE, config->iface); my_setopt_str(curl, CURLOPT_KRBLEVEL, config->krblevel); | > | | 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 | my_setopt(curl, CURLOPT_TIMEVALUE_LARGE, config->condtime); my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest); customrequest_helper(config, config->httpreq, config->customrequest); my_setopt(curl, CURLOPT_STDERR, global->errors); /* three new ones in libcurl 7.3: */ my_setopt_str(curl, CURLOPT_INTERFACE, config->iface); #ifndef CURL_DISABLE_FTP my_setopt_str(curl, CURLOPT_KRBLEVEL, config->krblevel); #endif progressbarinit(&progressbar, config); if((global->progressmode == CURL_PROGRESS_BAR) && !global->noprogress && !global->mute) { /* we want the alternative style, then we have to implement it ourselves! */ my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_progress_cb); my_setopt(curl, CURLOPT_XFERINFODATA, &progressbar); |
︙ | ︙ | |||
1259 1260 1261 1262 1263 1264 1265 1266 1267 | if(config->dns_interface) my_setopt_str(curl, CURLOPT_DNS_INTERFACE, config->dns_interface); if(config->dns_ipv4_addr) my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP4, config->dns_ipv4_addr); if(config->dns_ipv6_addr) my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP6, config->dns_ipv6_addr); /* new in libcurl 7.6.2: */ my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options); | > | | 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 | if(config->dns_interface) my_setopt_str(curl, CURLOPT_DNS_INTERFACE, config->dns_interface); if(config->dns_ipv4_addr) my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP4, config->dns_ipv4_addr); if(config->dns_ipv6_addr) my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP6, config->dns_ipv6_addr); #ifndef CURL_DISABLE_TELNET /* new in libcurl 7.6.2: */ my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options); #endif /* new in libcurl 7.7: */ my_setopt_str(curl, CURLOPT_RANDOM_FILE, config->random_file); my_setopt_str(curl, CURLOPT_EGDSOCKET, config->egd_file); my_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, (long)(config->connecttimeout * 1000)); if(config->doh_url) |
︙ | ︙ | |||
1364 1365 1366 1367 1368 1369 1370 1371 1372 | config->proxy_service_name); /* new in curl 7.43.0 */ if(config->service_name) my_setopt_str(curl, CURLOPT_SERVICE_NAME, config->service_name); /* curl 7.13.0 */ my_setopt_str(curl, CURLOPT_FTP_ACCOUNT, config->ftp_account); | > | > | > | | 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 | config->proxy_service_name); /* new in curl 7.43.0 */ if(config->service_name) my_setopt_str(curl, CURLOPT_SERVICE_NAME, config->service_name); #ifndef CURL_DISABLE_FTP /* curl 7.13.0 */ my_setopt_str(curl, CURLOPT_FTP_ACCOUNT, config->ftp_account); #endif my_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, config->ignorecl?1L:0L); #ifndef CURL_DISABLE_FTP /* curl 7.14.2 */ my_setopt(curl, CURLOPT_FTP_SKIP_PASV_IP, config->ftp_skip_ip?1L:0L); /* curl 7.15.1 */ my_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long)config->ftp_filemethod); #endif /* curl 7.15.2 */ if(config->localport) { my_setopt(curl, CURLOPT_LOCALPORT, config->localport); my_setopt_str(curl, CURLOPT_LOCALPORTRANGE, config->localportrange); } #ifndef CURL_DISABLE_FTP /* curl 7.15.5 */ my_setopt_str(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER, config->ftp_alternative_to_user); #endif /* curl 7.16.0 */ if(config->disable_sessionid) /* disable it */ my_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0L); /* curl 7.16.2 */ if(config->raw) { |
︙ | ︙ | |||
1656 1657 1658 1659 1660 1661 1662 | case 504: /* Gateway Timeout */ retry = RETRY_HTTP; /* * At this point, we have already written data to the output * file (or terminal). If we write to a file, we must rewind * or close/re-open the file so that the next attempt starts * over from the beginning. | < < < < | 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 | case 504: /* Gateway Timeout */ retry = RETRY_HTTP; /* * At this point, we have already written data to the output * file (or terminal). If we write to a file, we must rewind * or close/re-open the file so that the next attempt starts * over from the beginning. */ break; } } } /* if CURLE_OK */ else if(result) { long protocol; |
︙ | ︙ | |||
1750 1751 1752 1753 1754 1755 1756 | } /* if retry_numretries */ else if(metalink) { /* Metalink: Decide to try the next resource or not. Basically, we want to try the next resource if download was not successful. */ long response; if(CURLE_OK == result) { | < < | 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 | } /* if retry_numretries */ else if(metalink) { /* Metalink: Decide to try the next resource or not. Basically, we want to try the next resource if download was not successful. */ long response; if(CURLE_OK == result) { char *effective_url = NULL; curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url); if(effective_url && curl_strnequal(effective_url, "http", 4)) { /* This was HTTP(S) */ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response); if(response != 200 && response != 206) { |
︙ | ︙ | |||
1925 1926 1927 1928 1929 1930 1931 | if(is_fatal_error(result)) { break; } if(!metalink_next_res) break; mlres = mlres->next; if(mlres == NULL) | < < < | 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 | if(is_fatal_error(result)) { break; } if(!metalink_next_res) break; mlres = mlres->next; if(mlres == NULL) break; } else if(urlnum > 1) { /* when url globbing, exit loop upon critical error */ if(is_fatal_error(result)) break; } |
︙ | ︙ |
Changes to jni/curl/src/tool_urlglob.c.
︙ | ︙ | |||
549 550 551 552 553 554 555 | break; default: printf("internal error: invalid pattern type (%d)\n", (int)pat->type); return CURLE_FAILED_INIT; } } if(carry) { /* first pattern ptr has run into overflow, done! */ | < | | 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 | break; default: printf("internal error: invalid pattern type (%d)\n", (int)pat->type); return CURLE_FAILED_INIT; } } if(carry) { /* first pattern ptr has run into overflow, done! */ return CURLE_OK; } } for(i = 0; i < glob->size; ++i) { pat = &glob->pattern[i]; switch(pat->type) { case UPTSet: |
︙ | ︙ |
Changes to jni/curl/src/tool_version.h.
︙ | ︙ | |||
21 22 23 24 25 26 27 | * KIND, either express or implied. * ***************************************************************************/ #include <curl/curlver.h> #define CURL_NAME "curl" #define CURL_COPYRIGHT LIBCURL_COPYRIGHT | | | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * KIND, either express or implied. * ***************************************************************************/ #include <curl/curlver.h> #define CURL_NAME "curl" #define CURL_COPYRIGHT LIBCURL_COPYRIGHT #define CURL_VERSION "7.65.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/tests/FILEFORMAT.
︙ | ︙ | |||
152 153 154 155 156 157 158 | For HTTP/HTTPS: auth_required if this is set and a POST/PUT is made without auth, the server will NOT wait for the full request body to get sent idle do nothing after receiving the request, just "sit idle" stream continuously send data to the client, never-ending writedelay: [secs] delay this amount between reply packets | < < | 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | For HTTP/HTTPS: auth_required if this is set and a POST/PUT is made without auth, the server will NOT wait for the full request body to get sent idle do nothing after receiving the request, just "sit idle" stream continuously send data to the client, never-ending writedelay: [secs] delay this amount between reply packets skip: [num] instructs the server to ignore reading this many bytes from a PUT or POST request rtp: part [num] channel [num] size [num] stream a fake RTP packet for the given part on a chosen channel with the given payload size |
︙ | ︙ | |||
184 185 186 187 188 189 190 | file ftp ftp-ipv6 ftps http http-ipv6 | < | 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | file ftp ftp-ipv6 ftps http http-ipv6 http-proxy http-unix https httptls+srp httptls+srp-ipv6 http/2 imap |
︙ | ︙ | |||
350 351 352 353 354 355 356 | a response from the test FTP server %FTPTIME3 - Even longer than %FTPTIME2 %GOPHER6PORT - IPv6 port number of the Gopher server %GOPHERPORT - Port number of the Gopher server %HOST6IP - IPv6 address of the host running this test %HOSTIP - IPv4 address of the host running this test %HTTP6PORT - IPv6 port number of the HTTP server | < | 347 348 349 350 351 352 353 354 355 356 357 358 359 360 | a response from the test FTP server %FTPTIME3 - Even longer than %FTPTIME2 %GOPHER6PORT - IPv6 port number of the Gopher server %GOPHERPORT - Port number of the Gopher server %HOST6IP - IPv6 address of the host running this test %HOSTIP - IPv4 address of the host running this test %HTTP6PORT - IPv6 port number of the HTTP server %HTTPUNIXPATH - Path to the Unix socket of the HTTP server %HTTPPORT - Port number of the HTTP server %HTTPSPORT - Port number of the HTTPS server %HTTPTLS6PORT - IPv6 port number of the HTTP TLS server %HTTPTLSPORT - Port number of the HTTP TLS server %IMAP6PORT - IPv6 port number of the IMAP server %IMAPPORT - Port number of the IMAP server |
︙ | ︙ |
Changes to jni/curl/tests/Makefile.in.
︙ | ︙ | |||
470 471 472 473 474 475 476 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ | | | | 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ |
︙ | ︙ |
Changes to jni/curl/tests/data/Makefile.in.
︙ | ︙ | |||
391 392 393 394 395 396 397 | test262 test263 test264 test265 test266 test267 test268 test269 test270 \ test271 test272 test273 test274 test275 test276 test277 test278 test279 \ test280 test281 test282 test283 test284 test285 test286 test287 test288 \ test289 test290 test291 test292 test293 test294 test295 test296 test297 \ test298 test299 test300 test301 test302 test303 test304 test305 test306 \ test307 test308 test309 test310 test311 test312 test313 test314 test315 \ test316 test317 test318 test319 test320 test321 test322 test323 test324 \ | | | | | | 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 | test262 test263 test264 test265 test266 test267 test268 test269 test270 \ test271 test272 test273 test274 test275 test276 test277 test278 test279 \ test280 test281 test282 test283 test284 test285 test286 test287 test288 \ test289 test290 test291 test292 test293 test294 test295 test296 test297 \ test298 test299 test300 test301 test302 test303 test304 test305 test306 \ test307 test308 test309 test310 test311 test312 test313 test314 test315 \ test316 test317 test318 test319 test320 test321 test322 test323 test324 \ test325 test326 test327 test328 test329 test330 test331 test332 test333 \ \ test340 \ \ test350 test351 test352 test353 test354 test355 test356 \ test393 test394 test395 \ \ test400 test401 test402 test403 test404 test405 test406 test407 test408 \ test409 \ \ test500 test501 test502 test503 test504 test505 test506 test507 test508 \ test509 test510 test511 test512 test513 test514 test515 test516 test517 \ test518 test519 test520 test521 test522 test523 test524 test525 test526 \ test527 test528 test529 test530 test531 test532 test533 test534 test535 \ test537 test538 test539 test540 test541 test542 test543 test544 \ test545 test546 test547 test548 test549 test550 test551 test552 test553 \ test554 test555 test556 test557 test558 test559 test560 test561 test562 \ test563 test564 test565 test566 test567 test568 test569 test570 test571 \ test572 test573 test574 test575 test576 test577 test578 test579 test580 \ test581 test582 test583 test584 test585 test586 test587 test588 test589 \ test590 test591 test592 test593 test594 test595 test596 test597 test598 \ test599 test600 test601 test602 test603 test604 test605 test606 test607 \ test608 test609 test610 test611 test612 test613 test614 test615 test616 \ test617 test618 test619 test620 test621 test622 test623 test624 test625 \ test626 test627 test628 test629 test630 test631 test632 test633 test634 \ test635 test636 test637 test638 test639 test640 test641 test642 \ test643 test644 test645 test646 test647 test648 test649 test650 test651 \ test652 test653 test654 test655 test656 test658 test659 test660 \ \ test700 test701 test702 test703 test704 test705 test706 test707 test708 \ test709 test710 test711 test712 test713 test714 test715 test716 test717 \ \ test800 test801 test802 test803 test804 test805 test806 test807 test808 \ test809 test810 test811 test812 test813 test814 test815 test816 test817 \ test818 test819 test820 test821 test822 test823 test824 test825 test826 \ test827 test828 test829 test830 test831 test832 test833 test834 test835 \ test836 test837 test838 test839 test840 test841 test842 test843 test844 \ test845 test846 test847 \ |
︙ | ︙ | |||
511 512 513 514 515 516 517 | test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \ test1516 test1517 test1518 test1519 test1520 test1521 test1522 \ \ test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \ test1533 test1534 test1535 test1536 test1537 test1538 \ test1540 test1541 \ test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \ | | | | 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 | test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \ test1516 test1517 test1518 test1519 test1520 test1521 test1522 \ \ test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \ test1533 test1534 test1535 test1536 test1537 test1538 \ test1540 test1541 \ test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \ test1558 test1559 test1560 test1561 test1562 \ \ test1590 test1591 test1592 \ \ test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \ test1608 test1609 test1620 test1621 \ \ test1650 test1651 test1652 test1653 test1654 \ \ test1700 test1701 test1702 \ \ test1800 test1801 \ \ test1900 test1901 test1902 test1903 test1904 test1905 test1906 \ \ test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \ test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \ test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \ test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \ test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \ test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \ |
︙ | ︙ | |||
556 557 558 559 560 561 562 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ | | | | 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 | case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/data/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ |
︙ | ︙ |
Changes to jni/curl/tests/data/Makefile.inc.
︙ | ︙ | |||
52 53 54 55 56 57 58 | test262 test263 test264 test265 test266 test267 test268 test269 test270 \ test271 test272 test273 test274 test275 test276 test277 test278 test279 \ test280 test281 test282 test283 test284 test285 test286 test287 test288 \ test289 test290 test291 test292 test293 test294 test295 test296 test297 \ test298 test299 test300 test301 test302 test303 test304 test305 test306 \ test307 test308 test309 test310 test311 test312 test313 test314 test315 \ test316 test317 test318 test319 test320 test321 test322 test323 test324 \ | | | | | | 52 53 54 55 56 57 58 59 60 61 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 | test262 test263 test264 test265 test266 test267 test268 test269 test270 \ test271 test272 test273 test274 test275 test276 test277 test278 test279 \ test280 test281 test282 test283 test284 test285 test286 test287 test288 \ test289 test290 test291 test292 test293 test294 test295 test296 test297 \ test298 test299 test300 test301 test302 test303 test304 test305 test306 \ test307 test308 test309 test310 test311 test312 test313 test314 test315 \ test316 test317 test318 test319 test320 test321 test322 test323 test324 \ test325 test326 test327 test328 test329 test330 test331 test332 test333 \ \ test340 \ \ test350 test351 test352 test353 test354 test355 test356 \ test393 test394 test395 \ \ test400 test401 test402 test403 test404 test405 test406 test407 test408 \ test409 \ \ test500 test501 test502 test503 test504 test505 test506 test507 test508 \ test509 test510 test511 test512 test513 test514 test515 test516 test517 \ test518 test519 test520 test521 test522 test523 test524 test525 test526 \ test527 test528 test529 test530 test531 test532 test533 test534 test535 \ test537 test538 test539 test540 test541 test542 test543 test544 \ test545 test546 test547 test548 test549 test550 test551 test552 test553 \ test554 test555 test556 test557 test558 test559 test560 test561 test562 \ test563 test564 test565 test566 test567 test568 test569 test570 test571 \ test572 test573 test574 test575 test576 test577 test578 test579 test580 \ test581 test582 test583 test584 test585 test586 test587 test588 test589 \ test590 test591 test592 test593 test594 test595 test596 test597 test598 \ test599 test600 test601 test602 test603 test604 test605 test606 test607 \ test608 test609 test610 test611 test612 test613 test614 test615 test616 \ test617 test618 test619 test620 test621 test622 test623 test624 test625 \ test626 test627 test628 test629 test630 test631 test632 test633 test634 \ test635 test636 test637 test638 test639 test640 test641 test642 \ test643 test644 test645 test646 test647 test648 test649 test650 test651 \ test652 test653 test654 test655 test656 test658 test659 test660 \ \ test700 test701 test702 test703 test704 test705 test706 test707 test708 \ test709 test710 test711 test712 test713 test714 test715 test716 test717 \ \ test800 test801 test802 test803 test804 test805 test806 test807 test808 \ test809 test810 test811 test812 test813 test814 test815 test816 test817 \ test818 test819 test820 test821 test822 test823 test824 test825 test826 \ test827 test828 test829 test830 test831 test832 test833 test834 test835 \ test836 test837 test838 test839 test840 test841 test842 test843 test844 \ test845 test846 test847 \ |
︙ | ︙ | |||
172 173 174 175 176 177 178 | test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \ test1516 test1517 test1518 test1519 test1520 test1521 test1522 \ \ test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \ test1533 test1534 test1535 test1536 test1537 test1538 \ test1540 test1541 \ test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \ | | | | 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 | test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \ test1516 test1517 test1518 test1519 test1520 test1521 test1522 \ \ test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \ test1533 test1534 test1535 test1536 test1537 test1538 \ test1540 test1541 \ test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \ test1558 test1559 test1560 test1561 test1562 \ \ test1590 test1591 test1592 \ \ test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \ test1608 test1609 test1620 test1621 \ \ test1650 test1651 test1652 test1653 test1654 \ \ test1700 test1701 test1702 \ \ test1800 test1801 \ \ test1900 test1901 test1902 test1903 test1904 test1905 test1906 \ \ test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \ test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \ test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \ test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \ test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \ test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \ |
︙ | ︙ |
Changes to jni/curl/tests/data/test1002.
︙ | ︙ | |||
63 64 65 66 67 68 69 | http </server> <features> !SSPI crypto </features> <name> | | | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | http </server> <features> !SSPI crypto </features> <name> HTTP PUT with Digest auth, resumed upload and modified method, twice </name> <command> http://%HOSTIP:%HTTPPORT/1002.upload1 -T log/1002 http://%HOSTIP:%HTTPPORT/1002.upload2 -T log/1002 -u auser:apasswd --digest -x http://%HOSTIP:%HTTPPORT -C 2 -X GET </command> <file name="log/1002"> test </file> |
︙ | ︙ |
Changes to jni/curl/tests/data/test1400.
︙ | ︙ | |||
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | Host: %HOSTIP:%HTTPPORT Accept: */* </protocol> <stripfile> s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_HTTP09_ALLOWED/ </stripfile> <file name="log/test1400.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> | > > | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | Host: %HOSTIP:%HTTPPORT Accept: */* </protocol> <stripfile> s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # CURLOPT_INTERLEAVEDATA requires RTSP protocol # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_HTTP09_ALLOWED/ $_ = '' if /CURLOPT_INTERLEAVEDATA/ </stripfile> <file name="log/test1400.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> |
︙ | ︙ | |||
77 78 79 80 81 82 83 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer | < | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer |
︙ | ︙ |
Changes to jni/curl/tests/data/test1401.
︙ | ︙ | |||
57 58 59 60 61 62 63 64 65 66 67 68 69 70 | </protocol> <stripfile> # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ </stripfile> <file name="log/test1401.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> | > | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | </protocol> <stripfile> # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_INTERLEAVEDATA/ </stripfile> <file name="log/test1401.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> |
︙ | ︙ | |||
96 97 98 99 100 101 102 | (long)CURLPROTO_HTTP); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer | < | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | (long)CURLPROTO_HTTP); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer |
︙ | ︙ |
Changes to jni/curl/tests/data/test1402.
︙ | ︙ | |||
55 56 57 58 59 60 61 62 63 64 65 66 67 68 | # curl's default user-agent varies with version, libraries etc. s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ </stripfile> <file name="log/test1402.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> | > | 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | # curl's default user-agent varies with version, libraries etc. s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_INTERLEAVEDATA/ </stripfile> <file name="log/test1402.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> |
︙ | ︙ | |||
84 85 86 87 88 89 90 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer | < | 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer |
︙ | ︙ |
Changes to jni/curl/tests/data/test1403.
︙ | ︙ | |||
52 53 54 55 56 57 58 59 60 61 62 63 64 65 | # curl's default user-agent varies with version, libraries etc. s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ </stripfile> <file name="log/test1403.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> | > | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # curl's default user-agent varies with version, libraries etc. s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_INTERLEAVEDATA/ </stripfile> <file name="log/test1403.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html ************************************************************************/ #include <curl/curl.h> |
︙ | ︙ | |||
79 80 81 82 83 84 85 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer | < | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer |
︙ | ︙ |
Changes to jni/curl/tests/data/test1404.
︙ | ︙ | |||
90 91 92 93 94 95 96 97 98 99 100 101 102 103 | # curl's default user-agent varies with version, libraries etc. s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ # CURL_DOES_CONVERSION generates an extra comment. $_ = '' if /\/\* "value" \*\// </stripfile> <file name="log/test1404.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html | > | 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | # curl's default user-agent varies with version, libraries etc. s/(USERAGENT, \")[^\"]+/${1}stripped/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_INTERLEAVEDATA/ # CURL_DOES_CONVERSION generates an extra comment. $_ = '' if /\/\* "value" \*\// </stripfile> <file name="log/test1404.c" mode="text"> /********* Sample code generated by the curl command line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html |
︙ | ︙ | |||
150 151 152 153 154 155 156 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer | < | 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer |
︙ | ︙ |
Changes to jni/curl/tests/data/test1405.
︙ | ︙ | |||
92 93 94 95 96 97 98 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer | < | 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer |
︙ | ︙ | |||
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | return (int)ret; } /**** End of sample code ****/ </file> <stripfile> # CURLOPT_USERAGENT and CURLOPT_MAXREDIRS requires HTTP protocol # support, IOW depends on configuration - just ignore these. $_ = '' if /CURLOPT_USERAGENT/ $_ = '' if /CURLOPT_MAXREDIRS/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_HTTP09_ALLOWED/ </stripfile> </verify> </testcase> | > > | 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | return (int)ret; } /**** End of sample code ****/ </file> <stripfile> # CURLOPT_USERAGENT and CURLOPT_MAXREDIRS requires HTTP protocol # CURLOPT_INTERLEAVEDATA requires RTSP (HTTP) protocol # support, IOW depends on configuration - just ignore these. $_ = '' if /CURLOPT_USERAGENT/ $_ = '' if /CURLOPT_MAXREDIRS/ # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with # configurations - just ignore them $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_HTTP09_ALLOWED/ $_ = '' if /CURLOPT_INTERLEAVEDATA/ </stripfile> </verify> </testcase> |
Changes to jni/curl/tests/data/test1407.
︙ | ︙ | |||
65 66 67 68 69 70 71 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer | < | 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer |
︙ | ︙ | |||
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | return (int)ret; } /**** End of sample code ****/ </file> <stripfile> # These options vary with configurations - just ignore them $_ = '' if /CURLOPT_USERAGENT/ $_ = '' if /CURLOPT_MAXREDIRS/ $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_HTTP09_ALLOWED/ </stripfile> </verify> </testcase> | > > | 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | return (int)ret; } /**** End of sample code ****/ </file> <stripfile> # These options vary with configurations - just ignore them # CURLOPT_INTERLEAVEDATA requires RTSP (HTTP) protocol $_ = '' if /CURLOPT_USERAGENT/ $_ = '' if /CURLOPT_MAXREDIRS/ $_ = '' if /CURLOPT_SSL_VERIFYPEER/ $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ $_ = '' if /CURLOPT_HTTP_VERSION/ $_ = '' if /CURLOPT_HTTP09_ALLOWED/ $_ = '' if /CURLOPT_INTERLEAVEDATA/ </stripfile> </verify> </testcase> |
Changes to jni/curl/tests/data/test1506.
︙ | ︙ | |||
84 85 86 87 88 89 90 | </strip> <file name="log/stderr1506" mode="text"> * Connection #0 to host server1.example.com left intact * Connection #1 to host server2.example.com left intact * Connection #2 to host server3.example.com left intact * Closing connection 0 * Connection #3 to host server4.example.com left intact | < < < < | 84 85 86 87 88 89 90 91 92 93 94 95 96 | </strip> <file name="log/stderr1506" mode="text"> * Connection #0 to host server1.example.com left intact * Connection #1 to host server2.example.com left intact * Connection #2 to host server3.example.com left intact * Closing connection 0 * Connection #3 to host server4.example.com left intact </file> <stripfile> $_ = '' if (($_ !~ /left intact/) && ($_ !~ /Closing connection/)) </stripfile> </verify> </testcase> |
Added jni/curl/tests/data/test1559.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <testcase> <info> <keywords> CURLOPT_URL </keywords> </info> <reply> </reply> <client> <server> none </server> # require HTTP so that CURLOPT_POSTFIELDS works as assumed <features> http </features> <tool> lib1559 </tool> <name> Set excessive URL lengths </name> </client> # # Verify that the test runs to completion without crashing <verify> <errorcode> 0 </errorcode> <stdout> CURLOPT_URL 10000000 bytes URL == 43 CURLOPT_POSTFIELDS 10000000 bytes data == 0 CURLUPART_URL 10000000 bytes URL == 3 CURLUPART_SCHEME 10000000 bytes scheme == 3 CURLUPART_USER 10000000 bytes user == 3 </stdout> </verify> </testcase> |
Changes to jni/curl/tests/data/test1560.
︙ | ︙ | |||
27 28 29 30 31 32 33 34 | URL API </name> <tool> lib1560 </tool> </client> </testcase> | > > > > > > > > > > > > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | URL API </name> <tool> lib1560 </tool> </client> <verify> <stdout> we got [fe80::20c:29ff:fe9c:409b] we got https://[::1]/hello.html we got https://example.com/hello.html we got https://[fe80::20c:29ff:fe9c:409b%25eth0]/hello.html we got [fe80::20c:29ff:fe9c:409b] we got eth0 we got https://[fe80::20c:29ff:fe9c:409b%25clown]/hello.html success </stdout> </verify> </testcase> |
Added jni/curl/tests/data/test1906.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <testcase> <info> <keywords> CURLOPT_CURLU CURLOPT_PORT </keywords> </info> # Server-side <reply> <data nocheck="yes"> HTTP/1.1 200 OK Date: Thu, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose </data> </reply> # Client-side <client> <server> http </server> <name> CURLOPT_CURLU and CURLOPT_PORT </name> <tool> lib1906 </tool> # The tool does two requesets, the first sets CURLOPT_PORT to 1 # the second resets the port again and expects that request to work. <command> http://%HOSTIP:%HTTPPORT/1906 </command> </client> # Verify data after the test has been "shot" <verify> <strip> ^User-Agent:.* </strip> <protocol> GET /1906 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test196.
1 2 3 4 5 6 7 8 9 10 11 | <testcase> <info> <keywords> FTP </keywords> </info> # Server-side <reply> <servercmd> REPLY PASS 430 temporarily not available | > | 1 2 3 4 5 6 7 8 9 10 11 12 | <testcase> <info> <keywords> FTP retry </keywords> </info> # Server-side <reply> <servercmd> REPLY PASS 430 temporarily not available |
︙ | ︙ |
Changes to jni/curl/tests/data/test197.
1 2 3 4 5 6 7 8 9 10 11 12 | <testcase> <info> <keywords> HTTP HTTP GET </keywords> </info> # # Server-side <reply> <data nocheck="yes"> HTTP/1.1 503 OK swsbounce | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 | <testcase> <info> <keywords> HTTP HTTP GET retry </keywords> </info> # # Server-side <reply> <data nocheck="yes"> HTTP/1.1 503 OK swsbounce |
︙ | ︙ |
Changes to jni/curl/tests/data/test198.
1 2 3 4 5 6 7 8 9 10 11 12 | <testcase> <info> <keywords> HTTP HTTP GET </keywords> </info> # # Server-side <reply> <data> HTTP/1.1 503 OK swsbounce | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 | <testcase> <info> <keywords> HTTP HTTP GET retry </keywords> </info> # # Server-side <reply> <data> HTTP/1.1 503 OK swsbounce |
︙ | ︙ |
Changes to jni/curl/tests/data/test2100.
cannot compute difference between binary files
Added jni/curl/tests/data/test332.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <testcase> <info> <keywords> TFTP TFTP RRQ FAILURE </keywords> </info> <reply> <data> a chunk of data returned to client </data> </reply> # # Client-side <client> <server> tftp </server> <name> TFTP retrieve with blksize 400 </name> <command> tftp://%HOSTIP:%TFTPPORT//332 --tftp-blksize 400 </command> </client> # # Verify pseudo protocol after the test has been "shot" <verify> <protocol> opcode: 1 mode: octet tsize: 0 blksize: 400 timeout: 6 filename: /332 </protocol> </verify> </testcase> |
Added jni/curl/tests/data/test333.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <testcase> <info> <keywords> command-line </keywords> </info> # # Server-side <reply> </reply> # # Client-side <client> <server> none </server> <name> Try a non-boolean command line option with --no- </name> <command> --no-proxy "hey" http://%HOSTIP:%HTTPPORT/333 </command> </client> # # Verify data after the test has been "shot" <verify> # detected the bad --no- prefix <errorcode> 2 </errorcode> </verify> </testcase> |
Deleted jni/curl/tests/data/test536.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Added jni/curl/tests/data/test660.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <testcase> <info> <keywords> IMAP CONNECT_ONLY </keywords> </info> # Client-side <client> <server> imap </server> <tool> lib597 </tool> <name> IMAP CONNECT_ONLY option </name> <command> imap://%HOSTIP:%IMAPPORT/660 </command> </client> # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test702.
︙ | ︙ | |||
8 9 10 11 12 13 14 15 16 17 18 19 20 21 | FAILURE </keywords> </info> # Server-side <reply> <data> </data> </reply> # Client-side <client> <server> socks4 </server> | > > > > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | FAILURE </keywords> </info> # Server-side <reply> <data> </data> # 91 is socks4 failure <servercmd> response 91 </servercmd> </reply> # Client-side <client> <server> socks4 </server> |
︙ | ︙ |
Changes to jni/curl/tests/data/test703.
︙ | ︙ | |||
8 9 10 11 12 13 14 15 16 17 18 19 20 21 | FAILURE </keywords> </info> # Server-side <reply> <data> </data> </reply> # Client-side <client> <server> socks5 </server> | > > > > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | FAILURE </keywords> </info> # Server-side <reply> <data> </data> # 1 is socks5 failure <servercmd> response 1 </servercmd> </reply> # Client-side <client> <server> socks5 </server> |
︙ | ︙ |
Changes to jni/curl/tests/data/test709.
︙ | ︙ | |||
30 31 32 33 34 35 36 | # Client-side <client> <server> http socks5 </server> <setenv> | | | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # Client-side <client> <server> http socks5 </server> <setenv> http_proxy=socks5://%HOSTIP:%SOCKSPORT </setenv> <name> HTTP GET via SOCKS5 set in http_proxy environment variable </name> <command> http://%HOSTIP:%HTTPPORT/709 </command> |
︙ | ︙ |
Changes to jni/curl/tests/data/test711.
︙ | ︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | </info> # # Server-side <reply> <data> silly content </data> </reply> # # Client-side <client> <server> ftp socks5 </server> <setenv> | > > | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | </info> # # Server-side <reply> <data> silly content </data> <servercmd> </servercmd> </reply> # # Client-side <client> <server> ftp socks5 </server> <setenv> all_proxy=socks5://%HOSTIP:%SOCKSPORT </setenv> <name> FTP fetch with all_proxy set to socks5 </name> <command> ftp://%HOSTIP:%FTPPORT/711 </command> |
︙ | ︙ |
Added jni/curl/tests/data/test716.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <testcase> <info> <keywords> HTTP SOCKS5 all_proxy </keywords> </info> # # Server-side <reply> # method 2 is SOCKS5 asking for user+password <servercmd> method 2 </servercmd> </reply> # # Client-side <client> <server> socks5 </server> <features> http </features> <name> SOCKS5 proxy with too long user name </name> # it should never connect to the target server <command> http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@%HOSTIP:%SOCKSPORT </command> </client> # # Verify data after the test has been "shot" <verify> <errorcode> 43 </errorcode> </verify> </testcase> |
Added jni/curl/tests/data/test717.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <testcase> <info> <keywords> HTTP SOCKS5 all_proxy </keywords> </info> # # Server-side <reply> <data> HTTP/1.1 200 OK Date: Thu, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- </data> # method 2 is SOCKS5 asking for user+password <servercmd> method 2 user uz3r password p4ssworm backendport %HTTPPORT </servercmd> </reply> # # Client-side <client> <server> socks5 http </server> <name> SOCKS5 proxy auth </name> # target a port that won't work without the SOCKS magic <command> http://%HOSTIP:1/717 -x socks5://uz3r:p4ssworm@%HOSTIP:%SOCKSPORT </command> </client> # # Verify data after the test has been "shot" <verify> <strip> ^User-Agent:.* </strip> <protocol> GET /717 HTTP/1.1 Host: %HOSTIP:1 Accept: */* </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test819.
︙ | ︙ | |||
10 11 12 13 14 15 16 | # # Server-side <reply> <servercmd> AUTH PLAIN REPLY AUTHENTICATE + | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # # Server-side <reply> <servercmd> AUTH PLAIN REPLY AUTHENTICATE + REPLY AHVzZXIAc2VjcmV0 A002 OK AUTHENTICATE completed </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
43 44 45 46 47 48 49 | # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE PLAIN | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE PLAIN AHVzZXIAc2VjcmV0 A003 SELECT 819 A004 FETCH 1 BODY[] A005 LOGOUT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test825.
︙ | ︙ | |||
43 44 45 46 47 48 49 | </client> # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | </client> # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE PLAIN AHVzZXIAc2VjcmV0 A003 SELECT 825 A004 FETCH 1 BODY[] A005 LOGOUT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test833.
︙ | ︙ | |||
14 15 16 17 18 19 20 | # Server-side <reply> <servercmd> AUTH CRAM-MD5 PLAIN REPLY "AUTHENTICATE CRAM-MD5" + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # Server-side <reply> <servercmd> AUTH CRAM-MD5 PLAIN REPLY "AUTHENTICATE CRAM-MD5" + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + REPLY AHVzZXIAc2VjcmV0 A003 OK AUTHENTICATE completed </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
52 53 54 55 56 57 58 | # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE CRAM-MD5 * A003 AUTHENTICATE PLAIN | | | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE CRAM-MD5 * A003 AUTHENTICATE PLAIN AHVzZXIAc2VjcmV0 A004 SELECT 833 A005 FETCH 1 BODY[] A006 LOGOUT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test834.
︙ | ︙ | |||
14 15 16 17 18 19 20 | <reply> <servercmd> AUTH NTLM PLAIN REPLY "AUTHENTICATE NTLM" + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <reply> <servercmd> AUTH NTLM PLAIN REPLY "AUTHENTICATE NTLM" + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + REPLY AHVzZXIAc2VjcmV0 A003 OK AUTHENTICATE completed </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
63 64 65 66 67 68 69 | <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= * A003 AUTHENTICATE PLAIN | | | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= * A003 AUTHENTICATE PLAIN AHVzZXIAc2VjcmV0 A004 SELECT 834 A005 FETCH 1 BODY[] A006 LOGOUT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test835.
︙ | ︙ | |||
14 15 16 17 18 19 20 | # Server-side <reply> <servercmd> AUTH DIGEST-MD5 PLAIN REPLY "AUTHENTICATE DIGEST-MD5" + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # Server-side <reply> <servercmd> AUTH DIGEST-MD5 PLAIN REPLY "AUTHENTICATE DIGEST-MD5" + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + REPLY AHVzZXIAc2VjcmV0 A003 OK AUTHENTICATE completed </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
54 55 56 57 58 59 60 | # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE DIGEST-MD5 * A003 AUTHENTICATE PLAIN | | | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE DIGEST-MD5 * A003 AUTHENTICATE PLAIN AHVzZXIAc2VjcmV0 A004 SELECT 835 A005 FETCH 1 BODY[] A006 LOGOUT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test842.
︙ | ︙ | |||
11 12 13 14 15 16 17 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTHENTICATE + | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTHENTICATE + REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMwFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== A002 OK AUTHENTICATE completed </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
49 50 51 52 53 54 55 | # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE OAUTHBEARER | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMwFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== A003 SELECT 842 A004 FETCH 1 BODY[] A005 LOGOUT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test843.
︙ | ︙ | |||
49 50 51 52 53 54 55 | </client> # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | </client> # # Verify data after the test has been "shot" <verify> <protocol> A001 CAPABILITY A002 AUTHENTICATE OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMwFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== A003 SELECT 843 A004 FETCH 1 BODY[] A005 LOGOUT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test844.
︙ | ︙ | |||
11 12 13 14 15 16 17 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTHENTICATE + | > | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTHENTICATE + REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMwFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0= REPLY AQ== A002 NO Authentication failed </servercmd> </reply> # # Client-side <client> |
︙ | ︙ | |||
48 49 50 51 52 53 54 | </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "LOGOUT" <protocol> A001 CAPABILITY A002 AUTHENTICATE OAUTHBEARER | | | 49 50 51 52 53 54 55 56 57 58 59 60 | </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "LOGOUT" <protocol> A001 CAPABILITY A002 AUTHENTICATE OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMwFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== AQ== </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test845.
︙ | ︙ | |||
48 49 50 51 52 53 54 | 67 </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "LOGOUT" <protocol> A001 CAPABILITY | | | 48 49 50 51 52 53 54 55 56 57 58 59 | 67 </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "LOGOUT" <protocol> A001 CAPABILITY A002 AUTHENTICATE OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMwFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== AQ== </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test865.
︙ | ︙ | |||
12 13 14 15 16 17 18 | # # Server-side <reply> <servercmd> AUTH PLAIN REPLY AUTH + | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # # Server-side <reply> <servercmd> AUTH PLAIN REPLY AUTH + REPLY AHVzZXIAc2VjcmV0 +OK Login successful </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
45 46 47 48 49 50 51 | # # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH PLAIN | | | 45 46 47 48 49 50 51 52 53 54 55 56 57 | # # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH PLAIN AHVzZXIAc2VjcmV0 RETR 865 QUIT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test871.
︙ | ︙ | |||
44 45 46 47 48 49 50 | </client> # # Verify data after the test has been "shot" <verify> <protocol> CAPA | | | 44 45 46 47 48 49 50 51 52 53 54 55 56 | </client> # # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH PLAIN AHVzZXIAc2VjcmV0 RETR 871 QUIT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test879.
︙ | ︙ | |||
16 17 18 19 20 21 22 | # Server-side <reply> <servercmd> AUTH CRAM-MD5 PLAIN REPLY "AUTH CRAM-MD5" + Rubbish REPLY * -ERR AUTH exchange cancelled by client REPLY "AUTH PLAIN" + | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # Server-side <reply> <servercmd> AUTH CRAM-MD5 PLAIN REPLY "AUTH CRAM-MD5" + Rubbish REPLY * -ERR AUTH exchange cancelled by client REPLY "AUTH PLAIN" + REPLY AHVzZXIAc2VjcmV0 +OK Login successful </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
54 55 56 57 58 59 60 | # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH CRAM-MD5 * AUTH PLAIN | | | 54 55 56 57 58 59 60 61 62 63 64 65 66 | # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH CRAM-MD5 * AUTH PLAIN AHVzZXIAc2VjcmV0 RETR 879 QUIT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test880.
︙ | ︙ | |||
16 17 18 19 20 21 22 | <reply> <servercmd> AUTH NTLM PLAIN REPLY "AUTH NTLM" + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish REPLY * -ERR AUTH exchange cancelled by client REPLY "AUTH PLAIN" + | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <reply> <servercmd> AUTH NTLM PLAIN REPLY "AUTH NTLM" + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish REPLY * -ERR AUTH exchange cancelled by client REPLY "AUTH PLAIN" + REPLY AHVzZXIAc2VjcmV0 +OK Login successful </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
65 66 67 68 69 70 71 | <verify> <protocol> CAPA AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= * AUTH PLAIN | | | 65 66 67 68 69 70 71 72 73 74 75 76 77 | <verify> <protocol> CAPA AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= * AUTH PLAIN AHVzZXIAc2VjcmV0 RETR 880 QUIT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test881.
︙ | ︙ | |||
16 17 18 19 20 21 22 | # Server-side <reply> <servercmd> AUTH DIGEST-MD5 PLAIN REPLY "AUTH DIGEST-MD5" + Rubbish REPLY * -ERR AUTH exchange cancelled by client REPLY "AUTH PLAIN" + | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # Server-side <reply> <servercmd> AUTH DIGEST-MD5 PLAIN REPLY "AUTH DIGEST-MD5" + Rubbish REPLY * -ERR AUTH exchange cancelled by client REPLY "AUTH PLAIN" + REPLY AHVzZXIAc2VjcmV0 +OK Login successful </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
56 57 58 59 60 61 62 | # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH DIGEST-MD5 * AUTH PLAIN | | | 56 57 58 59 60 61 62 63 64 65 66 67 68 | # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH DIGEST-MD5 * AUTH PLAIN AHVzZXIAc2VjcmV0 RETR 881 QUIT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test887.
︙ | ︙ | |||
13 14 15 16 17 18 19 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH + | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH + REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== +OK Login successful </servercmd> <data> From: me@somewhere To: fake@nowhere body |
︙ | ︙ | |||
51 52 53 54 55 56 57 | # # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH OAUTHBEARER | | | 51 52 53 54 55 56 57 58 59 60 61 62 63 | # # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== RETR 887 QUIT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test888.
︙ | ︙ | |||
50 51 52 53 54 55 56 | </client> # # Verify data after the test has been "shot" <verify> <protocol> CAPA | | | 50 51 52 53 54 55 56 57 58 59 60 61 62 | </client> # # Verify data after the test has been "shot" <verify> <protocol> CAPA AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== RETR 888 QUIT </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test889.
︙ | ︙ | |||
13 14 15 16 17 18 19 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH + | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH + REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0 REPLY AQ== -ERR Authentication failed </servercmd> </reply> # # Client-side <client> |
︙ | ︙ | |||
50 51 52 53 54 55 56 | </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> CAPA AUTH OAUTHBEARER | | | 50 51 52 53 54 55 56 57 58 59 60 61 | </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> CAPA AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== AQ== </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test890.
︙ | ︙ | |||
49 50 51 52 53 54 55 | 67 </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> CAPA | | | 49 50 51 52 53 54 55 56 57 58 59 60 | 67 </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> CAPA AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwMQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== AQ== </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test903.
︙ | ︙ | |||
11 12 13 14 15 16 17 | # # Server-side <reply> <servercmd> AUTH PLAIN REPLY AUTH 334 PLAIN supported | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # # Server-side <reply> <servercmd> AUTH PLAIN REPLY AUTH 334 PLAIN supported REPLY AHVzZXIAc2VjcmV0 235 Authenticated </servercmd> </reply> # # Client-side <client> <server> |
︙ | ︙ | |||
38 39 40 41 42 43 44 | # # Verify data after the test has been "shot" <verify> <protocol> EHLO 903 AUTH PLAIN | | | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # # Verify data after the test has been "shot" <verify> <protocol> EHLO 903 AUTH PLAIN AHVzZXIAc2VjcmV0 MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA QUIT </protocol> <upload> mail body . </upload> </verify> </testcase> |
Changes to jni/curl/tests/data/test919.
︙ | ︙ | |||
37 38 39 40 41 42 43 | </client> # # Verify data after the test has been "shot" <verify> <protocol> EHLO 919 | | | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | </client> # # Verify data after the test has been "shot" <verify> <protocol> EHLO 919 AUTH PLAIN AHVzZXIAc2VjcmV0 MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA QUIT </protocol> <upload> mail body |
︙ | ︙ |
Changes to jni/curl/tests/data/test935.
︙ | ︙ | |||
15 16 17 18 19 20 21 | # Server-side <reply> <servercmd> AUTH CRAM-MD5 PLAIN REPLY "AUTH CRAM-MD5" 334 Rubbish REPLY * 501 AUTH exchange cancelled by client REPLY "AUTH PLAIN" 334 PLAIN supported | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # Server-side <reply> <servercmd> AUTH CRAM-MD5 PLAIN REPLY "AUTH CRAM-MD5" 334 Rubbish REPLY * 501 AUTH exchange cancelled by client REPLY "AUTH PLAIN" 334 PLAIN supported REPLY AHVzZXIAc2VjcmV0 235 Authenticated </servercmd> </reply> # # Client-side <client> <server> |
︙ | ︙ | |||
47 48 49 50 51 52 53 | # Verify data after the test has been "shot" <verify> <protocol> EHLO 935 AUTH CRAM-MD5 * AUTH PLAIN | | | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | # Verify data after the test has been "shot" <verify> <protocol> EHLO 935 AUTH CRAM-MD5 * AUTH PLAIN AHVzZXIAc2VjcmV0 MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA QUIT </protocol> <upload> mail body . </upload> </verify> </testcase> |
Changes to jni/curl/tests/data/test936.
︙ | ︙ | |||
15 16 17 18 19 20 21 | <reply> <servercmd> AUTH NTLM PLAIN REPLY "AUTH NTLM" 334 NTLM supported REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 334 Rubbish REPLY * 501 AUTH exchange cancelled by client REPLY "AUTH PLAIN" 334 PLAIN supported | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <reply> <servercmd> AUTH NTLM PLAIN REPLY "AUTH NTLM" 334 NTLM supported REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 334 Rubbish REPLY * 501 AUTH exchange cancelled by client REPLY "AUTH PLAIN" 334 PLAIN supported REPLY AHVzZXIAc2VjcmV0 235 Authenticated </servercmd> </reply> # # Client-side <client> <server> |
︙ | ︙ | |||
58 59 60 61 62 63 64 | <verify> <protocol> EHLO 936 AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= * AUTH PLAIN | | | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | <verify> <protocol> EHLO 936 AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= * AUTH PLAIN AHVzZXIAc2VjcmV0 MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA QUIT </protocol> <upload> mail body . </upload> </verify> </testcase> |
Changes to jni/curl/tests/data/test937.
︙ | ︙ | |||
15 16 17 18 19 20 21 | # Server-side <reply> <servercmd> AUTH DIGEST-MD5 PLAIN REPLY "AUTH DIGEST-MD5" 334 Rubbish REPLY * 501 AUTH exchange cancelled by client REPLY "AUTH PLAIN" 334 PLAIN supported | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # Server-side <reply> <servercmd> AUTH DIGEST-MD5 PLAIN REPLY "AUTH DIGEST-MD5" 334 Rubbish REPLY * 501 AUTH exchange cancelled by client REPLY "AUTH PLAIN" 334 PLAIN supported REPLY AHVzZXIAc2VjcmV0 235 Authenticated </servercmd> </reply> # # Client-side <client> <server> |
︙ | ︙ | |||
49 50 51 52 53 54 55 | # Verify data after the test has been "shot" <verify> <protocol> EHLO 937 AUTH DIGEST-MD5 * AUTH PLAIN | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | # Verify data after the test has been "shot" <verify> <protocol> EHLO 937 AUTH DIGEST-MD5 * AUTH PLAIN AHVzZXIAc2VjcmV0 MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA QUIT </protocol> <upload> mail body . </upload> </verify> </testcase> |
Changes to jni/curl/tests/data/test946.
︙ | ︙ | |||
12 13 14 15 16 17 18 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH 334 OAUTHBEARER supported | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH 334 OAUTHBEARER supported REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwNQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== 235 Authenticated </servercmd> </reply> # # Client-side <client> <server> |
︙ | ︙ | |||
44 45 46 47 48 49 50 | # # Verify data after the test has been "shot" <verify> <protocol> EHLO 946 AUTH OAUTHBEARER | | | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # # Verify data after the test has been "shot" <verify> <protocol> EHLO 946 AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwNQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA QUIT </protocol> <upload> mail body . </upload> </verify> </testcase> |
Changes to jni/curl/tests/data/test947.
︙ | ︙ | |||
43 44 45 46 47 48 49 | </client> # # Verify data after the test has been "shot" <verify> <protocol> EHLO 947 | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | </client> # # Verify data after the test has been "shot" <verify> <protocol> EHLO 947 AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwNQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA QUIT </protocol> <upload> mail body |
︙ | ︙ |
Changes to jni/curl/tests/data/test948.
︙ | ︙ | |||
12 13 14 15 16 17 18 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH 334 OAUTHBEARER supported | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # # Server-side <reply> <servercmd> AUTH OAUTHBEARER REPLY AUTH 334 OAUTHBEARER supported REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwNQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== 334 eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0 REPLY AQ== 535 Username and Password not accepted. Learn more at\r\n535 http://support.example.com/mail/oauth </servercmd> </reply> #vi # Client-side <client> |
︙ | ︙ | |||
52 53 54 55 56 57 58 | </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> EHLO 948 AUTH OAUTHBEARER | | | 52 53 54 55 56 57 58 59 60 61 62 63 | </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> EHLO 948 AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwNQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== AQ== </protocol> </verify> </testcase> |
Changes to jni/curl/tests/data/test949.
︙ | ︙ | |||
51 52 53 54 55 56 57 | 67 </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> EHLO 949 | | | 51 52 53 54 55 56 57 58 59 60 61 62 | 67 </errorcode> # # The multi interface considers a broken "CONNECT" as a prematurely broken # transfer and such a connection will not get a "QUIT" <protocol> EHLO 949 AUTH OAUTHBEARER bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9OTAwNQFhdXRoPUJlYXJlciBtRl85LkI1Zi00LjFKcU0BAQ== AQ== </protocol> </verify> </testcase> |
Changes to jni/curl/tests/getpart.pm.
1 2 3 4 5 6 7 | #*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ |
Changes to jni/curl/tests/libtest/Makefile.in.
︙ | ︙ | |||
97 98 99 100 101 102 103 | lib509$(EXEEXT) lib510$(EXEEXT) lib511$(EXEEXT) \ lib512$(EXEEXT) lib513$(EXEEXT) lib514$(EXEEXT) \ lib515$(EXEEXT) lib516$(EXEEXT) lib517$(EXEEXT) \ lib518$(EXEEXT) lib519$(EXEEXT) lib520$(EXEEXT) \ lib521$(EXEEXT) lib523$(EXEEXT) lib524$(EXEEXT) \ lib525$(EXEEXT) lib526$(EXEEXT) lib527$(EXEEXT) \ lib529$(EXEEXT) lib530$(EXEEXT) lib532$(EXEEXT) \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | lib509$(EXEEXT) lib510$(EXEEXT) lib511$(EXEEXT) \ lib512$(EXEEXT) lib513$(EXEEXT) lib514$(EXEEXT) \ lib515$(EXEEXT) lib516$(EXEEXT) lib517$(EXEEXT) \ lib518$(EXEEXT) lib519$(EXEEXT) lib520$(EXEEXT) \ lib521$(EXEEXT) lib523$(EXEEXT) lib524$(EXEEXT) \ lib525$(EXEEXT) lib526$(EXEEXT) lib527$(EXEEXT) \ lib529$(EXEEXT) lib530$(EXEEXT) lib532$(EXEEXT) \ lib533$(EXEEXT) lib537$(EXEEXT) lib539$(EXEEXT) \ lib540$(EXEEXT) lib541$(EXEEXT) lib542$(EXEEXT) \ lib543$(EXEEXT) lib544$(EXEEXT) lib545$(EXEEXT) \ lib547$(EXEEXT) lib548$(EXEEXT) lib549$(EXEEXT) \ lib552$(EXEEXT) lib553$(EXEEXT) lib554$(EXEEXT) \ lib555$(EXEEXT) lib556$(EXEEXT) lib557$(EXEEXT) \ lib558$(EXEEXT) lib559$(EXEEXT) lib560$(EXEEXT) \ lib562$(EXEEXT) lib564$(EXEEXT) lib565$(EXEEXT) \ lib566$(EXEEXT) lib567$(EXEEXT) lib568$(EXEEXT) \ lib569$(EXEEXT) lib570$(EXEEXT) lib571$(EXEEXT) \ lib572$(EXEEXT) lib573$(EXEEXT) lib574$(EXEEXT) \ lib575$(EXEEXT) lib576$(EXEEXT) lib578$(EXEEXT) \ lib579$(EXEEXT) lib582$(EXEEXT) lib583$(EXEEXT) \ lib585$(EXEEXT) lib586$(EXEEXT) lib587$(EXEEXT) \ lib589$(EXEEXT) lib590$(EXEEXT) lib591$(EXEEXT) \ lib597$(EXEEXT) lib598$(EXEEXT) lib599$(EXEEXT) \ lib643$(EXEEXT) lib644$(EXEEXT) lib645$(EXEEXT) \ lib650$(EXEEXT) lib651$(EXEEXT) lib652$(EXEEXT) \ lib653$(EXEEXT) lib654$(EXEEXT) lib655$(EXEEXT) \ lib658$(EXEEXT) lib659$(EXEEXT) lib1156$(EXEEXT) \ lib1500$(EXEEXT) lib1501$(EXEEXT) lib1502$(EXEEXT) \ lib1503$(EXEEXT) lib1504$(EXEEXT) lib1505$(EXEEXT) \ lib1506$(EXEEXT) lib1507$(EXEEXT) lib1508$(EXEEXT) \ lib1509$(EXEEXT) lib1510$(EXEEXT) lib1511$(EXEEXT) \ lib1512$(EXEEXT) lib1513$(EXEEXT) lib1514$(EXEEXT) \ lib1515$(EXEEXT) lib1517$(EXEEXT) lib1518$(EXEEXT) \ lib1520$(EXEEXT) lib1521$(EXEEXT) lib1522$(EXEEXT) \ lib1525$(EXEEXT) lib1526$(EXEEXT) lib1527$(EXEEXT) \ lib1528$(EXEEXT) lib1529$(EXEEXT) lib1530$(EXEEXT) \ lib1531$(EXEEXT) lib1532$(EXEEXT) lib1533$(EXEEXT) \ lib1534$(EXEEXT) lib1535$(EXEEXT) lib1536$(EXEEXT) \ lib1537$(EXEEXT) lib1538$(EXEEXT) lib1540$(EXEEXT) \ lib1541$(EXEEXT) lib1550$(EXEEXT) lib1551$(EXEEXT) \ lib1552$(EXEEXT) lib1553$(EXEEXT) lib1554$(EXEEXT) \ lib1555$(EXEEXT) lib1556$(EXEEXT) lib1557$(EXEEXT) \ lib1558$(EXEEXT) lib1559$(EXEEXT) lib1560$(EXEEXT) \ lib1591$(EXEEXT) lib1592$(EXEEXT) lib1900$(EXEEXT) \ lib1905$(EXEEXT) lib1906$(EXEEXT) lib2033$(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_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text @DOING_CURL_SYMBOL_HIDING_TRUE@am__append_4 = -DCURL_HIDDEN_SYMBOLS @DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = $(CFLAG_CURL_SYMBOL_HIDING) # Build a stub gssapi implementation for testing |
︙ | ︙ | |||
517 518 519 520 521 522 523 524 525 526 527 528 529 530 | am__objects_120 = first.$(OBJEXT) am__objects_121 = testutil.$(OBJEXT) am__objects_122 = ../../lib/warnless.$(OBJEXT) am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_120) \ $(am__objects_121) $(am__objects_122) lib1558_OBJECTS = $(am_lib1558_OBJECTS) lib1558_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_120) \ $(am__objects_121) $(am__objects_122) lib1560_OBJECTS = $(am_lib1560_OBJECTS) lib1560_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_123 = lib1591-first.$(OBJEXT) am__objects_124 = lib1591-testutil.$(OBJEXT) am__objects_125 = ../../lib/lib1591-warnless.$(OBJEXT) | > > > > | 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 | am__objects_120 = first.$(OBJEXT) am__objects_121 = testutil.$(OBJEXT) am__objects_122 = ../../lib/warnless.$(OBJEXT) am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_120) \ $(am__objects_121) $(am__objects_122) lib1558_OBJECTS = $(am_lib1558_OBJECTS) lib1558_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1559_OBJECTS = lib1559.$(OBJEXT) $(am__objects_120) \ $(am__objects_121) $(am__objects_122) lib1559_OBJECTS = $(am_lib1559_OBJECTS) lib1559_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_120) \ $(am__objects_121) $(am__objects_122) lib1560_OBJECTS = $(am_lib1560_OBJECTS) lib1560_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_123 = lib1591-first.$(OBJEXT) am__objects_124 = lib1591-testutil.$(OBJEXT) am__objects_125 = ../../lib/lib1591-warnless.$(OBJEXT) |
︙ | ︙ | |||
549 550 551 552 553 554 555 | am__objects_132 = lib1905-first.$(OBJEXT) am__objects_133 = lib1905-testutil.$(OBJEXT) am__objects_134 = ../../lib/lib1905-warnless.$(OBJEXT) am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_132) \ $(am__objects_133) $(am__objects_134) lib1905_OBJECTS = $(am_lib1905_OBJECTS) lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1) | | > > > > > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < < < < < < < | 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 | am__objects_132 = lib1905-first.$(OBJEXT) am__objects_133 = lib1905-testutil.$(OBJEXT) am__objects_134 = ../../lib/lib1905-warnless.$(OBJEXT) am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_132) \ $(am__objects_133) $(am__objects_134) lib1905_OBJECTS = $(am_lib1905_OBJECTS) lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_135 = lib1906-first.$(OBJEXT) am__objects_136 = lib1906-testutil.$(OBJEXT) am__objects_137 = ../../lib/lib1906-warnless.$(OBJEXT) am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_135) \ $(am__objects_136) $(am__objects_137) lib1906_OBJECTS = $(am_lib1906_OBJECTS) lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_138 = lib2033-first.$(OBJEXT) am__objects_139 = lib2033-testutil.$(OBJEXT) am__objects_140 = ../../lib/lib2033-warnless.$(OBJEXT) am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \ $(am__objects_138) $(am__objects_139) $(am__objects_140) lib2033_OBJECTS = $(am_lib2033_OBJECTS) lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_141 = lib500-first.$(OBJEXT) am__objects_142 = lib500-testutil.$(OBJEXT) am__objects_143 = lib500-testtrace.$(OBJEXT) am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_141) \ $(am__objects_142) $(am__objects_143) lib500_OBJECTS = $(am_lib500_OBJECTS) lib500_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_144 = lib501-first.$(OBJEXT) am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_144) lib501_OBJECTS = $(am_lib501_OBJECTS) lib501_LDADD = $(LDADD) lib501_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_145 = lib502-first.$(OBJEXT) am__objects_146 = lib502-testutil.$(OBJEXT) am__objects_147 = ../../lib/lib502-warnless.$(OBJEXT) am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_145) \ $(am__objects_146) $(am__objects_147) lib502_OBJECTS = $(am_lib502_OBJECTS) lib502_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_148 = lib503-first.$(OBJEXT) am__objects_149 = lib503-testutil.$(OBJEXT) am__objects_150 = ../../lib/lib503-warnless.$(OBJEXT) am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_148) \ $(am__objects_149) $(am__objects_150) lib503_OBJECTS = $(am_lib503_OBJECTS) lib503_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_151 = lib504-first.$(OBJEXT) am__objects_152 = lib504-testutil.$(OBJEXT) am__objects_153 = ../../lib/lib504-warnless.$(OBJEXT) am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_151) \ $(am__objects_152) $(am__objects_153) lib504_OBJECTS = $(am_lib504_OBJECTS) lib504_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_154 = lib505-first.$(OBJEXT) am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_154) lib505_OBJECTS = $(am_lib505_OBJECTS) lib505_LDADD = $(LDADD) lib505_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_155 = lib506-first.$(OBJEXT) am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_155) lib506_OBJECTS = $(am_lib506_OBJECTS) lib506_LDADD = $(LDADD) lib506_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_156 = lib507-first.$(OBJEXT) am__objects_157 = lib507-testutil.$(OBJEXT) am__objects_158 = ../../lib/lib507-warnless.$(OBJEXT) am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_156) \ $(am__objects_157) $(am__objects_158) lib507_OBJECTS = $(am_lib507_OBJECTS) lib507_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_159 = lib508-first.$(OBJEXT) am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_159) lib508_OBJECTS = $(am_lib508_OBJECTS) lib508_LDADD = $(LDADD) lib508_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_160 = lib509-first.$(OBJEXT) am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_160) lib509_OBJECTS = $(am_lib509_OBJECTS) lib509_LDADD = $(LDADD) lib509_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_161 = lib510-first.$(OBJEXT) am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_161) lib510_OBJECTS = $(am_lib510_OBJECTS) lib510_LDADD = $(LDADD) lib510_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_162 = lib511-first.$(OBJEXT) am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_162) lib511_OBJECTS = $(am_lib511_OBJECTS) lib511_LDADD = $(LDADD) lib511_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_163 = lib512-first.$(OBJEXT) am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_163) lib512_OBJECTS = $(am_lib512_OBJECTS) lib512_LDADD = $(LDADD) lib512_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_164 = lib513-first.$(OBJEXT) am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_164) lib513_OBJECTS = $(am_lib513_OBJECTS) lib513_LDADD = $(LDADD) lib513_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_165 = lib514-first.$(OBJEXT) am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_165) lib514_OBJECTS = $(am_lib514_OBJECTS) lib514_LDADD = $(LDADD) lib514_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_166 = lib515-first.$(OBJEXT) am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_166) lib515_OBJECTS = $(am_lib515_OBJECTS) lib515_LDADD = $(LDADD) lib515_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_167 = lib516-first.$(OBJEXT) am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_167) lib516_OBJECTS = $(am_lib516_OBJECTS) lib516_LDADD = $(LDADD) lib516_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_168 = lib517-first.$(OBJEXT) am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_168) lib517_OBJECTS = $(am_lib517_OBJECTS) lib517_LDADD = $(LDADD) lib517_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_169 = lib518-first.$(OBJEXT) am__objects_170 = ../../lib/lib518-warnless.$(OBJEXT) am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_169) \ $(am__objects_170) lib518_OBJECTS = $(am_lib518_OBJECTS) lib518_LDADD = $(LDADD) lib518_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_171 = lib519-first.$(OBJEXT) am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_171) lib519_OBJECTS = $(am_lib519_OBJECTS) lib519_LDADD = $(LDADD) lib519_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_172 = lib520-first.$(OBJEXT) am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_172) lib520_OBJECTS = $(am_lib520_OBJECTS) lib520_LDADD = $(LDADD) lib520_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_173 = lib521-first.$(OBJEXT) am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_173) lib521_OBJECTS = $(am_lib521_OBJECTS) lib521_LDADD = $(LDADD) lib521_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_174 = lib523-first.$(OBJEXT) am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_174) lib523_OBJECTS = $(am_lib523_OBJECTS) lib523_LDADD = $(LDADD) lib523_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_175 = lib524-first.$(OBJEXT) am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_175) lib524_OBJECTS = $(am_lib524_OBJECTS) lib524_LDADD = $(LDADD) lib524_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_176 = lib525-first.$(OBJEXT) am__objects_177 = lib525-testutil.$(OBJEXT) am__objects_178 = ../../lib/lib525-warnless.$(OBJEXT) am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_176) \ $(am__objects_177) $(am__objects_178) lib525_OBJECTS = $(am_lib525_OBJECTS) lib525_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_179 = lib526-first.$(OBJEXT) am__objects_180 = lib526-testutil.$(OBJEXT) am__objects_181 = ../../lib/lib526-warnless.$(OBJEXT) am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_179) \ $(am__objects_180) $(am__objects_181) lib526_OBJECTS = $(am_lib526_OBJECTS) lib526_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_182 = lib527-first.$(OBJEXT) am__objects_183 = lib527-testutil.$(OBJEXT) am__objects_184 = ../../lib/lib527-warnless.$(OBJEXT) am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_182) \ $(am__objects_183) $(am__objects_184) lib527_OBJECTS = $(am_lib527_OBJECTS) lib527_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_185 = lib529-first.$(OBJEXT) am__objects_186 = lib529-testutil.$(OBJEXT) am__objects_187 = ../../lib/lib529-warnless.$(OBJEXT) am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_185) \ $(am__objects_186) $(am__objects_187) lib529_OBJECTS = $(am_lib529_OBJECTS) lib529_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_188 = lib530-first.$(OBJEXT) am__objects_189 = lib530-testutil.$(OBJEXT) am__objects_190 = ../../lib/lib530-warnless.$(OBJEXT) am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_188) \ $(am__objects_189) $(am__objects_190) lib530_OBJECTS = $(am_lib530_OBJECTS) lib530_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_191 = lib532-first.$(OBJEXT) am__objects_192 = lib532-testutil.$(OBJEXT) am__objects_193 = ../../lib/lib532-warnless.$(OBJEXT) am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_191) \ $(am__objects_192) $(am__objects_193) lib532_OBJECTS = $(am_lib532_OBJECTS) lib532_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_194 = lib533-first.$(OBJEXT) am__objects_195 = lib533-testutil.$(OBJEXT) am__objects_196 = ../../lib/lib533-warnless.$(OBJEXT) am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_194) \ $(am__objects_195) $(am__objects_196) lib533_OBJECTS = $(am_lib533_OBJECTS) lib533_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_197 = lib537-first.$(OBJEXT) am__objects_198 = ../../lib/lib537-warnless.$(OBJEXT) am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_197) \ $(am__objects_198) lib537_OBJECTS = $(am_lib537_OBJECTS) lib537_LDADD = $(LDADD) lib537_DEPENDENCIES = $(am__DEPENDENCIES_1) |
︙ | ︙ | |||
1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 | ../../lib/$(DEPDIR)/lib1555-warnless.Po \ ../../lib/$(DEPDIR)/lib1556-warnless.Po \ ../../lib/$(DEPDIR)/lib1557-warnless.Po \ ../../lib/$(DEPDIR)/lib1591-warnless.Po \ ../../lib/$(DEPDIR)/lib1592-warnless.Po \ ../../lib/$(DEPDIR)/lib1900-warnless.Po \ ../../lib/$(DEPDIR)/lib1905-warnless.Po \ ../../lib/$(DEPDIR)/lib2033-warnless.Po \ ../../lib/$(DEPDIR)/lib502-warnless.Po \ ../../lib/$(DEPDIR)/lib503-warnless.Po \ ../../lib/$(DEPDIR)/lib504-warnless.Po \ ../../lib/$(DEPDIR)/lib507-warnless.Po \ ../../lib/$(DEPDIR)/lib518-warnless.Po \ ../../lib/$(DEPDIR)/lib525-warnless.Po \ ../../lib/$(DEPDIR)/lib526-warnless.Po \ ../../lib/$(DEPDIR)/lib527-warnless.Po \ ../../lib/$(DEPDIR)/lib529-warnless.Po \ ../../lib/$(DEPDIR)/lib530-warnless.Po \ ../../lib/$(DEPDIR)/lib532-warnless.Po \ ../../lib/$(DEPDIR)/lib533-warnless.Po \ | > < | 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 | ../../lib/$(DEPDIR)/lib1555-warnless.Po \ ../../lib/$(DEPDIR)/lib1556-warnless.Po \ ../../lib/$(DEPDIR)/lib1557-warnless.Po \ ../../lib/$(DEPDIR)/lib1591-warnless.Po \ ../../lib/$(DEPDIR)/lib1592-warnless.Po \ ../../lib/$(DEPDIR)/lib1900-warnless.Po \ ../../lib/$(DEPDIR)/lib1905-warnless.Po \ ../../lib/$(DEPDIR)/lib1906-warnless.Po \ ../../lib/$(DEPDIR)/lib2033-warnless.Po \ ../../lib/$(DEPDIR)/lib502-warnless.Po \ ../../lib/$(DEPDIR)/lib503-warnless.Po \ ../../lib/$(DEPDIR)/lib504-warnless.Po \ ../../lib/$(DEPDIR)/lib507-warnless.Po \ ../../lib/$(DEPDIR)/lib518-warnless.Po \ ../../lib/$(DEPDIR)/lib525-warnless.Po \ ../../lib/$(DEPDIR)/lib526-warnless.Po \ ../../lib/$(DEPDIR)/lib527-warnless.Po \ ../../lib/$(DEPDIR)/lib529-warnless.Po \ ../../lib/$(DEPDIR)/lib530-warnless.Po \ ../../lib/$(DEPDIR)/lib532-warnless.Po \ ../../lib/$(DEPDIR)/lib533-warnless.Po \ ../../lib/$(DEPDIR)/lib537-warnless.Po \ ../../lib/$(DEPDIR)/lib540-warnless.Po \ ../../lib/$(DEPDIR)/lib552-warnless.Po \ ../../lib/$(DEPDIR)/lib555-warnless.Po \ ../../lib/$(DEPDIR)/lib556-warnless.Po \ ../../lib/$(DEPDIR)/lib560-warnless.Po \ ../../lib/$(DEPDIR)/lib564-warnless.Po \ |
︙ | ︙ | |||
1236 1237 1238 1239 1240 1241 1242 | ./$(DEPDIR)/lib1553-first.Po ./$(DEPDIR)/lib1553-lib1553.Po \ ./$(DEPDIR)/lib1553-testutil.Po ./$(DEPDIR)/lib1554-first.Po \ ./$(DEPDIR)/lib1554-lib1554.Po ./$(DEPDIR)/lib1555-first.Po \ ./$(DEPDIR)/lib1555-lib1555.Po ./$(DEPDIR)/lib1555-testutil.Po \ ./$(DEPDIR)/lib1556-first.Po ./$(DEPDIR)/lib1556-lib1556.Po \ ./$(DEPDIR)/lib1556-testutil.Po ./$(DEPDIR)/lib1557-first.Po \ ./$(DEPDIR)/lib1557-lib1557.Po ./$(DEPDIR)/lib1557-testutil.Po \ | | > | | | | | | > | 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 | ./$(DEPDIR)/lib1553-first.Po ./$(DEPDIR)/lib1553-lib1553.Po \ ./$(DEPDIR)/lib1553-testutil.Po ./$(DEPDIR)/lib1554-first.Po \ ./$(DEPDIR)/lib1554-lib1554.Po ./$(DEPDIR)/lib1555-first.Po \ ./$(DEPDIR)/lib1555-lib1555.Po ./$(DEPDIR)/lib1555-testutil.Po \ ./$(DEPDIR)/lib1556-first.Po ./$(DEPDIR)/lib1556-lib1556.Po \ ./$(DEPDIR)/lib1556-testutil.Po ./$(DEPDIR)/lib1557-first.Po \ ./$(DEPDIR)/lib1557-lib1557.Po ./$(DEPDIR)/lib1557-testutil.Po \ ./$(DEPDIR)/lib1558.Po ./$(DEPDIR)/lib1559.Po \ ./$(DEPDIR)/lib1560.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)/lib1900-first.Po \ ./$(DEPDIR)/lib1900-lib1900.Po ./$(DEPDIR)/lib1900-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)/lib2033-first.Po \ ./$(DEPDIR)/lib2033-libntlmconnect.Po \ ./$(DEPDIR)/lib2033-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 \ |
︙ | ︙ | |||
1283 1284 1285 1286 1287 1288 1289 | ./$(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 \ | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | 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 | ./$(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)/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)/lib644-first.Po ./$(DEPDIR)/lib644-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)/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)/libstubgss_la-stub_gssapi.Plo \ |
︙ | ︙ | |||
1395 1396 1397 1398 1399 1400 1401 | $(lib1528_SOURCES) $(lib1529_SOURCES) $(lib1530_SOURCES) \ $(lib1531_SOURCES) $(lib1532_SOURCES) $(lib1533_SOURCES) \ $(lib1534_SOURCES) $(lib1535_SOURCES) $(lib1536_SOURCES) \ $(lib1537_SOURCES) $(lib1538_SOURCES) $(lib1540_SOURCES) \ $(lib1541_SOURCES) $(lib1550_SOURCES) $(lib1551_SOURCES) \ $(lib1552_SOURCES) $(lib1553_SOURCES) $(lib1554_SOURCES) \ $(lib1555_SOURCES) $(lib1556_SOURCES) $(lib1557_SOURCES) \ | | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | $(lib1528_SOURCES) $(lib1529_SOURCES) $(lib1530_SOURCES) \ $(lib1531_SOURCES) $(lib1532_SOURCES) $(lib1533_SOURCES) \ $(lib1534_SOURCES) $(lib1535_SOURCES) $(lib1536_SOURCES) \ $(lib1537_SOURCES) $(lib1538_SOURCES) $(lib1540_SOURCES) \ $(lib1541_SOURCES) $(lib1550_SOURCES) $(lib1551_SOURCES) \ $(lib1552_SOURCES) $(lib1553_SOURCES) $(lib1554_SOURCES) \ $(lib1555_SOURCES) $(lib1556_SOURCES) $(lib1557_SOURCES) \ $(lib1558_SOURCES) $(lib1559_SOURCES) $(lib1560_SOURCES) \ $(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1900_SOURCES) \ $(lib1905_SOURCES) $(lib1906_SOURCES) $(lib2033_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) \ $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \ $(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \ $(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \ $(lib643_SOURCES) $(lib644_SOURCES) $(lib645_SOURCES) \ $(lib650_SOURCES) $(lib651_SOURCES) $(lib652_SOURCES) \ $(lib653_SOURCES) $(lib654_SOURCES) $(lib655_SOURCES) \ $(lib658_SOURCES) $(lib659_SOURCES) $(libauthretry_SOURCES) \ $(libntlmconnect_SOURCES) DIST_SOURCES = $(libhostname_la_SOURCES) \ $(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \ $(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \ $(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \ $(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \ $(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \ $(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \ $(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \ $(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \ $(lib1522_SOURCES) $(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) \ $(lib1540_SOURCES) $(lib1541_SOURCES) $(lib1550_SOURCES) \ $(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \ $(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \ $(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \ $(lib1560_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \ $(lib1900_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \ $(lib2033_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) $(lib585_SOURCES) $(lib586_SOURCES) \ $(lib587_SOURCES) $(lib589_SOURCES) $(lib590_SOURCES) \ $(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \ $(lib599_SOURCES) $(lib643_SOURCES) $(lib644_SOURCES) \ $(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \ $(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \ $(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \ $(libauthretry_SOURCES) $(libntlmconnect_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, |
︙ | ︙ | |||
1864 1865 1866 1867 1868 1869 1870 | lib530_CPPFLAGS = $(AM_CPPFLAGS) -DLIB530 lib532_SOURCES = lib526.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib532_LDADD = $(TESTUTIL_LIBS) lib532_CPPFLAGS = $(AM_CPPFLAGS) -DLIB532 lib533_SOURCES = lib533.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib533_LDADD = $(TESTUTIL_LIBS) lib533_CPPFLAGS = $(AM_CPPFLAGS) | < < < | 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 | lib530_CPPFLAGS = $(AM_CPPFLAGS) -DLIB530 lib532_SOURCES = lib526.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib532_LDADD = $(TESTUTIL_LIBS) lib532_CPPFLAGS = $(AM_CPPFLAGS) -DLIB532 lib533_SOURCES = lib533.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib533_LDADD = $(TESTUTIL_LIBS) lib533_CPPFLAGS = $(AM_CPPFLAGS) lib537_SOURCES = lib537.c $(SUPPORTFILES) $(WARNLESS) lib537_CPPFLAGS = $(AM_CPPFLAGS) lib539_SOURCES = lib539.c $(SUPPORTFILES) lib539_CPPFLAGS = $(AM_CPPFLAGS) lib540_SOURCES = lib540.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib540_LDADD = $(TESTUTIL_LIBS) lib540_CPPFLAGS = $(AM_CPPFLAGS) |
︙ | ︙ | |||
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 | lib1556_LDADD = $(TESTUTIL_LIBS) lib1556_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1556 lib1557_SOURCES = lib1557.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1557_LDADD = $(TESTUTIL_LIBS) lib1557_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1557 lib1558_SOURCES = lib1558.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1558_LDADD = $(TESTUTIL_LIBS) lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1560_LDADD = $(TESTUTIL_LIBS) lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1591_LDADD = $(TESTUTIL_LIBS) lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591 lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1592_LDADD = $(TESTUTIL_LIBS) lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1900_LDADD = $(TESTUTIL_LIBS) lib1900_CPPFLAGS = $(AM_CPPFLAGS) lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1905_LDADD = $(TESTUTIL_LIBS) lib1905_CPPFLAGS = $(AM_CPPFLAGS) lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib2033_LDADD = $(TESTUTIL_LIBS) lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING @BUILD_LIBHOSTNAME_FALSE@noinst_LTLIBRARIES = $(am__append_6) # Makefile.inc provides the source defines (TESTUTIL, SUPPORTFILES, # noinst_PROGRAMS, lib*_SOURCES, and lib*_CFLAGS) | > > > > > | 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 | lib1556_LDADD = $(TESTUTIL_LIBS) lib1556_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1556 lib1557_SOURCES = lib1557.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1557_LDADD = $(TESTUTIL_LIBS) lib1557_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1557 lib1558_SOURCES = lib1558.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1558_LDADD = $(TESTUTIL_LIBS) lib1559_SOURCES = lib1559.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1559_LDADD = $(TESTUTIL_LIBS) lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1560_LDADD = $(TESTUTIL_LIBS) lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1591_LDADD = $(TESTUTIL_LIBS) lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591 lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1592_LDADD = $(TESTUTIL_LIBS) lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1900_LDADD = $(TESTUTIL_LIBS) lib1900_CPPFLAGS = $(AM_CPPFLAGS) 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) lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib2033_LDADD = $(TESTUTIL_LIBS) lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING @BUILD_LIBHOSTNAME_FALSE@noinst_LTLIBRARIES = $(am__append_6) # Makefile.inc provides the source defines (TESTUTIL, SUPPORTFILES, # noinst_PROGRAMS, lib*_SOURCES, and lib*_CFLAGS) |
︙ | ︙ | |||
2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 | $(AM_V_CCLD)$(LINK) $(lib1557_OBJECTS) $(lib1557_LDADD) $(LIBS) ../../lib/warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib1558$(EXEEXT): $(lib1558_OBJECTS) $(lib1558_DEPENDENCIES) $(EXTRA_lib1558_DEPENDENCIES) @rm -f lib1558$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1558_OBJECTS) $(lib1558_LDADD) $(LIBS) lib1560$(EXEEXT): $(lib1560_OBJECTS) $(lib1560_DEPENDENCIES) $(EXTRA_lib1560_DEPENDENCIES) @rm -f lib1560$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1560_OBJECTS) $(lib1560_LDADD) $(LIBS) ../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) | > > > > | 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 | $(AM_V_CCLD)$(LINK) $(lib1557_OBJECTS) $(lib1557_LDADD) $(LIBS) ../../lib/warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib1558$(EXEEXT): $(lib1558_OBJECTS) $(lib1558_DEPENDENCIES) $(EXTRA_lib1558_DEPENDENCIES) @rm -f lib1558$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1558_OBJECTS) $(lib1558_LDADD) $(LIBS) lib1559$(EXEEXT): $(lib1559_OBJECTS) $(lib1559_DEPENDENCIES) $(EXTRA_lib1559_DEPENDENCIES) @rm -f lib1559$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1559_OBJECTS) $(lib1559_LDADD) $(LIBS) lib1560$(EXEEXT): $(lib1560_OBJECTS) $(lib1560_DEPENDENCIES) $(EXTRA_lib1560_DEPENDENCIES) @rm -f lib1560$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1560_OBJECTS) $(lib1560_LDADD) $(LIBS) ../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) |
︙ | ︙ | |||
2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 | $(AM_V_CCLD)$(LINK) $(lib1900_OBJECTS) $(lib1900_LDADD) $(LIBS) ../../lib/lib1905-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib1905$(EXEEXT): $(lib1905_OBJECTS) $(lib1905_DEPENDENCIES) $(EXTRA_lib1905_DEPENDENCIES) @rm -f lib1905$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1905_OBJECTS) $(lib1905_LDADD) $(LIBS) ../../lib/lib2033-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib2033$(EXEEXT): $(lib2033_OBJECTS) $(lib2033_DEPENDENCIES) $(EXTRA_lib2033_DEPENDENCIES) @rm -f lib2033$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib2033_OBJECTS) $(lib2033_LDADD) $(LIBS) | > > > > > > | 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 | $(AM_V_CCLD)$(LINK) $(lib1900_OBJECTS) $(lib1900_LDADD) $(LIBS) ../../lib/lib1905-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib1905$(EXEEXT): $(lib1905_OBJECTS) $(lib1905_DEPENDENCIES) $(EXTRA_lib1905_DEPENDENCIES) @rm -f lib1905$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1905_OBJECTS) $(lib1905_LDADD) $(LIBS) ../../lib/lib1906-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib1906$(EXEEXT): $(lib1906_OBJECTS) $(lib1906_DEPENDENCIES) $(EXTRA_lib1906_DEPENDENCIES) @rm -f lib1906$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1906_OBJECTS) $(lib1906_LDADD) $(LIBS) ../../lib/lib2033-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib2033$(EXEEXT): $(lib2033_OBJECTS) $(lib2033_DEPENDENCIES) $(EXTRA_lib2033_DEPENDENCIES) @rm -f lib2033$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib2033_OBJECTS) $(lib2033_LDADD) $(LIBS) |
︙ | ︙ | |||
2697 2698 2699 2700 2701 2702 2703 | $(AM_V_CCLD)$(LINK) $(lib532_OBJECTS) $(lib532_LDADD) $(LIBS) ../../lib/lib533-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib533$(EXEEXT): $(lib533_OBJECTS) $(lib533_DEPENDENCIES) $(EXTRA_lib533_DEPENDENCIES) @rm -f lib533$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib533_OBJECTS) $(lib533_LDADD) $(LIBS) | < < < < < < | 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 | $(AM_V_CCLD)$(LINK) $(lib532_OBJECTS) $(lib532_LDADD) $(LIBS) ../../lib/lib533-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib533$(EXEEXT): $(lib533_OBJECTS) $(lib533_DEPENDENCIES) $(EXTRA_lib533_DEPENDENCIES) @rm -f lib533$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib533_OBJECTS) $(lib533_LDADD) $(LIBS) ../../lib/lib537-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) lib537$(EXEEXT): $(lib537_OBJECTS) $(lib537_DEPENDENCIES) $(EXTRA_lib537_DEPENDENCIES) @rm -f lib537$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib537_OBJECTS) $(lib537_LDADD) $(LIBS) |
︙ | ︙ | |||
3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 | @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib2033-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib526-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib527-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib530-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib532-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib533-warnless.Po@am__quote@ # am--include-marker | > < | 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 | @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib2033-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib526-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib527-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib530-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib532-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib533-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib540-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib552-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib555-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib556-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib560-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib564-warnless.Po@am__quote@ # am--include-marker |
︙ | ︙ | |||
3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-lib1556.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-lib1557.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1558.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1560.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-lib1591.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-lib1592.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-lib1900.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-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)/lib2033-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-libntlmconnect.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testutil.Po@am__quote@ # am--include-marker | > > > > | 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-lib1556.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-lib1557.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1558.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1559.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1560.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-lib1591.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-lib1592.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-lib1900.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-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)/lib2033-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-libntlmconnect.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testutil.Po@am__quote@ # am--include-marker |
︙ | ︙ | |||
3281 3282 3283 3284 3285 3286 3287 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-lib526.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-lib533.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-testutil.Po@am__quote@ # am--include-marker | < < < | 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-lib526.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-lib533.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib537-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib537-lib537.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib539-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib539-lib539.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-lib540.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-testutil.Po@am__quote@ # am--include-marker |
︙ | ︙ | |||
6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 | ../../lib/lib1905-warnless.obj: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1905-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1905-warnless.Tpo -c -o ../../lib/lib1905-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1905-warnless.Tpo ../../lib/$(DEPDIR)/lib1905-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1905-warnless.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1905-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` lib2033-libntlmconnect.o: libntlmconnect.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-libntlmconnect.o -MD -MP -MF $(DEPDIR)/lib2033-libntlmconnect.Tpo -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib2033-libntlmconnect.Tpo $(DEPDIR)/lib2033-libntlmconnect.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libntlmconnect.c' object='lib2033-libntlmconnect.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | ../../lib/lib1905-warnless.obj: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1905-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1905-warnless.Tpo -c -o ../../lib/lib1905-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1905-warnless.Tpo ../../lib/$(DEPDIR)/lib1905-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1905-warnless.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1905-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` lib1906-lib1906.o: lib1906.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-lib1906.o -MD -MP -MF $(DEPDIR)/lib1906-lib1906.Tpo -c -o lib1906-lib1906.o `test -f 'lib1906.c' || echo '$(srcdir)/'`lib1906.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-lib1906.Tpo $(DEPDIR)/lib1906-lib1906.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1906.c' object='lib1906-lib1906.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-lib1906.o `test -f 'lib1906.c' || echo '$(srcdir)/'`lib1906.c lib1906-lib1906.obj: lib1906.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-lib1906.obj -MD -MP -MF $(DEPDIR)/lib1906-lib1906.Tpo -c -o lib1906-lib1906.obj `if test -f 'lib1906.c'; then $(CYGPATH_W) 'lib1906.c'; else $(CYGPATH_W) '$(srcdir)/lib1906.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-lib1906.Tpo $(DEPDIR)/lib1906-lib1906.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1906.c' object='lib1906-lib1906.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-lib1906.obj `if test -f 'lib1906.c'; then $(CYGPATH_W) 'lib1906.c'; else $(CYGPATH_W) '$(srcdir)/lib1906.c'; fi` lib1906-first.o: first.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-first.o -MD -MP -MF $(DEPDIR)/lib1906-first.Tpo -c -o lib1906-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-first.Tpo $(DEPDIR)/lib1906-first.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1906-first.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c lib1906-first.obj: first.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-first.obj -MD -MP -MF $(DEPDIR)/lib1906-first.Tpo -c -o lib1906-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-first.Tpo $(DEPDIR)/lib1906-first.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1906-first.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi` lib1906-testutil.o: testutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-testutil.o -MD -MP -MF $(DEPDIR)/lib1906-testutil.Tpo -c -o lib1906-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-testutil.Tpo $(DEPDIR)/lib1906-testutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1906-testutil.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c lib1906-testutil.obj: testutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-testutil.obj -MD -MP -MF $(DEPDIR)/lib1906-testutil.Tpo -c -o lib1906-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-testutil.Tpo $(DEPDIR)/lib1906-testutil.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1906-testutil.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi` ../../lib/lib1906-warnless.o: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-warnless.Tpo -c -o ../../lib/lib1906-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-warnless.Tpo ../../lib/$(DEPDIR)/lib1906-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1906-warnless.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c ../../lib/lib1906-warnless.obj: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-warnless.Tpo -c -o ../../lib/lib1906-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-warnless.Tpo ../../lib/$(DEPDIR)/lib1906-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1906-warnless.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` lib2033-libntlmconnect.o: libntlmconnect.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-libntlmconnect.o -MD -MP -MF $(DEPDIR)/lib2033-libntlmconnect.Tpo -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib2033-libntlmconnect.Tpo $(DEPDIR)/lib2033-libntlmconnect.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libntlmconnect.c' object='lib2033-libntlmconnect.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c |
︙ | ︙ | |||
7345 7346 7347 7348 7349 7350 7351 | ../../lib/lib533-warnless.obj: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib533-warnless.Tpo -c -o ../../lib/lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-warnless.Tpo ../../lib/$(DEPDIR)/lib533-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib533-warnless.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 | ../../lib/lib533-warnless.obj: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib533-warnless.Tpo -c -o ../../lib/lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-warnless.Tpo ../../lib/$(DEPDIR)/lib533-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib533-warnless.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` lib537-lib537.o: lib537.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib537-lib537.o -MD -MP -MF $(DEPDIR)/lib537-lib537.Tpo -c -o lib537-lib537.o `test -f 'lib537.c' || echo '$(srcdir)/'`lib537.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib537-lib537.Tpo $(DEPDIR)/lib537-lib537.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib537.c' object='lib537-lib537.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib537-lib537.o `test -f 'lib537.c' || echo '$(srcdir)/'`lib537.c |
︙ | ︙ | |||
9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 | -rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po | > < | 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 | -rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib537-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib540-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib552-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib555-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib556-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib560-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib564-warnless.Po |
︙ | ︙ | |||
9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 | -rm -f ./$(DEPDIR)/lib1556-first.Po -rm -f ./$(DEPDIR)/lib1556-lib1556.Po -rm -f ./$(DEPDIR)/lib1556-testutil.Po -rm -f ./$(DEPDIR)/lib1557-first.Po -rm -f ./$(DEPDIR)/lib1557-lib1557.Po -rm -f ./$(DEPDIR)/lib1557-testutil.Po -rm -f ./$(DEPDIR)/lib1558.Po -rm -f ./$(DEPDIR)/lib1560.Po -rm -f ./$(DEPDIR)/lib1591-first.Po -rm -f ./$(DEPDIR)/lib1591-lib1591.Po -rm -f ./$(DEPDIR)/lib1591-testutil.Po -rm -f ./$(DEPDIR)/lib1592-first.Po -rm -f ./$(DEPDIR)/lib1592-lib1592.Po -rm -f ./$(DEPDIR)/lib1592-testutil.Po -rm -f ./$(DEPDIR)/lib1900-first.Po -rm -f ./$(DEPDIR)/lib1900-lib1900.Po -rm -f ./$(DEPDIR)/lib1900-testutil.Po -rm -f ./$(DEPDIR)/lib1905-first.Po -rm -f ./$(DEPDIR)/lib1905-lib1905.Po -rm -f ./$(DEPDIR)/lib1905-testutil.Po -rm -f ./$(DEPDIR)/lib2033-first.Po -rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po -rm -f ./$(DEPDIR)/lib2033-testutil.Po -rm -f ./$(DEPDIR)/lib500-first.Po -rm -f ./$(DEPDIR)/lib500-lib500.Po -rm -f ./$(DEPDIR)/lib500-testtrace.Po -rm -f ./$(DEPDIR)/lib500-testutil.Po | > > > > | 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 | -rm -f ./$(DEPDIR)/lib1556-first.Po -rm -f ./$(DEPDIR)/lib1556-lib1556.Po -rm -f ./$(DEPDIR)/lib1556-testutil.Po -rm -f ./$(DEPDIR)/lib1557-first.Po -rm -f ./$(DEPDIR)/lib1557-lib1557.Po -rm -f ./$(DEPDIR)/lib1557-testutil.Po -rm -f ./$(DEPDIR)/lib1558.Po -rm -f ./$(DEPDIR)/lib1559.Po -rm -f ./$(DEPDIR)/lib1560.Po -rm -f ./$(DEPDIR)/lib1591-first.Po -rm -f ./$(DEPDIR)/lib1591-lib1591.Po -rm -f ./$(DEPDIR)/lib1591-testutil.Po -rm -f ./$(DEPDIR)/lib1592-first.Po -rm -f ./$(DEPDIR)/lib1592-lib1592.Po -rm -f ./$(DEPDIR)/lib1592-testutil.Po -rm -f ./$(DEPDIR)/lib1900-first.Po -rm -f ./$(DEPDIR)/lib1900-lib1900.Po -rm -f ./$(DEPDIR)/lib1900-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)/lib2033-first.Po -rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po -rm -f ./$(DEPDIR)/lib2033-testutil.Po -rm -f ./$(DEPDIR)/lib500-first.Po -rm -f ./$(DEPDIR)/lib500-lib500.Po -rm -f ./$(DEPDIR)/lib500-testtrace.Po -rm -f ./$(DEPDIR)/lib500-testutil.Po |
︙ | ︙ | |||
9948 9949 9950 9951 9952 9953 9954 | -rm -f ./$(DEPDIR)/lib530-testutil.Po -rm -f ./$(DEPDIR)/lib532-first.Po -rm -f ./$(DEPDIR)/lib532-lib526.Po -rm -f ./$(DEPDIR)/lib532-testutil.Po -rm -f ./$(DEPDIR)/lib533-first.Po -rm -f ./$(DEPDIR)/lib533-lib533.Po -rm -f ./$(DEPDIR)/lib533-testutil.Po | < < < | 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 | -rm -f ./$(DEPDIR)/lib530-testutil.Po -rm -f ./$(DEPDIR)/lib532-first.Po -rm -f ./$(DEPDIR)/lib532-lib526.Po -rm -f ./$(DEPDIR)/lib532-testutil.Po -rm -f ./$(DEPDIR)/lib533-first.Po -rm -f ./$(DEPDIR)/lib533-lib533.Po -rm -f ./$(DEPDIR)/lib533-testutil.Po -rm -f ./$(DEPDIR)/lib537-first.Po -rm -f ./$(DEPDIR)/lib537-lib537.Po -rm -f ./$(DEPDIR)/lib539-first.Po -rm -f ./$(DEPDIR)/lib539-lib539.Po -rm -f ./$(DEPDIR)/lib540-first.Po -rm -f ./$(DEPDIR)/lib540-lib540.Po -rm -f ./$(DEPDIR)/lib540-testutil.Po |
︙ | ︙ | |||
10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 | -rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po | > < | 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 | -rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib537-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib540-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib552-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib555-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib556-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib560-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib564-warnless.Po |
︙ | ︙ | |||
10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 | -rm -f ./$(DEPDIR)/lib1556-first.Po -rm -f ./$(DEPDIR)/lib1556-lib1556.Po -rm -f ./$(DEPDIR)/lib1556-testutil.Po -rm -f ./$(DEPDIR)/lib1557-first.Po -rm -f ./$(DEPDIR)/lib1557-lib1557.Po -rm -f ./$(DEPDIR)/lib1557-testutil.Po -rm -f ./$(DEPDIR)/lib1558.Po -rm -f ./$(DEPDIR)/lib1560.Po -rm -f ./$(DEPDIR)/lib1591-first.Po -rm -f ./$(DEPDIR)/lib1591-lib1591.Po -rm -f ./$(DEPDIR)/lib1591-testutil.Po -rm -f ./$(DEPDIR)/lib1592-first.Po -rm -f ./$(DEPDIR)/lib1592-lib1592.Po -rm -f ./$(DEPDIR)/lib1592-testutil.Po -rm -f ./$(DEPDIR)/lib1900-first.Po -rm -f ./$(DEPDIR)/lib1900-lib1900.Po -rm -f ./$(DEPDIR)/lib1900-testutil.Po -rm -f ./$(DEPDIR)/lib1905-first.Po -rm -f ./$(DEPDIR)/lib1905-lib1905.Po -rm -f ./$(DEPDIR)/lib1905-testutil.Po -rm -f ./$(DEPDIR)/lib2033-first.Po -rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po -rm -f ./$(DEPDIR)/lib2033-testutil.Po -rm -f ./$(DEPDIR)/lib500-first.Po -rm -f ./$(DEPDIR)/lib500-lib500.Po -rm -f ./$(DEPDIR)/lib500-testtrace.Po -rm -f ./$(DEPDIR)/lib500-testutil.Po | > > > > | 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 | -rm -f ./$(DEPDIR)/lib1556-first.Po -rm -f ./$(DEPDIR)/lib1556-lib1556.Po -rm -f ./$(DEPDIR)/lib1556-testutil.Po -rm -f ./$(DEPDIR)/lib1557-first.Po -rm -f ./$(DEPDIR)/lib1557-lib1557.Po -rm -f ./$(DEPDIR)/lib1557-testutil.Po -rm -f ./$(DEPDIR)/lib1558.Po -rm -f ./$(DEPDIR)/lib1559.Po -rm -f ./$(DEPDIR)/lib1560.Po -rm -f ./$(DEPDIR)/lib1591-first.Po -rm -f ./$(DEPDIR)/lib1591-lib1591.Po -rm -f ./$(DEPDIR)/lib1591-testutil.Po -rm -f ./$(DEPDIR)/lib1592-first.Po -rm -f ./$(DEPDIR)/lib1592-lib1592.Po -rm -f ./$(DEPDIR)/lib1592-testutil.Po -rm -f ./$(DEPDIR)/lib1900-first.Po -rm -f ./$(DEPDIR)/lib1900-lib1900.Po -rm -f ./$(DEPDIR)/lib1900-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)/lib2033-first.Po -rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po -rm -f ./$(DEPDIR)/lib2033-testutil.Po -rm -f ./$(DEPDIR)/lib500-first.Po -rm -f ./$(DEPDIR)/lib500-lib500.Po -rm -f ./$(DEPDIR)/lib500-testtrace.Po -rm -f ./$(DEPDIR)/lib500-testutil.Po |
︙ | ︙ | |||
10432 10433 10434 10435 10436 10437 10438 | -rm -f ./$(DEPDIR)/lib530-testutil.Po -rm -f ./$(DEPDIR)/lib532-first.Po -rm -f ./$(DEPDIR)/lib532-lib526.Po -rm -f ./$(DEPDIR)/lib532-testutil.Po -rm -f ./$(DEPDIR)/lib533-first.Po -rm -f ./$(DEPDIR)/lib533-lib533.Po -rm -f ./$(DEPDIR)/lib533-testutil.Po | < < < | 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 | -rm -f ./$(DEPDIR)/lib530-testutil.Po -rm -f ./$(DEPDIR)/lib532-first.Po -rm -f ./$(DEPDIR)/lib532-lib526.Po -rm -f ./$(DEPDIR)/lib532-testutil.Po -rm -f ./$(DEPDIR)/lib533-first.Po -rm -f ./$(DEPDIR)/lib533-lib533.Po -rm -f ./$(DEPDIR)/lib533-testutil.Po -rm -f ./$(DEPDIR)/lib537-first.Po -rm -f ./$(DEPDIR)/lib537-lib537.Po -rm -f ./$(DEPDIR)/lib539-first.Po -rm -f ./$(DEPDIR)/lib539-lib539.Po -rm -f ./$(DEPDIR)/lib540-first.Po -rm -f ./$(DEPDIR)/lib540-lib540.Po -rm -f ./$(DEPDIR)/lib540-testutil.Po |
︙ | ︙ |
Changes to jni/curl/tests/libtest/Makefile.inc.
︙ | ︙ | |||
12 13 14 15 16 17 18 | # These are all libcurl test programs noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \ chkdecimalpoint \ lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 lib508 lib509 \ lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 lib518 lib519 \ lib520 lib521 lib523 lib524 lib525 lib526 lib527 lib529 lib530 lib532 \ | | | < | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # These are all libcurl test programs noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \ chkdecimalpoint \ lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 lib508 lib509 \ lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 lib518 lib519 \ lib520 lib521 lib523 lib524 lib525 lib526 lib527 lib529 lib530 lib532 \ lib533 lib537 lib539 lib540 lib541 lib542 lib543 lib544 lib545 \ lib547 lib548 lib549 lib552 lib553 lib554 lib555 lib556 lib557 lib558 \ lib559 lib560 lib562 lib564 lib565 lib566 lib567 lib568 lib569 lib570 \ lib571 lib572 lib573 lib574 lib575 lib576 lib578 lib579 lib582 \ lib583 lib585 lib586 lib587 lib589 lib590 lib591 lib597 lib598 lib599 \ lib643 lib644 lib645 lib650 lib651 lib652 lib653 lib654 lib655 lib658 \ lib659 \ lib1156 \ lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \ lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515 lib1517 \ lib1518 lib1520 lib1521 lib1522 \ lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \ lib1534 lib1535 lib1536 lib1537 lib1538 \ lib1540 lib1541 \ lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \ lib1558 lib1559 lib1560 \ lib1591 lib1592 \ lib1900 lib1905 lib1906 \ lib2033 chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \ ../../lib/curl_ctype.c chkdecimalpoint_LDADD = chkdecimalpoint_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB \ -DCURLX_NO_MEMORY_CALLBACKS |
︙ | ︙ | |||
156 157 158 159 160 161 162 | lib532_LDADD = $(TESTUTIL_LIBS) lib532_CPPFLAGS = $(AM_CPPFLAGS) -DLIB532 lib533_SOURCES = lib533.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib533_LDADD = $(TESTUTIL_LIBS) lib533_CPPFLAGS = $(AM_CPPFLAGS) | < < < < | 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | lib532_LDADD = $(TESTUTIL_LIBS) lib532_CPPFLAGS = $(AM_CPPFLAGS) -DLIB532 lib533_SOURCES = lib533.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib533_LDADD = $(TESTUTIL_LIBS) lib533_CPPFLAGS = $(AM_CPPFLAGS) lib537_SOURCES = lib537.c $(SUPPORTFILES) $(WARNLESS) lib537_CPPFLAGS = $(AM_CPPFLAGS) lib539_SOURCES = lib539.c $(SUPPORTFILES) lib539_CPPFLAGS = $(AM_CPPFLAGS) lib540_SOURCES = lib540.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) |
︙ | ︙ | |||
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 | lib1557_SOURCES = lib1557.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1557_LDADD = $(TESTUTIL_LIBS) lib1557_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1557 lib1558_SOURCES = lib1558.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1558_LDADD = $(TESTUTIL_LIBS) lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1560_LDADD = $(TESTUTIL_LIBS) lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1591_LDADD = $(TESTUTIL_LIBS) lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591 lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1592_LDADD = $(TESTUTIL_LIBS) lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1900_LDADD = $(TESTUTIL_LIBS) lib1900_CPPFLAGS = $(AM_CPPFLAGS) lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1905_LDADD = $(TESTUTIL_LIBS) lib1905_CPPFLAGS = $(AM_CPPFLAGS) lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib2033_LDADD = $(TESTUTIL_LIBS) lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING | > > > > > > > | 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 | lib1557_SOURCES = lib1557.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1557_LDADD = $(TESTUTIL_LIBS) lib1557_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1557 lib1558_SOURCES = lib1558.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1558_LDADD = $(TESTUTIL_LIBS) lib1559_SOURCES = lib1559.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1559_LDADD = $(TESTUTIL_LIBS) lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1560_LDADD = $(TESTUTIL_LIBS) lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1591_LDADD = $(TESTUTIL_LIBS) lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591 lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1592_LDADD = $(TESTUTIL_LIBS) lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1900_LDADD = $(TESTUTIL_LIBS) lib1900_CPPFLAGS = $(AM_CPPFLAGS) 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) lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib2033_LDADD = $(TESTUTIL_LIBS) lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING |
Changes to jni/curl/tests/libtest/lib1156.c.
︙ | ︙ | |||
84 85 86 87 88 89 90 | static int onetest(CURL *curl, const char *url, const testparams *p) { CURLcode res; unsigned int replyselector; char urlbuf[256]; | | | | 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | static int onetest(CURL *curl, const char *url, const testparams *p) { CURLcode res; unsigned int replyselector; char urlbuf[256]; replyselector = (p->flags & F_CONTENTRANGE)? 1: 0; if(p->flags & F_HTTP416) replyselector += 2; msnprintf(urlbuf, sizeof(urlbuf), "%s%04u", url, replyselector); test_setopt(curl, CURLOPT_URL, urlbuf); test_setopt(curl, CURLOPT_RESUME_FROM, (p->flags & F_RESUME)? 3: 0); test_setopt(curl, CURLOPT_RANGE, !(p->flags & F_RESUME)? "3-1000000": (char *) NULL); test_setopt(curl, CURLOPT_FAILONERROR, (p->flags & F_FAIL)? 1: 0); hasbody = 0; res = curl_easy_perform(curl); if(res != p->result) { fprintf(stderr, "bad error code (%d): resume=%s, fail=%s, http416=%s, " "content-range=%s, expected=%d\n", res, (p->flags & F_RESUME)? "yes": "no", (p->flags & F_FAIL)? "yes": "no", |
︙ | ︙ |
Changes to jni/curl/tests/libtest/lib1522.c.
︙ | ︙ | |||
28 29 30 31 32 33 34 35 36 37 | #include "memdebug.h" static char g_Data[40 * 1024]; /* POST 40KB */ static int sockopt_callback(void *clientp, curl_socket_t curlfd, curlsocktype purpose) { int sndbufsize = 4 * 1024; /* 4KB send buffer */ (void) clientp; (void) purpose; | > < > > | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include "memdebug.h" static char g_Data[40 * 1024]; /* POST 40KB */ static int sockopt_callback(void *clientp, curl_socket_t curlfd, curlsocktype purpose) { #if defined(SOL_SOCKET) && defined(SO_SNDBUF) int sndbufsize = 4 * 1024; /* 4KB send buffer */ (void) clientp; (void) purpose; setsockopt(curlfd, SOL_SOCKET, SO_SNDBUF, (const char *)&sndbufsize, sizeof(sndbufsize)); #else (void)clientp; (void)curlfd; (void)purpose; #endif return CURL_SOCKOPT_OK; } int test(char *URL) { CURLcode code; |
︙ | ︙ | |||
78 79 80 81 82 83 84 85 86 87 | } else { printf("curl_easy_perform() failed. e = %d\n", code); } curl_slist_free_all(pHeaderList); curl_easy_cleanup(pCurl); return 0; } | > | 80 81 82 83 84 85 86 87 88 89 90 | } else { printf("curl_easy_perform() failed. e = %d\n", code); } curl_slist_free_all(pHeaderList); curl_easy_cleanup(pCurl); curl_global_cleanup(); return 0; } |
Added jni/curl/tests/libtest/lib1559.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 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "test.h" #include "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; memset(longurl, 'a', EXCESSIVE); longurl[EXCESSIVE-1] = 0; global_init(CURL_GLOBAL_ALL); easy_init(curl); res = curl_easy_setopt(curl, CURLOPT_URL, longurl); printf("CURLOPT_URL %d bytes URL == %d\n", EXCESSIVE, (int)res); res = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, longurl); printf("CURLOPT_POSTFIELDS %d bytes data == %d\n", EXCESSIVE, (int)res); u = curl_url(); if(u) { CURLUcode uc = curl_url_set(u, CURLUPART_URL, longurl, 0); printf("CURLUPART_URL %d bytes URL == %d\n", EXCESSIVE, (int)uc); uc = curl_url_set(u, CURLUPART_SCHEME, longurl, CURLU_NON_SUPPORT_SCHEME); printf("CURLUPART_SCHEME %d bytes scheme == %d\n", EXCESSIVE, (int)uc); uc = curl_url_set(u, CURLUPART_USER, longurl, 0); printf("CURLUPART_USER %d bytes user == %d\n", EXCESSIVE, (int)uc); curl_url_cleanup(u); } free(longurl); curl_easy_cleanup(curl); curl_global_cleanup(); return 0; test_cleanup: curl_easy_cleanup(curl); curl_global_cleanup(); return res; /* return the final return code */ } |
Changes to jni/curl/tests/libtest/lib1560.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
95 96 97 98 99 100 101 | struct setcase { const char *in; const char *set; const char *out; unsigned int urlflags; unsigned int setflags; | | > | 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | struct setcase { const char *in; const char *set; const char *out; unsigned int urlflags; unsigned int setflags; CURLUcode ucode; /* for the main URL set */ CURLUcode pcode; /* for updating parts */ }; struct testcase { const char *in; const char *out; unsigned int urlflags; unsigned int getflags; |
︙ | ︙ | |||
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | {"file://C:\\programs\\foo", "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"file:///C:\\programs\\foo", "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, #endif {"boing:80", "https | [11] | [12] | [13] | boing | 80 | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"http://[fd00:a41::50]:8080", "http | [11] | [12] | [13] | [fd00:a41::50] | 8080 | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"http://[fd00:a41::50]/", "http | [11] | [12] | [13] | [fd00:a41::50] | [15] | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"http://[fd00:a41::50]", "http | [11] | [12] | [13] | [fd00:a41::50] | [15] | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"https://[::1%252]:1234", | > > > | > > > > > > | 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 | {"file://C:\\programs\\foo", "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"file:///C:\\programs\\foo", "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, #endif /* URL without host name */ {"http://a:b@/x", "", CURLU_DEFAULT_SCHEME, 0, CURLUE_NO_HOST}, {"boing:80", "https | [11] | [12] | [13] | boing | 80 | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"http://[fd00:a41::50]:8080", "http | [11] | [12] | [13] | [fd00:a41::50] | 8080 | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"http://[fd00:a41::50]/", "http | [11] | [12] | [13] | [fd00:a41::50] | [15] | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"http://[fd00:a41::50]", "http | [11] | [12] | [13] | [fd00:a41::50] | [15] | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"https://[::1%252]:1234", "https | [11] | [12] | [13] | [::1] | 1234 | / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, /* here's "bad" zone id */ {"https://[fe80::20c:29ff:fe9c:409b%eth0]:1234", "https | [11] | [12] | [13] | [fe80::20c:29ff:fe9c:409b] | 1234 " "| / | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, {"https://127.0.0.1:443", "https | [11] | [12] | [13] | 127.0.0.1 | [15] | / | [16] | [17]", 0, CURLU_NO_DEFAULT_PORT, CURLUE_OK}, {"http://%3a:%3a@ex%0ample/%3f+?+%3f+%23#+%23%3f%g7", "http | : | : | [13] | [6] | [15] | /?+ | ? # | +#?%g7", 0, CURLU_URLDECODE, CURLUE_OK}, |
︙ | ︙ | |||
268 269 270 271 272 273 274 275 276 277 278 279 280 281 | {"http:////user:password@example.com:1234/path/html?query=name#anchor", "", CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT}, {NULL, NULL, 0, 0, CURLUE_OK}, }; static struct urltestcase get_url_list[] = { {"smtp.example.com/path/html", "smtp://smtp.example.com/path/html", CURLU_GUESS_SCHEME, 0, CURLUE_OK}, {"https.example.com/path/html", "http://https.example.com/path/html", CURLU_GUESS_SCHEME, 0, CURLUE_OK}, {"dict.example.com/path/html", | > > > > > > > > > > > > > > > > > > > > | 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 | {"http:////user:password@example.com:1234/path/html?query=name#anchor", "", CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT}, {NULL, NULL, 0, 0, CURLUE_OK}, }; static struct urltestcase get_url_list[] = { /* 40 bytes scheme is the max allowed */ {"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA://hostname/path", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa://hostname/path", CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK}, /* 41 bytes scheme is not allowed */ {"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA://hostname/path", "", CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_MALFORMED_INPUT}, {"https://[fe80::20c:29ff:fe9c:409b%]:1234", "", 0, 0, CURLUE_MALFORMED_INPUT}, {"https://[fe80::20c:29ff:fe9c:409b%25]:1234", "https://[fe80::20c:29ff:fe9c:409b%2525]:1234/", 0, 0, CURLUE_OK}, {"https://[fe80::20c:29ff:fe9c:409b%eth0]:1234", "https://[fe80::20c:29ff:fe9c:409b%25eth0]:1234/", 0, 0, CURLUE_OK}, {"https://[::%25fakeit]/moo", "https://[::%25fakeit]/moo", 0, 0, CURLUE_OK}, {"smtp.example.com/path/html", "smtp://smtp.example.com/path/html", CURLU_GUESS_SCHEME, 0, CURLUE_OK}, {"https.example.com/path/html", "http://https.example.com/path/html", CURLU_GUESS_SCHEME, 0, CURLUE_OK}, {"dict.example.com/path/html", |
︙ | ︙ | |||
391 392 393 394 395 396 397 398 399 400 | return 1; } return 0; } /* !checksrc! disable SPACEBEFORECOMMA 1 */ static struct setcase set_parts_list[] = { {"https://host/", "path=%4A%4B%4C,", "https://host/%4a%4b%4c", | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | | | | | > > > > | | | | | | | | | | | | | | | | 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 | return 1; } return 0; } /* !checksrc! disable SPACEBEFORECOMMA 1 */ static struct setcase set_parts_list[] = { {"https://example.com/", /* Set a 41 bytes scheme. That's too long so the old scheme remains set. */ "scheme=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc,", "https://example.com/", 0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_MALFORMED_INPUT}, {"https://example.com/", /* set a 40 bytes scheme */ "scheme=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb://example.com/", 0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_OK}, {"https://[::1%25fake]:1234/", "zoneid=NULL,", "https://[::1]:1234/", 0, 0, CURLUE_OK, CURLUE_OK}, {"https://host:1234/", "port=NULL,", "https://host/", 0, 0, CURLUE_OK, CURLUE_OK}, {"https://host:1234/", "port=\"\",", "https://host:1234/", 0, 0, CURLUE_OK, CURLUE_BAD_PORT_NUMBER}, {"https://host:1234/", "port=56 78,", "https://host:1234/", 0, 0, CURLUE_OK, CURLUE_MALFORMED_INPUT}, {"https://host:1234/", "port=0,", "https://host:1234/", 0, 0, CURLUE_OK, CURLUE_BAD_PORT_NUMBER}, {"https://host:1234/", "port=65535,", "https://host:65535/", 0, 0, CURLUE_OK, CURLUE_OK}, {"https://host:1234/", "port=65536,", "https://host:1234/", 0, 0, CURLUE_OK, CURLUE_BAD_PORT_NUMBER}, {"https://host/", "path=%4A%4B%4C,", "https://host/%4a%4b%4c", 0, 0, CURLUE_OK, CURLUE_OK}, {"https://host/mooo?q#f", "path=NULL,query=NULL,fragment=NULL,", "https://host/", 0, 0, CURLUE_OK, CURLUE_OK}, {"https://user:secret@host/", "user=NULL,password=NULL,", "https://host/", 0, 0, CURLUE_OK, CURLUE_OK}, {NULL, "scheme=https,user= @:,host=foobar,", "https://%20%20%20%40%3a@foobar/", 0, CURLU_URLENCODE, CURLUE_OK, CURLUE_OK}, {NULL, "scheme=https,host= ,path= ,user= ,password= ,query= ,fragment= ,", "https://%20:%20@%20%20/%20?+#%20", 0, CURLU_URLENCODE, CURLUE_OK, CURLUE_OK}, {NULL, "scheme=https,host=foobar,path=/this /path /is /here,", "https://foobar/this%20/path%20/is%20/here", 0, CURLU_URLENCODE, CURLUE_OK, CURLUE_OK}, {NULL, "scheme=https,host=foobar,path=\xc3\xa4\xc3\xb6\xc3\xbc,", "https://foobar/%c3%a4%c3%b6%c3%bc", 0, CURLU_URLENCODE, CURLUE_OK, CURLUE_OK}, {"imap://user:secret;opt@host/", "options=updated,scheme=imaps,password=p4ssw0rd,", "imaps://user:p4ssw0rd;updated@host/", 0, 0, CURLUE_NO_HOST, CURLUE_OK}, {"imap://user:secret;optit@host/", "scheme=https,", "https://user:secret@host/", 0, 0, CURLUE_NO_HOST, CURLUE_OK}, {"file:///file#anchor", "scheme=https,host=example,", "https://example/file#anchor", 0, 0, CURLUE_NO_HOST, CURLUE_OK}, {NULL, /* start fresh! */ "scheme=file,host=127.0.0.1,path=/no,user=anonymous,", "file:///no", 0, 0, CURLUE_OK, CURLUE_OK}, {NULL, /* start fresh! */ "scheme=ftp,host=127.0.0.1,path=/no,user=anonymous,", "ftp://anonymous@127.0.0.1/no", 0, 0, CURLUE_OK, CURLUE_OK}, {NULL, /* start fresh! */ "scheme=https,host=example.com,", "https://example.com/", 0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_OK}, {"http://user:foo@example.com/path?query#frag", "fragment=changed,", "http://user:foo@example.com/path?query#changed", 0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_OK}, {"http://example.com/", "scheme=foo,", /* not accepted */ "http://example.com/", 0, 0, CURLUE_OK, CURLUE_UNSUPPORTED_SCHEME}, {"http://example.com/", "scheme=https,path=/hello,fragment=snippet,", "https://example.com/hello#snippet", 0, 0, CURLUE_OK, CURLUE_OK}, {"http://example.com:80", "user=foo,port=1922,", "http://foo@example.com:1922/", 0, 0, CURLUE_OK, CURLUE_OK}, {"http://example.com:80", "user=foo,password=bar,", "http://foo:bar@example.com:80/", 0, 0, CURLUE_OK, CURLUE_OK}, {"http://example.com:80", "user=foo,", "http://foo@example.com:80/", 0, 0, CURLUE_OK, CURLUE_OK}, {"http://example.com", "host=www.example.com,", "http://www.example.com/", 0, 0, CURLUE_OK, CURLUE_OK}, {"http://example.com:80", "scheme=ftp,", "ftp://example.com:80/", 0, 0, 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)) |
︙ | ︙ | |||
496 497 498 499 500 501 502 503 504 505 | return CURLUPART_PORT; if(!strcmp("path", part)) return CURLUPART_PATH; if(!strcmp("query", part)) return CURLUPART_QUERY; if(!strcmp("fragment", part)) return CURLUPART_FRAGMENT; return 9999; /* bad input => bad output */ } | > > | > > > > | > > | > > | | 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 | return CURLUPART_PORT; if(!strcmp("path", part)) return CURLUPART_PATH; if(!strcmp("query", part)) return CURLUPART_QUERY; if(!strcmp("fragment", part)) return CURLUPART_FRAGMENT; if(!strcmp("zoneid", part)) return CURLUPART_ZONEID; return 9999; /* bad input => bad output */ } static CURLUcode updateurl(CURLU *u, const char *cmd, unsigned int setflags) { const char *p = cmd; CURLUcode uc; /* make sure the last command ends with a comma too! */ while(p) { char *e = strchr(p, ','); if(e) { size_t n = e-p; char buf[80]; char part[80]; char value[80]; memcpy(buf, p, n); buf[n] = 0; if(2 == sscanf(buf, "%79[^=]=%79[^,]", part, value)) { CURLUPart what = part2id(part); #if 0 /* for debugging this */ fprintf(stderr, "%s = %s [%d]\n", part, value, (int)what); #endif if(what > CURLUPART_ZONEID) fprintf(stderr, "UNKNOWN part '%s'\n", part); if(!strcmp("NULL", value)) uc = curl_url_set(u, what, NULL, setflags); else if(!strcmp("\"\"", value)) uc = curl_url_set(u, what, "", setflags); else uc = curl_url_set(u, what, value, setflags); if(uc) return uc; } p = e + 1; continue; } break; } return CURLUE_OK; } static struct redircase set_url_list[] = { {"file://localhost/path?query#frag", "foo#another", "file:///foo#another", 0, 0, 0}, |
︙ | ︙ | |||
623 624 625 626 627 628 629 | } if(set_parts_list[i].in) rc = curl_url_set(urlp, CURLUPART_URL, set_parts_list[i].in, set_parts_list[i].urlflags); else rc = CURLUE_OK; if(!rc) { | | > > > > > > > > | 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 | } if(set_parts_list[i].in) rc = curl_url_set(urlp, CURLUPART_URL, set_parts_list[i].in, set_parts_list[i].urlflags); else rc = CURLUE_OK; if(!rc) { CURLUcode uc = updateurl(urlp, set_parts_list[i].set, set_parts_list[i].setflags); if(uc != set_parts_list[i].pcode) { fprintf(stderr, "updateurl\nin: %s\nreturned %d (expected %d)\n", set_parts_list[i].set, (int)uc, set_parts_list[i].pcode); error++; } rc = curl_url_get(urlp, CURLUPART_URL, &url, 0); if(rc) { fprintf(stderr, "%s:%d Get URL returned %d\n", __FILE__, __LINE__, (int)rc); error++; } |
︙ | ︙ | |||
784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 | curl_free(url); } } curl_url_cleanup(urlp); } return error; } int test(char *URL) { (void)URL; /* not used */ if(append()) return 5; if(set_url()) return 1; | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | curl_free(url); } } curl_url_cleanup(urlp); } return error; } static int scopeid(void) { CURLU *u; int error = 0; CURLUcode rc; char *url; u = curl_url(); rc = curl_url_set(u, CURLUPART_URL, "https://[fe80::20c:29ff:fe9c:409b%25eth0]/hello.html", 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_set returned %d\n", __FILE__, __LINE__, (int)rc); error++; } rc = curl_url_get(u, CURLUPART_HOST, &url, 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_get CURLUPART_HOST returned %d\n", __FILE__, __LINE__, (int)rc); error++; } else { printf("we got %s\n", url); curl_free(url); } rc = curl_url_set(u, CURLUPART_HOST, "[::1]", 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_set CURLUPART_HOST returned %d\n", __FILE__, __LINE__, (int)rc); error++; } rc = curl_url_get(u, CURLUPART_URL, &url, 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_get CURLUPART_URL returned %d\n", __FILE__, __LINE__, (int)rc); error++; } else { printf("we got %s\n", url); curl_free(url); } rc = curl_url_set(u, CURLUPART_HOST, "example.com", 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_set CURLUPART_HOST returned %d\n", __FILE__, __LINE__, (int)rc); error++; } rc = curl_url_get(u, CURLUPART_URL, &url, 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_get CURLUPART_URL returned %d\n", __FILE__, __LINE__, (int)rc); error++; } else { printf("we got %s\n", url); curl_free(url); } rc = curl_url_set(u, CURLUPART_HOST, "[fe80::20c:29ff:fe9c:409b%25eth0]", 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_set CURLUPART_HOST returned %d\n", __FILE__, __LINE__, (int)rc); error++; } rc = curl_url_get(u, CURLUPART_URL, &url, 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_get CURLUPART_URL returned %d\n", __FILE__, __LINE__, (int)rc); error++; } else { printf("we got %s\n", url); curl_free(url); } rc = curl_url_get(u, CURLUPART_HOST, &url, 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_get CURLUPART_HOST returned %d\n", __FILE__, __LINE__, (int)rc); error++; } else { printf("we got %s\n", url); curl_free(url); } rc = curl_url_get(u, CURLUPART_ZONEID, &url, 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_get CURLUPART_ZONEID returned %d\n", __FILE__, __LINE__, (int)rc); error++; } else { printf("we got %s\n", url); curl_free(url); } rc = curl_url_set(u, CURLUPART_ZONEID, "clown", 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_set CURLUPART_ZONEID returned %d\n", __FILE__, __LINE__, (int)rc); error++; } rc = curl_url_get(u, CURLUPART_URL, &url, 0); if(rc != CURLUE_OK) { fprintf(stderr, "%s:%d curl_url_get CURLUPART_URL returned %d\n", __FILE__, __LINE__, (int)rc); error++; } else { printf("we got %s\n", url); curl_free(url); } curl_url_cleanup(u); return error; } int test(char *URL) { (void)URL; /* not used */ if(scopeid()) return 6; if(append()) return 5; if(set_url()) return 1; |
︙ | ︙ |
Changes to jni/curl/tests/libtest/lib1905.c.
︙ | ︙ | |||
84 85 86 87 88 89 90 91 92 93 | curl_easy_setopt(ch, CURLOPT_SHARE, NULL); curl_multi_remove_handle(cm, ch); cleanup: curl_easy_cleanup(ch); curl_share_cleanup(sh); curl_multi_cleanup(cm); return 0; } | > | 84 85 86 87 88 89 90 91 92 93 94 | curl_easy_setopt(ch, CURLOPT_SHARE, NULL); curl_multi_remove_handle(cm, ch); cleanup: curl_easy_cleanup(ch); curl_share_cleanup(sh); curl_multi_cleanup(cm); curl_global_cleanup(); return 0; } |
Added jni/curl/tests/libtest/lib1906.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 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "test.h" #include "testutil.h" #include "warnless.h" #include "memdebug.h" int test(char *URL) { char *url_after; CURLU *curlu = curl_url(); CURL *curl = curl_easy_init(); CURLcode curl_code; char error_buffer[CURL_ERROR_SIZE] = ""; curl_url_set(curlu, CURLUPART_URL, URL, CURLU_DEFAULT_SCHEME); curl_easy_setopt(curl, CURLOPT_CURLU, curlu); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); /* set a port number that makes this reqeuest fail */ curl_easy_setopt(curl, CURLOPT_PORT, 1L); curl_code = curl_easy_perform(curl); if(!curl_code) fprintf(stderr, "failure expected, " "curl_easy_perform returned %ld: <%s>, <%s>\n", (long) curl_code, curl_easy_strerror(curl_code), error_buffer); /* print the used url */ curl_url_get(curlu, CURLUPART_URL, &url_after, 0); fprintf(stderr, "curlu now: <%s>\n", url_after); curl_free(url_after); /* now reset CURLOP_PORT to go back to originally set port number */ curl_easy_setopt(curl, CURLOPT_PORT, 0L); curl_code = curl_easy_perform(curl); if(curl_code) fprintf(stderr, "success expected, " "curl_easy_perform returned %ld: <%s>, <%s>\n", (long) curl_code, curl_easy_strerror(curl_code), error_buffer); /* print url */ curl_url_get(curlu, CURLUPART_URL, &url_after, 0); fprintf(stderr, "curlu now: <%s>\n", url_after); curl_free(url_after); curl_easy_cleanup(curl); curl_url_cleanup(curlu); curl_global_cleanup(); return 0; } |
Changes to jni/curl/tests/libtest/lib509.c.
︙ | ︙ | |||
16 17 18 19 20 21 22 23 24 25 26 27 28 29 | * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "test.h" /* * This test uses these funny custom memory callbacks for the only purpose * of verifying that curl_global_init_mem() functionality is present in * libcurl and that it works unconditionally no matter how libcurl is built, * nothing more. * | > > | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "test.h" #include <string.h> /* * This test uses these funny custom memory callbacks for the only purpose * of verifying that curl_global_init_mem() functionality is present in * libcurl and that it works unconditionally no matter how libcurl is built, * nothing more. * |
︙ | ︙ |
Deleted jni/curl/tests/libtest/lib536.c.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Changes to jni/curl/tests/libtest/lib557.c.
︙ | ︙ | |||
118 119 120 121 122 123 124 | static struct siglong_st sl_test[SLONG_TESTS_ARRSZ]; static struct curloff_st co_test[COFFT_TESTS_ARRSZ]; static int test_unsigned_short_formatting(void) { int i, j; | | | 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | static struct siglong_st sl_test[SLONG_TESTS_ARRSZ]; static struct curloff_st co_test[COFFT_TESTS_ARRSZ]; 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"; |
︙ | ︙ | |||
225 226 227 228 229 230 231 | return failed; } static int test_signed_short_formatting(void) { int i, j; | | | 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | return failed; } 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"; |
︙ | ︙ | |||
395 396 397 398 399 400 401 | return failed; } static int test_unsigned_int_formatting(void) { int i, j; | | | 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 | return failed; } static int test_unsigned_int_formatting(void) { int i, j; int num_uint_tests = 0; int failed = 0; #if (SIZEOF_INT == 2) i = 1; ui_test[i].num = 0xFFFFU; ui_test[i].expected = "65535"; i++; ui_test[i].num = 0xFF00U; ui_test[i].expected = "65280"; i++; ui_test[i].num = 0x00FFU; ui_test[i].expected = "255"; |
︙ | ︙ | |||
545 546 547 548 549 550 551 | return failed; } static int test_signed_int_formatting(void) { int i, j; | | | 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 | return failed; } static int test_signed_int_formatting(void) { int i, j; int num_sint_tests = 0; int failed = 0; #if (SIZEOF_INT == 2) i = 1; si_test[i].num = 0x7FFF; si_test[i].expected = "32767"; i++; si_test[i].num = 0x7FFE; si_test[i].expected = "32766"; i++; si_test[i].num = 0x7FFD; si_test[i].expected = "32765"; |
︙ | ︙ | |||
773 774 775 776 777 778 779 | return failed; } static int test_unsigned_long_formatting(void) { int i, j; | | | 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 | return failed; } static int test_unsigned_long_formatting(void) { int i, j; int num_ulong_tests = 0; int failed = 0; #if (SIZEOF_LONG == 2) i = 1; ul_test[i].num = 0xFFFFUL; ul_test[i].expected = "65535"; i++; ul_test[i].num = 0xFF00UL; ul_test[i].expected = "65280"; i++; ul_test[i].num = 0x00FFUL; ul_test[i].expected = "255"; |
︙ | ︙ | |||
922 923 924 925 926 927 928 | return failed; } static int test_signed_long_formatting(void) { int i, j; | | | 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 | return failed; } static int test_signed_long_formatting(void) { int i, j; int num_slong_tests = 0; int failed = 0; #if (SIZEOF_LONG == 2) i = 1; sl_test[i].num = 0x7FFFL; sl_test[i].expected = "32767"; i++; sl_test[i].num = 0x7FFEL; sl_test[i].expected = "32766"; i++; sl_test[i].num = 0x7FFDL; sl_test[i].expected = "32765"; |
︙ | ︙ | |||
1150 1151 1152 1153 1154 1155 1156 | return failed; } static int test_curl_off_t_formatting(void) { int i, j; | | | 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 | return failed; } static int test_curl_off_t_formatting(void) { int i, j; int num_cofft_tests = 0; int failed = 0; #if (SIZEOF_CURL_OFF_T == 2) i = 1; co_test[i].num = MPRNT_OFF_T_C(0x7FFF); co_test[i].expected = "32767"; i++; co_test[i].num = MPRNT_OFF_T_C(0x7FFE); co_test[i].expected = "32766"; i++; co_test[i].num = MPRNT_OFF_T_C(0x7FFD); co_test[i].expected = "32765"; |
︙ | ︙ |
Changes to jni/curl/tests/python_dependencies/impacket/nmb.py.
1 2 3 4 5 6 7 | # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # | > > | 1 2 3 4 5 6 7 8 9 | from __future__ import print_function from __future__ import absolute_import # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # |
︙ | ︙ | |||
36 37 38 39 40 41 42 | import re import select import errno from random import randint from struct import pack, unpack import time | | | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import re import select import errno from random import randint from struct import pack, unpack import time from .structure import Structure CVS_REVISION = '$Revision: 526 $' # Taken from socket module reference INADDR_ANY = '0.0.0.0' BROADCAST_ADDR = '<broadcast>' |
︙ | ︙ | |||
450 451 452 453 454 455 456 | try: s.bind(( INADDR_ANY, randint(10000, 60000) )) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) has_bind = 1 except socket.error: pass if not has_bind: | | | 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 | try: s.bind(( INADDR_ANY, randint(10000, 60000) )) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) has_bind = 1 except socket.error: pass if not has_bind: raise NetBIOSError( 'Cannot bind to a good UDP port', ERRCLASS_OS, errno.EAGAIN) self.__sock = s # Set the default NetBIOS domain nameserver. def set_nameserver(self, nameserver): self.__nameserver = nameserver # Return the default NetBIOS domain nameserver, or None if none is specified. |
︙ | ︙ | |||
527 528 529 530 531 532 533 | res = NetBIOSPacket(data) if res.get_trn_id() == p.get_trn_id(): if res.get_rcode(): if res.get_rcode() == 0x03: return None else: | | | | | 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 | res = NetBIOSPacket(data) if res.get_trn_id() == p.get_trn_id(): if res.get_rcode(): if res.get_rcode() == 0x03: return None else: raise NetBIOSError( 'Negative name query response', ERRCLASS_QUERY, res.get_rcode()) if res.get_ancount() != 1: raise NetBIOSError( 'Malformed response') return NBPositiveNameQueryResponse(res.get_answers()) except select.error as ex: if ex[0] != errno.EINTR and ex[0] != errno.EAGAIN: raise NetBIOSError( 'Error occurs while waiting for response', ERRCLASS_OS, ex[0]) raise def __querynodestatus(self, nbname, destaddr, type, scope, timeout): self._setup_connection(destaddr) trn_id = randint(1, 32000) p = NetBIOSPacket() |
︙ | ︙ | |||
566 567 568 569 570 571 572 | # Retry again until tries == 0 tries -= 1 else: raise NetBIOSTimeout else: try: data, _ = self.__sock.recvfrom(65536, 0) | | | | | | | | | | 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 | # Retry again until tries == 0 tries -= 1 else: raise NetBIOSTimeout else: try: data, _ = self.__sock.recvfrom(65536, 0) except Exception as e: raise NetBIOSError("recvfrom error: %s" % str(e)) self.__sock.close() res = NetBIOSPacket(data) if res.get_trn_id() == p.get_trn_id(): if res.get_rcode(): if res.get_rcode() == 0x03: # I'm just guessing here raise NetBIOSError("Cannot get data from server") else: raise NetBIOSError( 'Negative name query response', ERRCLASS_QUERY, res.get_rcode()) answ = NBNodeStatusResponse(res.get_answers()) self.mac = answ.get_mac() return answ.get_node_names() except select.error as ex: if ex[0] != errno.EINTR and ex[0] != errno.EAGAIN: raise NetBIOSError( 'Error occurs while waiting for response', ERRCLASS_OS, ex[0]) except socket.error as ex: raise NetBIOSError('Connection error: %s' % str(ex)) # Perform first and second level encoding of name as specified in RFC 1001 (Section 4) def encode_name(name, type, scope): if name == '*': name += '\0' * 15 elif len(name) > 15: name = name[:15] + chr(type) |
︙ | ︙ | |||
837 838 839 840 841 842 843 | def _setup_connection(self, peer): try: af, socktype, proto, canonname, sa = socket.getaddrinfo(peer[0], peer[1], 0, socket.SOCK_STREAM)[0] sock = socket.socket(af, socktype, proto) sock.connect(sa) | | | 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 | def _setup_connection(self, peer): try: af, socktype, proto, canonname, sa = socket.getaddrinfo(peer[0], peer[1], 0, socket.SOCK_STREAM)[0] sock = socket.socket(af, socktype, proto) sock.connect(sa) except socket.error as e: raise socket.error("Connection error (%s:%s)" % (peer[0], peer[1]), e) return sock def send_packet(self, data): p = NetBIOSSessionPacket() p.set_type(NETBIOS_SESSION_MESSAGE) p.set_trailer(data) |
︙ | ︙ | |||
862 863 864 865 866 867 868 | p.set_type(NETBIOS_SESSION_REQUEST) p.set_trailer(remote_name + myname) self._sock.send(p.rawData()) while 1: p = self.recv_packet(timeout) if p.get_type() == NETBIOS_SESSION_NEGATIVE_RESPONSE: | | | 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 | p.set_type(NETBIOS_SESSION_REQUEST) p.set_trailer(remote_name + myname) self._sock.send(p.rawData()) while 1: p = self.recv_packet(timeout) if p.get_type() == NETBIOS_SESSION_NEGATIVE_RESPONSE: raise NetBIOSError( 'Cannot request session', ERRCLASS_SESSION, ord(p.get_trailer()[0])) elif p.get_type() == NETBIOS_SESSION_POSITIVE_RESPONSE: break else: # Ignore all other messages, most probably keepalive messages pass def polling_read(self, read_length, timeout): |
︙ | ︙ | |||
892 893 894 895 896 897 898 | else: time.sleep(CHUNK_TIME) time_left -= CHUNK_TIME continue received = self._sock.recv(bytes_left) if len(received) == 0: | | | | | | | | 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 | else: time.sleep(CHUNK_TIME) time_left -= CHUNK_TIME continue received = self._sock.recv(bytes_left) if len(received) == 0: raise NetBIOSError( 'Error while reading from remote', ERRCLASS_OS, None) data = data + received bytes_left = read_length - len(data) except select.error as ex: if ex[0] != errno.EINTR and ex[0] != errno.EAGAIN: raise NetBIOSError( 'Error occurs while reading from remote', ERRCLASS_OS, ex[0]) return data def non_polling_read(self, read_length, timeout): data = '' bytes_left = read_length while bytes_left > 0: try: ready, _, _ = select.select([self._sock.fileno() ], [ ], [ ], timeout) if not ready: raise NetBIOSTimeout received = self._sock.recv(bytes_left) if len(received) == 0: raise NetBIOSError( 'Error while reading from remote', ERRCLASS_OS, None) data = data + received bytes_left = read_length - len(data) except select.error as ex: if ex[0] != errno.EINTR and ex[0] != errno.EAGAIN: raise NetBIOSError( 'Error occurs while reading from remote', ERRCLASS_OS, ex[0]) return data def __read(self, timeout = None): data = self.read_function(4, timeout) type, flags, length = unpack('>ccH', data) if ord(type) == NETBIOS_SESSION_MESSAGE: |
︙ | ︙ | |||
970 971 972 973 974 975 976 | continue else: return addrs raise Exception("Host not found") n = get_netbios_host_by_name("some-host") | | | 972 973 974 975 976 977 978 979 980 981 982 | continue else: return addrs raise Exception("Host not found") n = get_netbios_host_by_name("some-host") print(n) if __name__ == '__main__': main() |
Changes to jni/curl/tests/python_dependencies/impacket/ntlm.py.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # Copyright (c) 2003-2016 CORE Security Technologies: # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # import base64 import struct import calendar import time import hashlib import random import string import binascii from impacket.structure import Structure from impacket import LOG | > | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | from __future__ import print_function # Copyright (c) 2003-2016 CORE Security Technologies: # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # import base64 import struct import calendar import time import hashlib import random import string import binascii from impacket.structure import Structure from impacket import LOG # This is important. NTLMv2 is not negotiated by the client or server. # It is used if set locally on both sides. Change this item if you don't want to use # NTLMv2 by default and fall back to NTLMv1 (with EXTENDED_SESSION_SECURITY or not) # Check the following links: # http://davenport.sourceforge.net/ntlm.html # http://blogs.msdn.com/b/openspecification/archive/2010/04/20/ntlm-keys-and-sundry-stuff.aspx # http://social.msdn.microsoft.com/Forums/en-US/os_interopscenarios/thread/c8f488ed-1b96-4e06-bd65-390aa41138d1/ # So I'm setting a global variable to control this, this can also be set programmatically |
︙ | ︙ | |||
205 206 207 208 209 210 211 | if data is not None: self.fromString(data) def __setitem__(self,key,value): self.fields[key] = (len(value),value) def __getitem__(self, key): | | | 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | if data is not None: self.fromString(data) def __setitem__(self,key,value): self.fields[key] = (len(value),value) def __getitem__(self, key): if key in self.fields: return self.fields[key] return None def __delitem__(self, key): del self.fields[key] def __len__(self): |
︙ | ︙ | |||
232 233 234 235 236 237 238 | tInfo = tInfo[struct.calcsize('<H'):] content = tInfo[:length] self.fields[fType]=(length,content) tInfo = tInfo[length:] def dump(self): for i in self.fields.keys(): | | | | | | | | 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 | tInfo = tInfo[struct.calcsize('<H'):] content = tInfo[:length] self.fields[fType]=(length,content) tInfo = tInfo[length:] def dump(self): for i in self.fields.keys(): print("%s: {%r}" % (i,self[i])) def getData(self): if NTLMSSP_AV_EOL in self.fields: del self.fields[NTLMSSP_AV_EOL] ans = '' for i in self.fields.keys(): ans+= struct.pack('<HH', i, self[i][0]) ans+= self[i][1] # end with a NTLMSSP_AV_EOL ans += struct.pack('<HH', NTLMSSP_AV_EOL, 0) return ans class NTLMAuthMixin: def get_os_version(self): if self['os_version'] == '': return None else: mayor_v = struct.unpack('B',self['os_version'][0])[0] minor_v = struct.unpack('B',self['os_version'][1])[0] build_v = struct.unpack('H',self['os_version'][2:4]) return (mayor_v,minor_v,build_v) class NTLMAuthNegotiate(Structure, NTLMAuthMixin): structure = ( ('','"NTLMSSP\x00'), ('message_type','<L=1'), ('flags','<L'), ('domain_len','<H-domain_name'), ('domain_max_len','<H-domain_name'), ('domain_offset','<L=0'), ('host_len','<H-host_name'), ('host_maxlen','<H-host_name'), ('host_offset','<L=0'), ('os_version',':'), ('host_name',':'), ('domain_name',':')) def __init__(self): Structure.__init__(self) self['flags']= ( NTLMSSP_NEGOTIATE_128 | NTLMSSP_NEGOTIATE_KEY_EXCH| # NTLMSSP_LM_KEY | NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_UNICODE | # NTLMSSP_ALWAYS_SIGN | NTLMSSP_NEGOTIATE_SIGN | NTLMSSP_NEGOTIATE_SEAL | # NTLMSSP_TARGET | 0) self['host_name']='' self['domain_name']='' self['os_version']='' def getData(self): if len(self.fields['host_name']) > 0: self['flags'] |= NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED if len(self.fields['domain_name']) > 0: self['flags'] |= NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED if len(self.fields['os_version']) > 0: self['flags'] |= NTLMSSP_NEGOTIATE_VERSION |
︙ | ︙ | |||
338 339 340 341 342 343 344 | ('domain_offset','<L=40'), ('flags','<L=0'), ('challenge','8s'), ('reserved','8s=""'), ('TargetInfoFields_len','<H-TargetInfoFields'), ('TargetInfoFields_max_len','<H-TargetInfoFields'), ('TargetInfoFields_offset','<L'), | | | 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 | ('domain_offset','<L=40'), ('flags','<L=0'), ('challenge','8s'), ('reserved','8s=""'), ('TargetInfoFields_len','<H-TargetInfoFields'), ('TargetInfoFields_max_len','<H-TargetInfoFields'), ('TargetInfoFields_offset','<L'), ('VersionLen','_-Version','self.checkVersion(self["flags"])'), ('Version',':'), ('domain_name',':'), ('TargetInfoFields',':')) def checkVersion(self, flags): if flags is not None: if flags & NTLMSSP_NEGOTIATE_VERSION == 0: |
︙ | ︙ | |||
361 362 363 364 365 366 367 | def fromString(self,data): Structure.fromString(self,data) # Just in case there's more data after the TargetInfoFields self['TargetInfoFields'] = self['TargetInfoFields'][:self['TargetInfoFields_len']] # We gotta process the TargetInfoFields #if self['TargetInfoFields_len'] > 0: | | | | 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 | def fromString(self,data): Structure.fromString(self,data) # Just in case there's more data after the TargetInfoFields self['TargetInfoFields'] = self['TargetInfoFields'][:self['TargetInfoFields_len']] # We gotta process the TargetInfoFields #if self['TargetInfoFields_len'] > 0: # av_pairs = AV_PAIRS(self['TargetInfoFields'][:self['TargetInfoFields_len']]) # self['TargetInfoFields'] = av_pairs return self class NTLMAuthChallengeResponse(Structure, NTLMAuthMixin): structure = ( ('','"NTLMSSP\x00'), ('message_type','<L=3'), ('lanman_len','<H-lanman'), ('lanman_max_len','<H-lanman'), |
︙ | ︙ | |||
390 391 392 393 394 395 396 | ('host_len','<H-host_name'), ('host_max_len','<H-host_name'), ('host_offset','<L'), ('session_key_len','<H-session_key'), ('session_key_max_len','<H-session_key'), ('session_key_offset','<L'), ('flags','<L'), | | | 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 | ('host_len','<H-host_name'), ('host_max_len','<H-host_name'), ('host_offset','<L'), ('session_key_len','<H-session_key'), ('session_key_max_len','<H-session_key'), ('session_key_offset','<L'), ('flags','<L'), ('VersionLen','_-Version','self.checkVersion(self["flags"])'), ('Version',':=""'), ('MICLen','_-MIC','self.checkMIC(self["flags"])'), ('MIC',':=""'), ('domain_name',':'), ('user_name',':'), ('host_name',':'), ('lanman',':'), |
︙ | ︙ | |||
420 421 422 423 424 425 426 | NTLMSSP_NEGOTIATE_UNICODE | # NTLMSSP_ALWAYS_SIGN | NTLMSSP_NEGOTIATE_SIGN | NTLMSSP_NEGOTIATE_SEAL | # NTLMSSP_TARGET | 0) # Here we do the stuff | | | 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 | NTLMSSP_NEGOTIATE_UNICODE | # NTLMSSP_ALWAYS_SIGN | NTLMSSP_NEGOTIATE_SIGN | NTLMSSP_NEGOTIATE_SEAL | # NTLMSSP_TARGET | 0) # Here we do the stuff if username and ( lmhash != '' or nthash != ''): self['lanman'] = get_ntlmv1_response(lmhash, challenge) self['ntlm'] = get_ntlmv1_response(nthash, challenge) elif (username and password): lmhash = compute_lmhash(password) nthash = compute_nthash(password) self['lanman']=get_ntlmv1_response(lmhash, challenge) self['ntlm']=get_ntlmv1_response(nthash, challenge) # This is not used for LM_KEY nor NTLM_KEY |
︙ | ︙ | |||
446 447 448 449 450 451 452 | def checkMIC(self, flags): # TODO: Find a proper way to check the MIC is in there if flags is not None: if flags & NTLMSSP_NEGOTIATE_VERSION == 0: return 0 return 16 | | | | | | | | 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 | def checkMIC(self, flags): # TODO: Find a proper way to check the MIC is in there if flags is not None: if flags & NTLMSSP_NEGOTIATE_VERSION == 0: return 0 return 16 def getData(self): self['domain_offset']=64+self.checkMIC(self["flags"])+self.checkVersion(self["flags"]) self['user_offset']=64+self.checkMIC(self["flags"])+self.checkVersion(self["flags"])+len(self['domain_name']) self['host_offset']=self['user_offset']+len(self['user_name']) self['lanman_offset']=self['host_offset']+len(self['host_name']) self['ntlm_offset']=self['lanman_offset']+len(self['lanman']) self['session_key_offset']=self['ntlm_offset']+len(self['ntlm']) return Structure.getData(self) def fromString(self,data): Structure.fromString(self,data) # [MS-NLMP] page 27 # Payload data can be present in any order within the Payload field, # with variable-length padding before or after the data domain_offset = self['domain_offset'] domain_end = self['domain_len'] + domain_offset self['domain_name'] = data[ domain_offset : domain_end ] host_offset = self['host_offset'] host_end = self['host_len'] + host_offset self['host_name'] = data[ host_offset: host_end ] user_offset = self['user_offset'] user_end = self['user_len'] + user_offset self['user_name'] = data[ user_offset: user_end ] ntlm_offset = self['ntlm_offset'] ntlm_end = self['ntlm_len'] + ntlm_offset self['ntlm'] = data[ ntlm_offset : ntlm_end ] lanman_offset = self['lanman_offset'] lanman_end = self['lanman_len'] + lanman_offset self['lanman'] = data[ lanman_offset : lanman_end] #if len(data) >= 36: # self['os_version'] = data[32:36] #else: # self['os_version'] = '' class ImpacketStructure(Structure): def set_parent(self, other): self.parent = other |
︙ | ︙ | |||
603 604 605 606 607 608 609 | domain = user.decode(encoding) ntlmChallenge = NTLMAuthChallenge(type2) # Let's start with the original flags sent in the type1 message responseFlags = type1['flags'] | | | | 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 | domain = user.decode(encoding) ntlmChallenge = NTLMAuthChallenge(type2) # Let's start with the original flags sent in the type1 message responseFlags = type1['flags'] # Token received and parsed. Depending on the authentication # method we will create a valid ChallengeResponse ntlmChallengeResponse = NTLMAuthChallengeResponse(user, password, ntlmChallenge['challenge']) clientChallenge = "".join([random.choice(string.digits+string.letters) for i in range(8)]) serverName = ntlmChallenge['TargetInfoFields'] ntResponse, lmResponse, sessionBaseKey = computeResponse(ntlmChallenge['flags'], ntlmChallenge['challenge'], clientChallenge, serverName, domain, user, password, lmhash, nthash, use_ntlmv2 ) # Let's check the return flags if (ntlmChallenge['flags'] & NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY) == 0: |
︙ | ︙ | |||
643 644 645 646 647 648 649 | if user == '' and password == '' and lmhash == '' and nthash == '': keyExchangeKey = '\x00'*16 # If we set up key exchange, let's fill the right variables if ntlmChallenge['flags'] & NTLMSSP_NEGOTIATE_KEY_EXCH: # not exactly what I call random tho :\ # exportedSessionKey = this is the key we should use to sign | | | 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 | if user == '' and password == '' and lmhash == '' and nthash == '': keyExchangeKey = '\x00'*16 # If we set up key exchange, let's fill the right variables if ntlmChallenge['flags'] & NTLMSSP_NEGOTIATE_KEY_EXCH: # not exactly what I call random tho :\ # exportedSessionKey = this is the key we should use to sign exportedSessionKey = "".join([random.choice(string.digits+string.letters) for i in range(16)]) #exportedSessionKey = "A"*16 #print "keyExchangeKey %r" % keyExchangeKey # Let's generate the right session key based on the challenge flags #if responseFlags & NTLMSSP_NTLM2_KEY: # Extended session security enabled # if responseFlags & NTLMSSP_KEY_128: # Full key |
︙ | ︙ | |||
673 674 675 676 677 678 679 | # [MS-NLMP] page 46 exportedSessionKey = keyExchangeKey ntlmChallengeResponse['flags'] = responseFlags ntlmChallengeResponse['domain_name'] = domain.encode('utf-16le') ntlmChallengeResponse['lanman'] = lmResponse ntlmChallengeResponse['ntlm'] = ntResponse | | | | | | | > > | | 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 | # [MS-NLMP] page 46 exportedSessionKey = keyExchangeKey ntlmChallengeResponse['flags'] = responseFlags ntlmChallengeResponse['domain_name'] = domain.encode('utf-16le') ntlmChallengeResponse['lanman'] = lmResponse ntlmChallengeResponse['ntlm'] = ntResponse if encryptedRandomSessionKey is not None: ntlmChallengeResponse['session_key'] = encryptedRandomSessionKey return ntlmChallengeResponse, exportedSessionKey # NTLMv1 Algorithm def generateSessionKeyV1(password, lmhash, nthash): if POW: hash = POW.Digest(POW.MD4_DIGEST) else: hash = MD4.new() hash.update(NTOWFv1(password, lmhash, nthash)) return hash.digest() def computeResponseNTLMv1(flags, serverChallenge, clientChallenge, serverName, domain, user, password, lmhash='', nthash='', use_ntlmv2 = USE_NTLMv2): if (user == '' and password == ''): # Special case for anonymous authentication lmResponse = '' ntResponse = '' else: lmhash = LMOWFv1(password, lmhash, nthash) nthash = NTOWFv1(password, lmhash, nthash) if flags & NTLMSSP_NEGOTIATE_LM_KEY: ntResponse = '' lmResponse = get_ntlmv1_response(lmhash, serverChallenge) elif flags & NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY: md5 = hashlib.new('md5') chall = (serverChallenge + clientChallenge) md5.update(chall) ntResponse = ntlmssp_DES_encrypt(nthash, md5.digest()[:8]) lmResponse = clientChallenge + '\x00'*16 else: ntResponse = get_ntlmv1_response(nthash,serverChallenge) lmResponse = get_ntlmv1_response(lmhash, serverChallenge) sessionBaseKey = generateSessionKeyV1(password, lmhash, nthash) return ntResponse, lmResponse, sessionBaseKey def compute_lmhash(password): # This is done according to Samba's encryption specification (docs/html/ENCRYPTION.html) password = password.upper() lmhash = __DES_block(password[:7], KNOWN_DES_INPUT) lmhash += __DES_block(password[7:14], KNOWN_DES_INPUT) return lmhash def NTOWFv1(password, lmhash = '', nthash=''): if nthash != '': return nthash return compute_nthash(password) def LMOWFv1(password, lmhash = '', nthash=''): if lmhash != '': return lmhash return compute_lmhash(password) def compute_nthash(password): # This is done according to Samba's encryption specification (docs/html/ENCRYPTION.html) try: password = unicode(password).encode('utf_16le') except NameError: # unicode() was removed in Python 3 password = str(password).encode('utf_16le') except UnicodeDecodeError: import sys password = password.decode(sys.getfilesystemencoding()).encode('utf_16le') if POW: hash = POW.Digest(POW.MD4_DIGEST) else: hash = MD4.new() hash.update(password) return hash.digest() def get_ntlmv1_response(key, challenge): return ntlmssp_DES_encrypt(key, challenge) |
︙ | ︙ | |||
776 777 778 779 780 781 782 | messageSignature['Checksum'] = struct.pack('<i',binascii.crc32(message)) messageSignature['RandomPad'] = 0 messageSignature['RandomPad'] = handle(struct.pack('<i',messageSignature['RandomPad'])) messageSignature['Checksum'] = struct.unpack('<i',handle(messageSignature['Checksum']))[0] messageSignature['SeqNum'] = handle('\x00\x00\x00\x00') messageSignature['SeqNum'] = struct.unpack('<i',messageSignature['SeqNum'])[0] ^ seqNum messageSignature['RandomPad'] = 0 | | | 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 | messageSignature['Checksum'] = struct.pack('<i',binascii.crc32(message)) messageSignature['RandomPad'] = 0 messageSignature['RandomPad'] = handle(struct.pack('<i',messageSignature['RandomPad'])) messageSignature['Checksum'] = struct.unpack('<i',handle(messageSignature['Checksum']))[0] messageSignature['SeqNum'] = handle('\x00\x00\x00\x00') messageSignature['SeqNum'] = struct.unpack('<i',messageSignature['SeqNum'])[0] ^ seqNum messageSignature['RandomPad'] = 0 return messageSignature def SEAL(flags, signingKey, sealingKey, messageToSign, messageToEncrypt, seqNum, handle): sealedMessage = handle(messageToEncrypt) signature = MAC(flags, handle, signingKey, seqNum, messageToSign) return sealedMessage, signature |
︙ | ︙ | |||
859 860 861 862 863 864 865 | keyExchangeKey = LMOWFv1(password,lmhash)[:8] + '\x00'*8 else: keyExchangeKey = sessionBaseKey else: raise "Can't create a valid KXKEY!" return keyExchangeKey | | | | 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 | keyExchangeKey = LMOWFv1(password,lmhash)[:8] + '\x00'*8 else: keyExchangeKey = sessionBaseKey else: raise "Can't create a valid KXKEY!" return keyExchangeKey def hmac_md5(key, data): if POW: h = POW.Hmac(POW.MD5_DIGEST, key) h.update(data) result = h.mac() else: import hmac h = hmac.new(key) h.update(data) result = h.digest() return result def NTOWFv2( user, password, domain, hash = ''): if hash != '': theHash = hash else: theHash = compute_nthash(password) return hmac_md5(theHash, user.upper().encode('utf-16le') + domain.encode('utf-16le')) def LMOWFv2( user, password, domain, lmhash = ''): return NTOWFv2( user, password, domain, lmhash) |
︙ | ︙ | |||
903 904 905 906 907 908 909 | if av_pairs[NTLMSSP_AV_TIME] is not None: aTime = av_pairs[NTLMSSP_AV_TIME][1] else: aTime = struct.pack('<q', (116444736000000000 + calendar.timegm(time.gmtime()) * 10000000) ) #aTime = '\x00'*8 av_pairs[NTLMSSP_AV_TIME] = aTime serverName = av_pairs.getData() | | | 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 | if av_pairs[NTLMSSP_AV_TIME] is not None: aTime = av_pairs[NTLMSSP_AV_TIME][1] else: aTime = struct.pack('<q', (116444736000000000 + calendar.timegm(time.gmtime()) * 10000000) ) #aTime = '\x00'*8 av_pairs[NTLMSSP_AV_TIME] = aTime serverName = av_pairs.getData() ###################### #aTime = '\x00'*8 ###################### temp = responseServerVersion + hiResponseServerVersion + '\x00' * 6 + aTime + clientChallenge + '\x00' * 4 + serverName + '\x00' * 4 ntProofStr = hmac_md5(responseKeyNT, serverChallenge + temp) |
︙ | ︙ | |||
933 934 935 936 937 938 939 | @classmethod def get_instace(cls,msg_64): msg = None msg_type = 0 if msg_64 != '': msg = base64.b64decode(msg_64[5:]) # Remove the 'NTLM ' msg_type = ord(msg[8]) | | | | < | 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 | @classmethod def get_instace(cls,msg_64): msg = None msg_type = 0 if msg_64 != '': msg = base64.b64decode(msg_64[5:]) # Remove the 'NTLM ' msg_type = ord(msg[8]) for _cls in NTLM_HTTP.__subclasses__(): if msg_type == _cls.MSG_TYPE: instance = _cls() instance.fromString(msg) return instance class NTLM_HTTP_AuthRequired(NTLM_HTTP): commonHdr = () # Message 0 means the first HTTP request e.g. 'GET /bla.png' MSG_TYPE = 0 def fromString(self,data): pass class NTLM_HTTP_AuthNegotiate(NTLM_HTTP, NTLMAuthNegotiate): commonHdr = () MSG_TYPE = 1 def __init__(self): NTLMAuthNegotiate.__init__(self) class NTLM_HTTP_AuthChallengeResponse(NTLM_HTTP, NTLMAuthChallengeResponse): commonHdr = () MSG_TYPE = 3 def __init__(self): NTLMAuthChallengeResponse.__init__(self) |
Changes to jni/curl/tests/python_dependencies/impacket/smb.py.
︙ | ︙ | |||
625 626 627 628 629 630 631 | def __repr__(self): return '<SharedFile instance: shortname="' + self.__shortname + '", longname="' + self.__longname + '", filesize=' + str(self.__filesize) + '>' @staticmethod def __convert_smbtime(t): x = t >> 32 | | | | 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 | def __repr__(self): return '<SharedFile instance: shortname="' + self.__shortname + '", longname="' + self.__longname + '", filesize=' + str(self.__filesize) + '>' @staticmethod def __convert_smbtime(t): x = t >> 32 y = t & 0xffffffff geo_cal_offset = 11644473600.0 # = 369.0 * 365.25 * 24 * 60 * 60 - (3.0 * 24 * 60 * 60 + 6.0 * 60 * 60) return (x * 4.0 * (1 << 30) + (y & 0xfff00000)) * 1.0e-7 - geo_cal_offset # Contain information about a SMB machine class SMBMachine: def __init__(self, nbname, nbt_type, comment): self.__nbname = nbname self.__type = nbt_type |
︙ | ︙ | |||
672 673 674 675 676 677 678 | ('Mid','<H=0'), ('Data','*:'), ) def __init__(self, **kargs): Structure.__init__(self, **kargs) | | | | | 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 | ('Mid','<H=0'), ('Data','*:'), ) def __init__(self, **kargs): Structure.__init__(self, **kargs) if ('Flags2' in self.fields) is False: self['Flags2'] = 0 if ('Flags1' in self.fields) is False: self['Flags1'] = 0 if 'data' not in kargs: self['Data'] = [] def addCommand(self, command): if len(self['Data']) == 0: self['Command'] = command.command else: self['Data'][-1]['Parameters']['AndXCommand'] = command.command |
︙ | ︙ | |||
705 706 707 708 709 710 711 | if (self['ErrorClass'] == 0x00 and self['ErrorCode'] == 0x00): return 1 elif self.isMoreData(): return 1 elif self.isMoreProcessingRequired(): return 1 | | | | 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 | if (self['ErrorClass'] == 0x00 and self['ErrorCode'] == 0x00): return 1 elif self.isMoreData(): return 1 elif self.isMoreProcessingRequired(): return 1 raise SessionError("SMB Library Error", self['ErrorClass'] + (self['_reserved'] << 8), self['ErrorCode'], self['Flags2'] & SMB.FLAGS2_NT_STATUS) else: raise UnsupportedFeature("Unexpected answer from server: Got %d, Expected %d" % (self['Command'], cmd)) class SMBCommand(Structure): structure = ( ('WordCount', 'B=len(Parameters)/2'), ('_ParametersLength','_-Parameters','WordCount*2'), ('Parameters',':'), # default set by constructor |
︙ | ︙ | |||
2546 2547 2548 2549 2550 2551 2552 | def isValidAnswer(s, cmd): while 1: if s.rawData(): if s.get_command() == cmd: if s.get_error_class() == 0x00 and s.get_error_code() == 0x00: return 1 else: | | | 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 | def isValidAnswer(s, cmd): while 1: if s.rawData(): if s.get_command() == cmd: if s.get_error_class() == 0x00 and s.get_error_code() == 0x00: return 1 else: raise SessionError( "SMB Library Error", s.get_error_class()+ (s.get_reserved() << 8), s.get_error_code() , s.get_flags2() & SMB.FLAGS2_NT_STATUS) else: break return 0 def neg_session(self, extended_security = True, negPacket = None): def parsePacket(smb): if smb.isValidAnswer(SMB.SMB_COM_NEGOTIATE): |
︙ | ︙ | |||
2579 2580 2581 2582 2583 2584 2585 | # If not, let's try the old way else: if self._dialects_data['ServerName'] is not None: self.__server_name = self._dialects_data['ServerName'] if self._dialects_parameters['DialectIndex'] == 0xffff: | | | 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 | # If not, let's try the old way else: if self._dialects_data['ServerName'] is not None: self.__server_name = self._dialects_data['ServerName'] if self._dialects_parameters['DialectIndex'] == 0xffff: raise UnsupportedFeature("Remote server does not know NT LM 0.12") return 1 else: return 0 if negPacket is None: smb = NewSMBPacket() negSession = SMBCommand(SMB.SMB_COM_NEGOTIATE) |
︙ | ︙ | |||
2730 2731 2732 2733 2734 2735 2736 | def get_session_key(self): return self._SigningSessionKey def set_session_key(self, key): self._SigningSessionKey = key def get_encryption_key(self): | | | 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 | def get_session_key(self): return self._SigningSessionKey def set_session_key(self, key): self._SigningSessionKey = key def get_encryption_key(self): if 'Challenge' in self._dialects_data.fields: return self._dialects_data['Challenge'] else: return None def get_server_time(self): timestamp = self._dialects_parameters['HighDateTime'] timestamp <<= 32 |
︙ | ︙ | |||
3237 3238 3239 3240 3241 3242 3243 | try: self.__server_dns_domain_name = av_pairs[ntlm.NTLMSSP_AV_DNS_DOMAINNAME][1].decode('utf-16le') except: # For some reason, we couldn't decode Unicode here.. silently discard the operation pass # Parse Version to know the target Operating system name. Not provided elsewhere anymore | | | 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 | try: self.__server_dns_domain_name = av_pairs[ntlm.NTLMSSP_AV_DNS_DOMAINNAME][1].decode('utf-16le') except: # For some reason, we couldn't decode Unicode here.. silently discard the operation pass # Parse Version to know the target Operating system name. Not provided elsewhere anymore if 'Version' in ntlmChallenge.fields: version = ntlmChallenge['Version'] if len(version) >= 4: self.__server_os_major, self.__server_os_minor, self.__server_os_build = unpack('<BBH',version[:4]) type3, exportedSessionKey = ntlm.getNTLMSSPType3(auth, respToken['ResponseToken'], user, password, domain, lmhash, nthash, use_ntlmv2 = use_ntlmv2) |
︙ | ︙ |
Changes to jni/curl/tests/python_dependencies/impacket/smb3.py.
1 2 3 4 5 6 7 | # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # # Author: Alberto Solino (@agsolino) | > | 1 2 3 4 5 6 7 8 | from __future__ import print_function # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # # Author: Alberto Solino (@agsolino) |
︙ | ︙ | |||
227 228 229 230 231 232 233 | self._NetBIOSSession = session # We should increase the SequenceWindow since a packet was already received. self._Connection['SequenceWindow'] += 1 # Let's negotiate again using the same connection self.negotiateSession(preferredDialect) def printStatus(self): | | | | | | | 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | self._NetBIOSSession = session # We should increase the SequenceWindow since a packet was already received. self._Connection['SequenceWindow'] += 1 # Let's negotiate again using the same connection self.negotiateSession(preferredDialect) def printStatus(self): print("CONNECTION") for i in self._Connection.items(): print("%-40s : %s" % i) print() print("SESSION") for i in self._Session.items(): print("%-40s : %s" % i) def getServerName(self): return self._Session['ServerName'] def getServerIP(self): return self._Connection['ServerIP'] |
︙ | ︙ | |||
304 305 306 307 308 309 310 | # Check this is not a CANCEL request. If so, don't consume sequece numbers if packet['Command'] is not SMB2_CANCEL: packet['MessageID'] = self._Connection['SequenceWindow'] self._Connection['SequenceWindow'] += 1 packet['SessionID'] = self._Session['SessionID'] # Default the credit charge to 1 unless set by the caller | | | | 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 | # Check this is not a CANCEL request. If so, don't consume sequece numbers if packet['Command'] is not SMB2_CANCEL: packet['MessageID'] = self._Connection['SequenceWindow'] self._Connection['SequenceWindow'] += 1 packet['SessionID'] = self._Session['SessionID'] # Default the credit charge to 1 unless set by the caller if ('CreditCharge' in packet.fields) is False: packet['CreditCharge'] = 1 # Standard credit request after negotiating protocol if self._Connection['SequenceWindow'] > 3: packet['CreditRequestResponse'] = 127 messageId = packet['MessageID'] if self._Session['SigningActivated'] is True and self._Connection['SequenceWindow'] > 2: if packet['TreeID'] > 0 and (packet['TreeID'] in self._Session['TreeConnectTable']) is True: if self._Session['TreeConnectTable'][packet['TreeID']]['EncryptData'] is False: packet['Flags'] = SMB2_FLAGS_SIGNED self.signSMB(packet) elif packet['TreeID'] == 0: packet['Flags'] = SMB2_FLAGS_SIGNED self.signSMB(packet) |
︙ | ︙ | |||
346 347 348 349 350 351 352 | packet = str(transformHeader) + cipherText self._NetBIOSSession.send_packet(str(packet)) return messageId def recvSMB(self, packetID = None): # First, verify we don't have the packet already | | | 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | packet = str(transformHeader) + cipherText self._NetBIOSSession.send_packet(str(packet)) return messageId def recvSMB(self, packetID = None): # First, verify we don't have the packet already if packetID in self._Connection['OutstandingResponses']: return self._Connection['OutstandingResponses'].pop(packetID) data = self._NetBIOSSession.recv_packet(self._timeout) if data.get_trailer().startswith('\xfdSMB'): # Packet is encrypted transformHeader = SMB2_TRANSFORM_HEADER(data.get_trailer()) |
︙ | ︙ | |||
723 724 725 726 727 728 729 | try: self._Session['ServerDNSDomainName'] = av_pairs[ntlm.NTLMSSP_AV_DNS_DOMAINNAME][1].decode('utf-16le') except: # For some reason, we couldn't decode Unicode here.. silently discard the operation pass # Parse Version to know the target Operating system name. Not provided elsewhere anymore | | | 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 | try: self._Session['ServerDNSDomainName'] = av_pairs[ntlm.NTLMSSP_AV_DNS_DOMAINNAME][1].decode('utf-16le') except: # For some reason, we couldn't decode Unicode here.. silently discard the operation pass # Parse Version to know the target Operating system name. Not provided elsewhere anymore if 'Version' in ntlmChallenge.fields: version = ntlmChallenge['Version'] if len(version) >= 4: self._Session['ServerOS'] = "Windows %d.%d Build %d" % (ord(version[0]), ord(version[1]), struct.unpack('<H',version[2:4])[0]) self._Session["ServerOSMajor"] = ord(version[0]) self._Session["ServerOSMinor"] = ord(version[1]) self._Session["ServerOSBuild"] = struct.unpack('<H',version[2:4])[0] |
︙ | ︙ | |||
781 782 783 784 785 786 787 | def connectTree(self, share): # Just in case this came with the full path (maybe an SMB1 client), let's just leave # the sharename, we'll take care of the rest #print self._Session['TreeConnectTable'] share = share.split('\\')[-1] | | | 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 | def connectTree(self, share): # Just in case this came with the full path (maybe an SMB1 client), let's just leave # the sharename, we'll take care of the rest #print self._Session['TreeConnectTable'] share = share.split('\\')[-1] if share in self._Session['TreeConnectTable']: # Already connected, no need to reconnect treeEntry = self._Session['TreeConnectTable'][share] treeEntry['NumberOfUses'] += 1 self._Session['TreeConnectTable'][treeEntry['TreeConnectId']]['NumberOfUses'] += 1 return treeEntry['TreeConnectId'] #path = share |
︙ | ︙ | |||
833 834 835 836 837 838 839 | self._Session['TreeConnectTable'][packet['TreeID']] = treeEntry self._Session['TreeConnectTable'][share] = treeEntry return packet['TreeID'] def disconnectTree(self, treeId): | | | | 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 | self._Session['TreeConnectTable'][packet['TreeID']] = treeEntry self._Session['TreeConnectTable'][share] = treeEntry return packet['TreeID'] def disconnectTree(self, treeId): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if treeId in self._Session['TreeConnectTable']: # More than 1 use? descrease it and return, if not, send the packet if self._Session['TreeConnectTable'][treeId]['NumberOfUses'] > 1: treeEntry = self._Session['TreeConnectTable'][treeId] treeEntry['NumberOfUses'] -= 1 self._Session['TreeConnectTable'][treeEntry['ShareName']]['NumberOfUses'] -= 1 return True |
︙ | ︙ | |||
858 859 860 861 862 863 864 | if packet.isValidAnswer(STATUS_SUCCESS): shareName = self._Session['TreeConnectTable'][treeId]['ShareName'] del(self._Session['TreeConnectTable'][shareName]) del(self._Session['TreeConnectTable'][treeId]) return True def create(self, treeId, fileName, desiredAccess, shareMode, creationOptions, creationDisposition, fileAttributes, impersonationLevel = SMB2_IL_IMPERSONATION, securityFlags = 0, oplockLevel = SMB2_OPLOCK_LEVEL_NONE, createContexts = None): | | | 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 | if packet.isValidAnswer(STATUS_SUCCESS): shareName = self._Session['TreeConnectTable'][treeId]['ShareName'] del(self._Session['TreeConnectTable'][shareName]) del(self._Session['TreeConnectTable'][treeId]) return True def create(self, treeId, fileName, desiredAccess, shareMode, creationOptions, creationDisposition, fileAttributes, impersonationLevel = SMB2_IL_IMPERSONATION, securityFlags = 0, oplockLevel = SMB2_OPLOCK_LEVEL_NONE, createContexts = None): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) fileName = string.replace(fileName, '/', '\\') if len(fileName) > 0: fileName = ntpath.normpath(fileName) if fileName[0] == '\\': fileName = fileName[1:] |
︙ | ︙ | |||
881 882 883 884 885 886 887 | fileEntry['LeaseState'] = SMB2_LEASE_NONE self.GlobalFileTable[pathName] = fileEntry if self._Connection['Dialect'] == SMB2_DIALECT_30 and self._Connection['SupportsDirectoryLeasing'] is True: # Is this file NOT on the root directory? if len(fileName.split('\\')) > 2: parentDir = ntpath.dirname(pathName) | | | 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 | fileEntry['LeaseState'] = SMB2_LEASE_NONE self.GlobalFileTable[pathName] = fileEntry if self._Connection['Dialect'] == SMB2_DIALECT_30 and self._Connection['SupportsDirectoryLeasing'] is True: # Is this file NOT on the root directory? if len(fileName.split('\\')) > 2: parentDir = ntpath.dirname(pathName) if parentDir in self.GlobalFileTable: LOG.critical("Don't know what to do now! :-o") raise else: parentEntry = copy.deepcopy(FILE) parentEntry['LeaseKey'] = uuid.generate() parentEntry['LeaseState'] = SMB2_LEASE_NONE self.GlobalFileTable[parentDir] = parentEntry |
︙ | ︙ | |||
953 954 955 956 957 958 959 | # The client MUST generate a handle for the Open, and it MUST # return success and the generated handle to the calling application. # In our case, str(FileID) return str(createResponse['FileID']) def close(self, treeId, fileId): | | | | 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 | # The client MUST generate a handle for the Open, and it MUST # return success and the generated handle to the calling application. # In our case, str(FileID) return str(createResponse['FileID']) def close(self, treeId, fileId): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_CLOSE packet['TreeID'] = treeId smbClose = SMB2Close() |
︙ | ︙ | |||
984 985 986 987 988 989 990 | def read(self, treeId, fileId, offset = 0, bytesToRead = 0, waitAnswer = True): # IMPORTANT NOTE: As you can see, this was coded as a recursive function # Hence, you can exhaust the memory pretty easy ( large bytesToRead ) # This function should NOT be used for reading files directly, but another higher # level function should be used that will break the read into smaller pieces | | | | 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 | def read(self, treeId, fileId, offset = 0, bytesToRead = 0, waitAnswer = True): # IMPORTANT NOTE: As you can see, this was coded as a recursive function # Hence, you can exhaust the memory pretty easy ( large bytesToRead ) # This function should NOT be used for reading files directly, but another higher # level function should be used that will break the read into smaller pieces if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_READ packet['TreeID'] = treeId if self._Connection['MaxReadSize'] < bytesToRead: |
︙ | ︙ | |||
1026 1027 1028 1029 1030 1031 1032 | def write(self, treeId, fileId, data, offset = 0, bytesToWrite = 0, waitAnswer = True): # IMPORTANT NOTE: As you can see, this was coded as a recursive function # Hence, you can exhaust the memory pretty easy ( large bytesToWrite ) # This function should NOT be used for writing directly to files, but another higher # level function should be used that will break the writes into smaller pieces | | | | 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 | def write(self, treeId, fileId, data, offset = 0, bytesToWrite = 0, waitAnswer = True): # IMPORTANT NOTE: As you can see, this was coded as a recursive function # Hence, you can exhaust the memory pretty easy ( large bytesToWrite ) # This function should NOT be used for writing directly to files, but another higher # level function should be used that will break the writes into smaller pieces if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_WRITE packet['TreeID'] = treeId if self._Connection['MaxWriteSize'] < bytesToWrite: |
︙ | ︙ | |||
1067 1068 1069 1070 1071 1072 1073 | writeResponse = SMB2Write_Response(ans['Data']) bytesWritten = writeResponse['Count'] if bytesWritten < bytesToWrite: bytesWritten += self.write(treeId, fileId, data[bytesWritten:], offset+bytesWritten, bytesToWrite-bytesWritten, waitAnswer) return bytesWritten def queryDirectory(self, treeId, fileId, searchString = '*', resumeIndex = 0, informationClass = FILENAMES_INFORMATION, maxBufferSize = None, enumRestart = False, singleEntry = False): | | | | 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 | writeResponse = SMB2Write_Response(ans['Data']) bytesWritten = writeResponse['Count'] if bytesWritten < bytesToWrite: bytesWritten += self.write(treeId, fileId, data[bytesWritten:], offset+bytesWritten, bytesToWrite-bytesWritten, waitAnswer) return bytesWritten def queryDirectory(self, treeId, fileId, searchString = '*', resumeIndex = 0, informationClass = FILENAMES_INFORMATION, maxBufferSize = None, enumRestart = False, singleEntry = False): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_QUERY_DIRECTORY packet['TreeID'] = treeId queryDirectory = SMB2QueryDirectory() |
︙ | ︙ | |||
1120 1121 1122 1123 1124 1125 1126 | smbCancel = SMB2Cancel() packet['Data'] = smbCancel self.sendSMB(packet) def ioctl(self, treeId, fileId = None, ctlCode = -1, flags = 0, inputBlob = '', maxInputResponse = None, maxOutputResponse = None, waitAnswer = 1): | | | | 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 | smbCancel = SMB2Cancel() packet['Data'] = smbCancel self.sendSMB(packet) def ioctl(self, treeId, fileId = None, ctlCode = -1, flags = 0, inputBlob = '', maxInputResponse = None, maxOutputResponse = None, waitAnswer = 1): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if fileId is None: fileId = '\xff'*16 else: if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_IOCTL packet['TreeID'] = treeId smbIoctl = SMB2Ioctl() |
︙ | ︙ | |||
1161 1162 1163 1164 1165 1166 1167 | ans = self.recvSMB(packetID) if ans.isValidAnswer(STATUS_SUCCESS): smbIoctlResponse = SMB2Ioctl_Response(ans['Data']) return smbIoctlResponse['Buffer'] def flush(self,treeId, fileId): | | | | | | 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 | ans = self.recvSMB(packetID) if ans.isValidAnswer(STATUS_SUCCESS): smbIoctlResponse = SMB2Ioctl_Response(ans['Data']) return smbIoctlResponse['Buffer'] def flush(self,treeId, fileId): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_FLUSH packet['TreeID'] = treeId smbFlush = SMB2Flush() smbFlush['FileID'] = fileId packet['Data'] = smbFlush packetID = self.sendSMB(packet) ans = self.recvSMB(packetID) if ans.isValidAnswer(STATUS_SUCCESS): return True def lock(self, treeId, fileId, locks, lockSequence = 0): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_LOCK packet['TreeID'] = treeId smbLock = SMB2Lock() |
︙ | ︙ | |||
1244 1245 1246 1247 1248 1249 1250 | self._Session['SigningRequired'] = False self._Session['SigningKey'] = '' self._Session['SessionKey'] = '' self._Session['SigningActivated'] = False return True def queryInfo(self, treeId, fileId, inputBlob = '', infoType = SMB2_0_INFO_FILE, fileInfoClass = SMB2_FILE_STANDARD_INFO, additionalInformation = 0, flags = 0 ): | | | | 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 | self._Session['SigningRequired'] = False self._Session['SigningKey'] = '' self._Session['SessionKey'] = '' self._Session['SigningActivated'] = False return True def queryInfo(self, treeId, fileId, inputBlob = '', infoType = SMB2_0_INFO_FILE, fileInfoClass = SMB2_FILE_STANDARD_INFO, additionalInformation = 0, flags = 0 ): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_QUERY_INFO packet['TreeID'] = treeId queryInfo = SMB2QueryInfo() |
︙ | ︙ | |||
1276 1277 1278 1279 1280 1281 1282 | ans = self.recvSMB(packetID) if ans.isValidAnswer(STATUS_SUCCESS): queryResponse = SMB2QueryInfo_Response(ans['Data']) return queryResponse['Buffer'] def setInfo(self, treeId, fileId, inputBlob = '', infoType = SMB2_0_INFO_FILE, fileInfoClass = SMB2_FILE_STANDARD_INFO, additionalInformation = 0 ): | | | | 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 | ans = self.recvSMB(packetID) if ans.isValidAnswer(STATUS_SUCCESS): queryResponse = SMB2QueryInfo_Response(ans['Data']) return queryResponse['Buffer'] def setInfo(self, treeId, fileId, inputBlob = '', infoType = SMB2_0_INFO_FILE, fileInfoClass = SMB2_FILE_STANDARD_INFO, additionalInformation = 0 ): if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if (fileId in self._Session['OpenTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) packet = self.SMB_PACKET() packet['Command'] = SMB2_SET_INFO packet['TreeID'] = treeId setInfo = SMB2SetInfo() |
︙ | ︙ | |||
1381 1382 1383 1384 1385 1386 1387 | nextOffset = 1 while nextOffset != 0: fileInfo = smb.SMBFindFileFullDirectoryInfo(smb.SMB.FLAGS2_UNICODE) fileInfo.fromString(res) files.append(smb.SharedFile(fileInfo['CreationTime'],fileInfo['LastAccessTime'],fileInfo['LastChangeTime'],fileInfo['EndOfFile'],fileInfo['AllocationSize'],fileInfo['ExtFileAttributes'],fileInfo['FileName'].decode('utf-16le'), fileInfo['FileName'].decode('utf-16le'))) nextOffset = fileInfo['NextEntryOffset'] res = res[nextOffset:] | | | 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 | nextOffset = 1 while nextOffset != 0: fileInfo = smb.SMBFindFileFullDirectoryInfo(smb.SMB.FLAGS2_UNICODE) fileInfo.fromString(res) files.append(smb.SharedFile(fileInfo['CreationTime'],fileInfo['LastAccessTime'],fileInfo['LastChangeTime'],fileInfo['EndOfFile'],fileInfo['AllocationSize'],fileInfo['ExtFileAttributes'],fileInfo['FileName'].decode('utf-16le'), fileInfo['FileName'].decode('utf-16le'))) nextOffset = fileInfo['NextEntryOffset'] res = res[nextOffset:] except SessionError as e: if (e.get_error_code()) != STATUS_NO_MORE_FILES: raise break finally: if fileId is not None: self.close(treeId, fileId) self.disconnectTree(treeId) |
︙ | ︙ | |||
1508 1509 1510 1511 1512 1513 1514 | finally: if fileId is not None: self.close(treeId, fileId) self.disconnectTree(treeId) def waitNamedPipe(self, treeId, pipename, timeout = 5): pipename = ntpath.basename(pipename) | | | 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 | finally: if fileId is not None: self.close(treeId, fileId) self.disconnectTree(treeId) def waitNamedPipe(self, treeId, pipename, timeout = 5): pipename = ntpath.basename(pipename) if (treeId in self._Session['TreeConnectTable']) is False: raise SessionError(STATUS_INVALID_PARAMETER) if len(pipename) > 0xffff: raise SessionError(STATUS_INVALID_PARAMETER) pipeWait = FSCTL_PIPE_WAIT_STRUCTURE() pipeWait['Timeout'] = timeout*100000 pipeWait['NameLength'] = len(pipename)*2 |
︙ | ︙ |
Changes to jni/curl/tests/python_dependencies/impacket/smbserver.py.
︙ | ︙ | |||
49 50 51 52 53 54 55 56 57 58 59 60 61 62 | STATUS_FILE_IS_A_DIRECTORY, STATUS_NOT_IMPLEMENTED, STATUS_INVALID_HANDLE, STATUS_OBJECT_NAME_COLLISION, \ STATUS_NO_SUCH_FILE, STATUS_CANCELLED, STATUS_OBJECT_NAME_NOT_FOUND, STATUS_SUCCESS, STATUS_ACCESS_DENIED, \ STATUS_NOT_SUPPORTED, STATUS_INVALID_DEVICE_REQUEST, STATUS_FS_DRIVER_REQUIRED, STATUS_INVALID_INFO_CLASS # These ones not defined in nt_errors STATUS_SMB_BAD_UID = 0x005B0002 STATUS_SMB_BAD_TID = 0x00050002 # Utility functions # and general functions. # There are some common functions that can be accessed from more than one SMB # command (or either TRANSACTION). That's why I'm putting them here # TODO: Return NT ERROR Codes | > > > > > > | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | STATUS_FILE_IS_A_DIRECTORY, STATUS_NOT_IMPLEMENTED, STATUS_INVALID_HANDLE, STATUS_OBJECT_NAME_COLLISION, \ STATUS_NO_SUCH_FILE, STATUS_CANCELLED, STATUS_OBJECT_NAME_NOT_FOUND, STATUS_SUCCESS, STATUS_ACCESS_DENIED, \ STATUS_NOT_SUPPORTED, STATUS_INVALID_DEVICE_REQUEST, STATUS_FS_DRIVER_REQUIRED, STATUS_INVALID_INFO_CLASS # These ones not defined in nt_errors STATUS_SMB_BAD_UID = 0x005B0002 STATUS_SMB_BAD_TID = 0x00050002 try: unicode # Python 2 except NameError: unicode = str # Python 3 # Utility functions # and general functions. # There are some common functions that can be accessed from more than one SMB # command (or either TRANSACTION). That's why I'm putting them here # TODO: Return NT ERROR Codes |
︙ | ︙ | |||
76 77 78 79 80 81 82 | try: if len(ntresponse) > 24: # Extended Security - NTLMv2 ret_value = {'hash_string':'%s::%s:%s:%s:%s' % (username, domain, hexlify(challenge), hexlify(ntresponse)[:32], hexlify(ntresponse)[32:]), 'hash_version':'ntlmv2'} else: # NTLMv1 ret_value = {'hash_string':'%s::%s:%s:%s:%s' % (username, domain, hexlify(lmresponse), hexlify(ntresponse), hexlify(challenge)), 'hash_version':'ntlm'} | | | 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | try: if len(ntresponse) > 24: # Extended Security - NTLMv2 ret_value = {'hash_string':'%s::%s:%s:%s:%s' % (username, domain, hexlify(challenge), hexlify(ntresponse)[:32], hexlify(ntresponse)[32:]), 'hash_version':'ntlmv2'} else: # NTLMv1 ret_value = {'hash_string':'%s::%s:%s:%s:%s' % (username, domain, hexlify(lmresponse), hexlify(ntresponse), hexlify(challenge)), 'hash_version':'ntlm'} except Exception as e: LOG.error("outputToJohnFormat: %s" % e) pass return ret_value def writeJohnOutputToFile(hash_string, hash_version, file_name): fn_data = os.path.splitext(file_name) |
︙ | ︙ | |||
179 180 181 182 183 184 185 | else: mode = os.O_RDONLY try: if sys.platform == 'win32': mode |= os.O_BINARY fid = os.open(pathName, mode) | | | 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | else: mode = os.O_RDONLY try: if sys.platform == 'win32': mode |= os.O_BINARY fid = os.open(pathName, mode) except Exception as e: LOG.error("openFile: %s,%s" % (pathName, mode) ,e) fid = 0 errorCode = STATUS_ACCESS_DENIED return fid, mode, pathName, errorCode def queryFsInformation(path, filename, level=0): |
︙ | ︙ | |||
438 439 440 441 442 443 444 | # UNSUPPORTED return None, STATUS_NOT_SUPPORTED return infoRecord, errorCode else: # NOT FOUND return None, STATUS_OBJECT_NAME_NOT_FOUND | | | 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 | # UNSUPPORTED return None, STATUS_NOT_SUPPORTED return infoRecord, errorCode else: # NOT FOUND return None, STATUS_OBJECT_NAME_NOT_FOUND except Exception as e: LOG.error('queryPathInfo: %s' % e) raise def queryDiskInformation(path): # TODO: Do something useful here :) # For now we just return fake values totalUnits = 65535 |
︙ | ︙ | |||
482 483 484 485 486 487 488 | # NetShareInfo1 len == 20 entry = smb.NetShareInfo1() entry['NetworkName'] = i + '\x00'*(13-len(i)) entry['Type'] = int(shares[i]['share type']) # (beto) If offset == 0 it crashes explorer.exe on windows 7 entry['RemarkOffsetLow'] = 20 * len(shares) + len(tailData) respData += entry.getData() | | | 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 | # NetShareInfo1 len == 20 entry = smb.NetShareInfo1() entry['NetworkName'] = i + '\x00'*(13-len(i)) entry['Type'] = int(shares[i]['share type']) # (beto) If offset == 0 it crashes explorer.exe on windows 7 entry['RemarkOffsetLow'] = 20 * len(shares) + len(tailData) respData += entry.getData() if 'comment' in shares[i]: tailData += shares[i]['comment'] + '\x00' else: tailData += '\x00' respData += tailData else: # We don't support other info levels errorCode = STATUS_NOT_SUPPORTED |
︙ | ︙ | |||
507 508 509 510 511 512 513 | respParameters = smb.SMBNetShareGetInfoResponse() shares = getShares(connId, smbServer) share = shares[request['ShareName'].upper()] shareInfo = smb.NetShareInfo1() shareInfo['NetworkName'] = request['ShareName'].upper() + '\x00' shareInfo['Type'] = int(share['share type']) respData = shareInfo.getData() | | | 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 | respParameters = smb.SMBNetShareGetInfoResponse() shares = getShares(connId, smbServer) share = shares[request['ShareName'].upper()] shareInfo = smb.NetShareInfo1() shareInfo['NetworkName'] = request['ShareName'].upper() + '\x00' shareInfo['Type'] = int(share['share type']) respData = shareInfo.getData() if 'comment' in share: shareInfo['RemarkOffsetLow'] = len(respData) respData += share['comment'] + '\x00' respParameters['TotalBytesAvailable'] = len(respData) else: # We don't know how to handle anything else errorCode = STATUS_NOT_SUPPORTED |
︙ | ︙ | |||
534 535 536 537 538 539 540 | errorCode = STATUS_SUCCESS SMBCommand = smb.SMBCommand(recvPacket['Data'][0]) transParameters= smb.SMBTransaction_Parameters(SMBCommand['Parameters']) # Extract the FID fid = struct.unpack('<H', transParameters['Setup'][2:])[0] | | | 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 | errorCode = STATUS_SUCCESS SMBCommand = smb.SMBCommand(recvPacket['Data'][0]) transParameters= smb.SMBTransaction_Parameters(SMBCommand['Parameters']) # Extract the FID fid = struct.unpack('<H', transParameters['Setup'][2:])[0] if fid in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][fid]['FileHandle'] if fileHandle != PIPE_FILE_DESCRIPTOR: os.write(fileHandle,data) respData = os.read(fileHandle,data) else: sock = connData['OpenedFiles'][fid]['Socket'] sock.send(data) |
︙ | ︙ | |||
562 563 564 565 566 567 568 | connData = smbServer.getConnectionData(connId) respSetup = '' respParameters = '' respData = '' errorCode = STATUS_SUCCESS setPathInfoParameters = smb.SMBSetPathInformation_Parameters(flags = recvPacket['Flags2'], data = parameters) | | | 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 | connData = smbServer.getConnectionData(connId) respSetup = '' respParameters = '' respData = '' errorCode = STATUS_SUCCESS setPathInfoParameters = smb.SMBSetPathInformation_Parameters(flags = recvPacket['Flags2'], data = parameters) if recvPacket['Tid'] in connData['ConnectedShares']: path = connData['ConnectedShares'][recvPacket['Tid']]['path'] fileName = decodeSMBString(recvPacket['Flags2'], setPathInfoParameters['FileName']) fileName = os.path.normpath(fileName.replace('\\','/')) if len(fileName) > 0 and (fileName[0] == '/' or fileName[0] == '\\') and path != '': # strip leading '/' fileName = fileName[1:] pathName = os.path.join(path,fileName) |
︙ | ︙ | |||
615 616 617 618 619 620 621 | respSetup = '' respParameters = '' respData = '' errorCode = STATUS_SUCCESS setFileInfoParameters = smb.SMBSetFileInformation_Parameters(parameters) | | | | 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 | respSetup = '' respParameters = '' respData = '' errorCode = STATUS_SUCCESS setFileInfoParameters = smb.SMBSetFileInformation_Parameters(parameters) if recvPacket['Tid'] in connData['ConnectedShares']: if setFileInfoParameters['FID'] in connData['OpenedFiles']: fileName = connData['OpenedFiles'][setFileInfoParameters['FID']]['FileName'] informationLevel = setFileInfoParameters['InformationLevel'] if informationLevel == smb.SMB_SET_FILE_DISPOSITION_INFO: infoRecord = smb.SMBSetFileDispositionInfo(parameters) if infoRecord['DeletePending'] > 0: # Mark this file for removal after closed connData['OpenedFiles'][setFileInfoParameters['FID']]['DeleteOnClose'] = True |
︙ | ︙ | |||
671 672 673 674 675 676 677 | respSetup = '' respParameters = '' respData = '' queryFileInfoParameters = smb.SMBQueryFileInformation_Parameters(parameters) | | | | 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 | respSetup = '' respParameters = '' respData = '' queryFileInfoParameters = smb.SMBQueryFileInformation_Parameters(parameters) if recvPacket['Tid'] in connData['ConnectedShares']: if queryFileInfoParameters['FID'] in connData['OpenedFiles']: fileName = connData['OpenedFiles'][queryFileInfoParameters['FID']]['FileName'] infoRecord, errorCode = queryFileInformation('', fileName, queryFileInfoParameters['InformationLevel']) if infoRecord is not None: respParameters = smb.SMBQueryFileInformationResponse_Parameters() respData = infoRecord |
︙ | ︙ | |||
700 701 702 703 704 705 706 | respSetup = '' respParameters = '' respData = '' errorCode = 0 queryPathInfoParameters = smb.SMBQueryPathInformation_Parameters(flags = recvPacket['Flags2'], data = parameters) | | | | | | | 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 | respSetup = '' respParameters = '' respData = '' errorCode = 0 queryPathInfoParameters = smb.SMBQueryPathInformation_Parameters(flags = recvPacket['Flags2'], data = parameters) if recvPacket['Tid'] in connData['ConnectedShares']: path = connData['ConnectedShares'][recvPacket['Tid']]['path'] try: infoRecord, errorCode = queryPathInformation(path, decodeSMBString(recvPacket['Flags2'], queryPathInfoParameters['FileName']), queryPathInfoParameters['InformationLevel']) except Exception as e: smbServer.log("queryPathInformation: %s" % e,logging.ERROR) if infoRecord is not None: respParameters = smb.SMBQueryPathInformationResponse_Parameters() respData = infoRecord else: errorCode = STATUS_SMB_BAD_TID smbServer.setConnectionData(connId, connData) return respSetup, respParameters, respData, errorCode @staticmethod def queryFsInformation(connId, smbServer, recvPacket, parameters, data, maxDataCount = 0): connData = smbServer.getConnectionData(connId) errorCode = 0 # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: data = queryFsInformation(connData['ConnectedShares'][recvPacket['Tid']]['path'], '', struct.unpack('<H',parameters)[0]) smbServer.setConnectionData(connId, connData) return '','', data, errorCode @staticmethod def findNext2(connId, smbServer, recvPacket, parameters, data, maxDataCount): connData = smbServer.getConnectionData(connId) respSetup = '' respParameters = '' respData = '' errorCode = STATUS_SUCCESS findNext2Parameters = smb.SMBFindNext2_Parameters(flags = recvPacket['Flags2'], data = parameters) sid = findNext2Parameters['SID'] if recvPacket['Tid'] in connData['ConnectedShares']: if sid in connData['SIDs']: searchResult = connData['SIDs'][sid] respParameters = smb.SMBFindNext2Response_Parameters() endOfSearch = 1 searchCount = 1 totalData = 0 for i in enumerate(searchResult): data = i[1].getData() |
︙ | ︙ | |||
786 787 788 789 790 791 792 | connData = smbServer.getConnectionData(connId) respSetup = '' respParameters = '' respData = '' findFirst2Parameters = smb.SMBFindFirst2_Parameters( recvPacket['Flags2'], data = parameters) | | | 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 | connData = smbServer.getConnectionData(connId) respSetup = '' respParameters = '' respData = '' findFirst2Parameters = smb.SMBFindFirst2_Parameters( recvPacket['Flags2'], data = parameters) if recvPacket['Tid'] in connData['ConnectedShares']: path = connData['ConnectedShares'][recvPacket['Tid']]['path'] searchResult, searchCount, errorCode = findFirst2(path, decodeSMBString( recvPacket['Flags2'], findFirst2Parameters['FileName'] ), findFirst2Parameters['InformationLevel'], findFirst2Parameters['SearchAttributes'] ) |
︙ | ︙ | |||
877 878 879 880 881 882 883 | # Call the handler for this TRANSACTION if transParameters['SetupCount'] == 0: # No subcommand, let's play with the Name command = decodeSMBString(recvPacket['Flags2'],transData['Name']) else: command = struct.unpack('<H', transParameters['Setup'][:2])[0] | | | | 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 | # Call the handler for this TRANSACTION if transParameters['SetupCount'] == 0: # No subcommand, let's play with the Name command = decodeSMBString(recvPacket['Flags2'],transData['Name']) else: command = struct.unpack('<H', transParameters['Setup'][:2])[0] if command in transCommands: # Call the TRANS subcommand setup = '' parameters = '' data = '' try: setup, parameters, data, errorCode = transCommands[command](connId, smbServer, recvPacket, transData['Trans_Parameters'], transData['Trans_Data'], transParameters['MaxDataCount']) except Exception as e: #print 'Transaction: %s' % e,e smbServer.log('Transaction: (%r,%s)' % (command, e), logging.ERROR) errorCode = STATUS_ACCESS_DENIED #raise if setup == '' and parameters == '' and data == '': # Something wen't wrong |
︙ | ︙ | |||
1014 1015 1016 1017 1018 1019 1020 | dataOffset = NTTransParameters['DataOffset'] - 73 - NTTransParameters['SetupLength'] NTTransData['NT_Trans_Data'] = SMBCommand['Data'][dataOffset:dataOffset + dataCount] else: NTTransData['NT_Trans_Data'] = '' # Call the handler for this TRANSACTION command = NTTransParameters['Function'] | | | | 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 | dataOffset = NTTransParameters['DataOffset'] - 73 - NTTransParameters['SetupLength'] NTTransData['NT_Trans_Data'] = SMBCommand['Data'][dataOffset:dataOffset + dataCount] else: NTTransData['NT_Trans_Data'] = '' # Call the handler for this TRANSACTION command = NTTransParameters['Function'] if command in transCommands: # Call the NT TRANS subcommand setup = '' parameters = '' data = '' try: setup, parameters, data, errorCode = transCommands[command](connId, smbServer, recvPacket, NTTransData['NT_Trans_Parameters'], NTTransData['NT_Trans_Data'], NTTransParameters['MaxDataCount']) except Exception as e: smbServer.log('NTTransaction: (0x%x,%s)' % (command, e), logging.ERROR) errorCode = STATUS_ACCESS_DENIED #raise if setup == '' and parameters == '' and data == '': # Something wen't wrong respParameters = '' |
︙ | ︙ | |||
1153 1154 1155 1156 1157 1158 1159 | dataOffset = trans2Parameters['DataOffset'] - 63 - trans2Parameters['SetupLength'] trans2Data['Trans_Data'] = SMBCommand['Data'][dataOffset:dataOffset + dataCount] else: trans2Data['Trans_Data'] = '' # Call the handler for this TRANSACTION command = struct.unpack('<H', trans2Parameters['Setup'])[0] | | | | 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 | dataOffset = trans2Parameters['DataOffset'] - 63 - trans2Parameters['SetupLength'] trans2Data['Trans_Data'] = SMBCommand['Data'][dataOffset:dataOffset + dataCount] else: trans2Data['Trans_Data'] = '' # Call the handler for this TRANSACTION command = struct.unpack('<H', trans2Parameters['Setup'])[0] if command in transCommands: # Call the TRANS2 subcommand try: setup, parameters, data, errorCode = transCommands[command](connId, smbServer, recvPacket, trans2Data['Trans_Parameters'], trans2Data['Trans_Data'], trans2Parameters['MaxDataCount']) except Exception as e: smbServer.log('Transaction2: (0x%x,%s)' % (command, e), logging.ERROR) #import traceback #traceback.print_exc() raise if setup == '' and parameters == '' and data == '': # Something wen't wrong |
︙ | ︙ | |||
1278 1279 1280 1281 1282 1283 1284 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_CLOSE) respParameters = '' respData = '' comClose = smb.SMBClose_Parameters(SMBCommand['Parameters']) | | | | | 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 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_CLOSE) respParameters = '' respData = '' comClose = smb.SMBClose_Parameters(SMBCommand['Parameters']) if comClose['FID'] in connData['OpenedFiles']: errorCode = STATUS_SUCCESS fileHandle = connData['OpenedFiles'][comClose['FID']]['FileHandle'] try: if fileHandle == PIPE_FILE_DESCRIPTOR: connData['OpenedFiles'][comClose['FID']]['Socket'].close() elif fileHandle != VOID_FILE_DESCRIPTOR: os.close(fileHandle) except Exception as e: smbServer.log("comClose %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: # Check if the file was marked for removal if connData['OpenedFiles'][comClose['FID']]['DeleteOnClose'] is True: try: os.remove(connData['OpenedFiles'][comClose['FID']]['FileName']) except Exception as e: smbServer.log("comClose %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED del(connData['OpenedFiles'][comClose['FID']]) else: errorCode = STATUS_INVALID_HANDLE if errorCode > 0: |
︙ | ︙ | |||
1322 1323 1324 1325 1326 1327 1328 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_WRITE) respParameters = smb.SMBWriteResponse_Parameters() respData = '' comWriteParameters = smb.SMBWrite_Parameters(SMBCommand['Parameters']) comWriteData = smb.SMBWrite_Data(SMBCommand['Data']) | | | | 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 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_WRITE) respParameters = smb.SMBWriteResponse_Parameters() respData = '' comWriteParameters = smb.SMBWrite_Parameters(SMBCommand['Parameters']) comWriteData = smb.SMBWrite_Data(SMBCommand['Data']) if comWriteParameters['Fid'] in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][comWriteParameters['Fid']]['FileHandle'] errorCode = STATUS_SUCCESS try: if fileHandle != PIPE_FILE_DESCRIPTOR: # TODO: Handle big size files # If we're trying to write past the file end we just skip the write call (Vista does this) if os.lseek(fileHandle, 0, 2) >= comWriteParameters['Offset']: os.lseek(fileHandle,comWriteParameters['Offset'],0) os.write(fileHandle,comWriteData['Data']) else: sock = connData['OpenedFiles'][comWriteParameters['Fid']]['Socket'] sock.send(comWriteData['Data']) respParameters['Count'] = comWriteParameters['Count'] except Exception as e: smbServer.log('smbComWrite: %s' % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE if errorCode > 0: |
︙ | ︙ | |||
1363 1364 1365 1366 1367 1368 1369 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_FLUSH) respParameters = '' respData = '' comFlush = smb.SMBFlush_Parameters(SMBCommand['Parameters']) | | | | 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_FLUSH) respParameters = '' respData = '' comFlush = smb.SMBFlush_Parameters(SMBCommand['Parameters']) if comFlush['FID'] in connData['OpenedFiles']: errorCode = STATUS_SUCCESS fileHandle = connData['OpenedFiles'][comFlush['FID']]['FileHandle'] try: os.fsync(fileHandle) except Exception as e: smbServer.log("comFlush %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE if errorCode > 0: respParameters = '' |
︙ | ︙ | |||
1396 1397 1398 1399 1400 1401 1402 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_CREATE_DIRECTORY) respParameters = '' respData = '' comCreateDirectoryData= smb.SMBCreateDirectory_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated | | | | 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 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_CREATE_DIRECTORY) respParameters = '' respData = '' comCreateDirectoryData= smb.SMBCreateDirectory_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: errorCode = STATUS_SUCCESS path = connData['ConnectedShares'][recvPacket['Tid']]['path'] fileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comCreateDirectoryData['DirectoryName']).replace('\\','/')) if len(fileName) > 0: if fileName[0] == '/' or fileName[0] == '\\': # strip leading '/' fileName = fileName[1:] pathName = os.path.join(path,fileName) if os.path.exists(pathName): errorCode = STATUS_OBJECT_NAME_COLLISION # TODO: More checks here in the future.. Specially when we support # user access else: try: os.mkdir(pathName) except Exception as e: smbServer.log("smbComCreateDirectory: %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_SMB_BAD_TID if errorCode > 0: |
︙ | ︙ | |||
1440 1441 1442 1443 1444 1445 1446 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_RENAME) respParameters = '' respData = '' comRenameData = smb.SMBRename_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated | | | 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_RENAME) respParameters = '' respData = '' comRenameData = smb.SMBRename_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: errorCode = STATUS_SUCCESS path = connData['ConnectedShares'][recvPacket['Tid']]['path'] oldFileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comRenameData['OldFileName']).replace('\\','/')) newFileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comRenameData['NewFileName']).replace('\\','/')) if len(oldFileName) > 0 and (oldFileName[0] == '/' or oldFileName[0] == '\\'): # strip leading '/' oldFileName = oldFileName[1:] |
︙ | ︙ | |||
1462 1463 1464 1465 1466 1467 1468 | errorCode = STATUS_NO_SUCH_FILE # TODO: More checks here in the future.. Specially when we support # user access else: try: os.rename(oldPathName,newPathName) | | | 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 | errorCode = STATUS_NO_SUCH_FILE # TODO: More checks here in the future.. Specially when we support # user access else: try: os.rename(oldPathName,newPathName) except OSError as e: smbServer.log("smbComRename: %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_SMB_BAD_TID if errorCode > 0: |
︙ | ︙ | |||
1490 1491 1492 1493 1494 1495 1496 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_DELETE) respParameters = '' respData = '' comDeleteData = smb.SMBDelete_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated | | | | 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 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_DELETE) respParameters = '' respData = '' comDeleteData = smb.SMBDelete_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: errorCode = STATUS_SUCCESS path = connData['ConnectedShares'][recvPacket['Tid']]['path'] fileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comDeleteData['FileName']).replace('\\','/')) if len(fileName) > 0 and (fileName[0] == '/' or fileName[0] == '\\'): # strip leading '/' fileName = fileName[1:] pathName = os.path.join(path,fileName) if os.path.exists(pathName) is not True: errorCode = STATUS_NO_SUCH_FILE # TODO: More checks here in the future.. Specially when we support # user access else: try: os.remove(pathName) except OSError as e: smbServer.log("smbComDelete: %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_SMB_BAD_TID if errorCode > 0: respParameters = '' |
︙ | ︙ | |||
1534 1535 1536 1537 1538 1539 1540 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_DELETE_DIRECTORY) respParameters = '' respData = '' comDeleteDirectoryData= smb.SMBDeleteDirectory_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated | | | | 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 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_DELETE_DIRECTORY) respParameters = '' respData = '' comDeleteDirectoryData= smb.SMBDeleteDirectory_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: errorCode = STATUS_SUCCESS path = connData['ConnectedShares'][recvPacket['Tid']]['path'] fileName = os.path.normpath(decodeSMBString(recvPacket['Flags2'],comDeleteDirectoryData['DirectoryName']).replace('\\','/')) if len(fileName) > 0 and (fileName[0] == '/' or fileName[0] == '\\'): # strip leading '/' fileName = fileName[1:] pathName = os.path.join(path,fileName) if os.path.exists(pathName) is not True: errorCode = STATUS_NO_SUCH_FILE # TODO: More checks here in the future.. Specially when we support # user access else: try: os.rmdir(pathName) except OSError as e: smbServer.log("smbComDeleteDirectory: %s" % e,logging.ERROR) if e.errno == errno.ENOTEMPTY: errorCode = STATUS_DIRECTORY_NOT_EMPTY else: errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_SMB_BAD_TID |
︙ | ︙ | |||
1589 1590 1591 1592 1593 1594 1595 | writeAndX = smb.SMBWriteAndX_Parameters(SMBCommand['Parameters']) writeAndXData = smb.SMBWriteAndX_Data() writeAndXData['DataLength'] = writeAndX['DataLength'] writeAndXData['DataOffset'] = writeAndX['DataOffset'] writeAndXData.fromString(SMBCommand['Data']) | | | | | 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 | writeAndX = smb.SMBWriteAndX_Parameters(SMBCommand['Parameters']) writeAndXData = smb.SMBWriteAndX_Data() writeAndXData['DataLength'] = writeAndX['DataLength'] writeAndXData['DataOffset'] = writeAndX['DataOffset'] writeAndXData.fromString(SMBCommand['Data']) if writeAndX['Fid'] in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][writeAndX['Fid']]['FileHandle'] errorCode = STATUS_SUCCESS try: if fileHandle != PIPE_FILE_DESCRIPTOR: offset = writeAndX['Offset'] if 'HighOffset' in writeAndX.fields: offset += (writeAndX['HighOffset'] << 32) # If we're trying to write past the file end we just skip the write call (Vista does this) if os.lseek(fileHandle, 0, 2) >= offset: os.lseek(fileHandle,offset,0) os.write(fileHandle,writeAndXData['Data']) else: sock = connData['OpenedFiles'][writeAndX['Fid']]['Socket'] sock.send(writeAndXData['Data']) respParameters['Count'] = writeAndX['DataLength'] respParameters['Available']= 0xff except Exception as e: smbServer.log('smbComWriteAndx: %s' % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE if errorCode > 0: respParameters = '' |
︙ | ︙ | |||
1633 1634 1635 1636 1637 1638 1639 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_READ) respParameters = smb.SMBReadResponse_Parameters() respData = smb.SMBReadResponse_Data() comReadParameters = smb.SMBRead_Parameters(SMBCommand['Parameters']) | | | | 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 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_READ) respParameters = smb.SMBReadResponse_Parameters() respData = smb.SMBReadResponse_Data() comReadParameters = smb.SMBRead_Parameters(SMBCommand['Parameters']) if comReadParameters['Fid'] in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][comReadParameters['Fid']]['FileHandle'] errorCode = STATUS_SUCCESS try: if fileHandle != PIPE_FILE_DESCRIPTOR: # TODO: Handle big size files os.lseek(fileHandle,comReadParameters['Offset'],0) content = os.read(fileHandle,comReadParameters['Count']) else: sock = connData['OpenedFiles'][comReadParameters['Fid']]['Socket'] content = sock.recv(comReadParameters['Count']) respParameters['Count'] = len(content) respData['DataLength'] = len(content) respData['Data'] = content except Exception as e: smbServer.log('smbComRead: %s ' % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE if errorCode > 0: respParameters = '' |
︙ | ︙ | |||
1676 1677 1678 1679 1680 1681 1682 | respData = '' if SMBCommand['WordCount'] == 0x0A: readAndX = smb.SMBReadAndX_Parameters2(SMBCommand['Parameters']) else: readAndX = smb.SMBReadAndX_Parameters(SMBCommand['Parameters']) | | | | | 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 | respData = '' if SMBCommand['WordCount'] == 0x0A: readAndX = smb.SMBReadAndX_Parameters2(SMBCommand['Parameters']) else: readAndX = smb.SMBReadAndX_Parameters(SMBCommand['Parameters']) if readAndX['Fid'] in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][readAndX['Fid']]['FileHandle'] errorCode = 0 try: if fileHandle != PIPE_FILE_DESCRIPTOR: offset = readAndX['Offset'] if 'HighOffset' in readAndX.fields: offset += (readAndX['HighOffset'] << 32) os.lseek(fileHandle,offset,0) content = os.read(fileHandle,readAndX['MaxCount']) else: sock = connData['OpenedFiles'][readAndX['Fid']]['Socket'] content = sock.recv(readAndX['MaxCount']) respParameters['Remaining'] = 0xffff respParameters['DataCount'] = len(content) respParameters['DataOffset'] = 59 respParameters['DataCount_Hi'] = 0 respData = content except Exception as e: smbServer.log('smbComReadAndX: %s ' % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE if errorCode > 0: respParameters = '' |
︙ | ︙ | |||
1721 1722 1723 1724 1725 1726 1727 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_QUERY_INFORMATION) respParameters = smb.SMBQueryInformationResponse_Parameters() respData = '' queryInformation= smb.SMBQueryInformation_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated | | | 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_QUERY_INFORMATION) respParameters = smb.SMBQueryInformationResponse_Parameters() respData = '' queryInformation= smb.SMBQueryInformation_Data(flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: fileSize, lastWriteTime, fileAttributes = queryFsInformation( connData['ConnectedShares'][recvPacket['Tid']]['path'], decodeSMBString(recvPacket['Flags2'],queryInformation['FileName'])) respParameters['FileSize'] = fileSize respParameters['LastWriteTime'] = lastWriteTime respParameters['FileAttributes'] = fileAttributes |
︙ | ︙ | |||
1751 1752 1753 1754 1755 1756 1757 | connData = smbServer.getConnectionData(connId) respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_QUERY_INFORMATION_DISK) respParameters = smb.SMBQueryInformationDiskResponse_Parameters() respData = '' # Get the Tid associated | | | 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 | connData = smbServer.getConnectionData(connId) respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_QUERY_INFORMATION_DISK) respParameters = smb.SMBQueryInformationDiskResponse_Parameters() respData = '' # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: totalUnits, freeUnits = queryDiskInformation( connData['ConnectedShares'][recvPacket['Tid']]['path']) respParameters['TotalUnits'] = totalUnits respParameters['BlocksPerUnit'] = 1 respParameters['BlockSize'] = 1 respParameters['FreeUnits'] = freeUnits |
︙ | ︙ | |||
1803 1804 1805 1806 1807 1808 1809 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_TREE_DISCONNECT) # Check if the Tid matches the Tid trying to disconnect respParameters = '' respData = '' | | | 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_TREE_DISCONNECT) # Check if the Tid matches the Tid trying to disconnect respParameters = '' respData = '' if recvPacket['Tid'] in connData['ConnectedShares']: smbServer.log("Disconnecting Share(%d:%s)" % (recvPacket['Tid'],connData['ConnectedShares'][recvPacket['Tid']]['shareName'])) del(connData['ConnectedShares'][recvPacket['Tid']]) errorCode = STATUS_SUCCESS else: # STATUS_SMB_BAD_TID errorCode = STATUS_SMB_BAD_TID |
︙ | ︙ | |||
1850 1851 1852 1853 1854 1855 1856 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_QUERY_INFORMATION2) respParameters = smb.SMBQueryInformation2Response_Parameters() respData = '' queryInformation2 = smb.SMBQueryInformation2_Parameters(SMBCommand['Parameters']) errorCode = 0xFF | | | | 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 | respSMBCommand = smb.SMBCommand(smb.SMB.SMB_COM_QUERY_INFORMATION2) respParameters = smb.SMBQueryInformation2Response_Parameters() respData = '' queryInformation2 = smb.SMBQueryInformation2_Parameters(SMBCommand['Parameters']) errorCode = 0xFF if queryInformation2['Fid'] in connData['OpenedFiles']: errorCode = STATUS_SUCCESS pathName = connData['OpenedFiles'][queryInformation2['Fid']]['FileName'] try: (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(pathName) respParameters['CreateDate'] = getSMBDate(ctime) respParameters['CreationTime'] = getSMBTime(ctime) respParameters['LastAccessDate'] = getSMBDate(atime) respParameters['LastAccessTime'] = getSMBTime(atime) respParameters['LastWriteDate'] = getSMBDate(mtime) respParameters['LastWriteTime'] = getSMBTime(mtime) respParameters['FileDataSize'] = size respParameters['FileAllocationSize'] = size attribs = 0 if os.path.isdir(pathName): attribs = smb.SMB_FILE_ATTRIBUTE_DIRECTORY if os.path.isfile(pathName): attribs = smb.SMB_FILE_ATTRIBUTE_NORMAL respParameters['FileAttributes'] = attribs except Exception as e: smbServer.log('smbComQueryInformation2 %s' % e,logging.ERROR) errorCode = STATUS_ACCESS_DENIED if errorCode > 0: respParameters = '' respData = '' |
︙ | ︙ | |||
1900 1901 1902 1903 1904 1905 1906 | ntCreateAndXData = smb.SMBNtCreateAndX_Data( flags = recvPacket['Flags2'], data = SMBCommand['Data']) #if ntCreateAndXParameters['CreateFlags'] & 0x10: # NT_CREATE_REQUEST_EXTENDED_RESPONSE # respParameters = smb.SMBNtCreateAndXExtendedResponse_Parameters() # respParameters['VolumeGUID'] = '\x00' # Get the Tid associated | | | | 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 | ntCreateAndXData = smb.SMBNtCreateAndX_Data( flags = recvPacket['Flags2'], data = SMBCommand['Data']) #if ntCreateAndXParameters['CreateFlags'] & 0x10: # NT_CREATE_REQUEST_EXTENDED_RESPONSE # respParameters = smb.SMBNtCreateAndXExtendedResponse_Parameters() # respParameters['VolumeGUID'] = '\x00' # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: # If we have a rootFid, the path is relative to that fid errorCode = STATUS_SUCCESS if ntCreateAndXParameters['RootFid'] > 0: path = connData['OpenedFiles'][ntCreateAndXParameters['RootFid']]['FileName'] LOG.debug("RootFid present %s!" % path) else: if 'path' in connData['ConnectedShares'][recvPacket['Tid']]: path = connData['ConnectedShares'][recvPacket['Tid']]['path'] else: path = 'NONE' errorCode = STATUS_ACCESS_DENIED deleteOnClose = False |
︙ | ︙ | |||
1943 1944 1945 1946 1947 1948 1949 | mode |= os.O_TRUNC | os.O_CREAT elif createDisposition & smb.FILE_CREATE == smb.FILE_CREATE: if os.path.exists(pathName) is True: errorCode = STATUS_OBJECT_NAME_COLLISION else: mode |= os.O_CREAT elif createDisposition & smb.FILE_OPEN == smb.FILE_OPEN: | | | 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 | mode |= os.O_TRUNC | os.O_CREAT elif createDisposition & smb.FILE_CREATE == smb.FILE_CREATE: if os.path.exists(pathName) is True: errorCode = STATUS_OBJECT_NAME_COLLISION else: mode |= os.O_CREAT elif createDisposition & smb.FILE_OPEN == smb.FILE_OPEN: if os.path.exists(pathName) is not True and (unicode(pathName) in smbServer.getRegisteredNamedPipes()) is not True: errorCode = STATUS_NO_SUCH_FILE if errorCode == STATUS_SUCCESS: desiredAccess = ntCreateAndXParameters['AccessMask'] if (desiredAccess & smb.FILE_READ_DATA) or (desiredAccess & smb.GENERIC_READ): mode |= os.O_RDONLY if (desiredAccess & smb.FILE_WRITE_DATA) or (desiredAccess & smb.GENERIC_WRITE): |
︙ | ︙ | |||
1965 1966 1967 1968 1969 1970 1971 | createOptions = ntCreateAndXParameters['CreateOptions'] if mode & os.O_CREAT == os.O_CREAT: if createOptions & smb.FILE_DIRECTORY_FILE == smb.FILE_DIRECTORY_FILE: try: # Let's create the directory os.mkdir(pathName) mode = os.O_RDONLY | | | | | 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 | createOptions = ntCreateAndXParameters['CreateOptions'] if mode & os.O_CREAT == os.O_CREAT: if createOptions & smb.FILE_DIRECTORY_FILE == smb.FILE_DIRECTORY_FILE: try: # Let's create the directory os.mkdir(pathName) mode = os.O_RDONLY except Exception as e: smbServer.log("NTCreateAndX: %s,%s,%s" % (pathName,mode,e),logging.ERROR) errorCode = STATUS_ACCESS_DENIED if createOptions & smb.FILE_NON_DIRECTORY_FILE == smb.FILE_NON_DIRECTORY_FILE: # If the file being opened is a directory, the server MUST fail the request with # STATUS_FILE_IS_A_DIRECTORY in the Status field of the SMB Header in the server # response. if os.path.isdir(pathName) is True: errorCode = STATUS_FILE_IS_A_DIRECTORY if createOptions & smb.FILE_DELETE_ON_CLOSE == smb.FILE_DELETE_ON_CLOSE: deleteOnClose = True if errorCode == STATUS_SUCCESS: try: if os.path.isdir(pathName) and sys.platform == 'win32': fid = VOID_FILE_DESCRIPTOR else: if sys.platform == 'win32': mode |= os.O_BINARY if unicode(pathName) in smbServer.getRegisteredNamedPipes(): fid = PIPE_FILE_DESCRIPTOR sock = socket.socket() sock.connect(smbServer.getRegisteredNamedPipes()[unicode(pathName)]) else: fid = os.open(pathName, mode) except Exception as e: smbServer.log("NTCreateAndX: %s,%s,%s" % (pathName,mode,e),logging.ERROR) #print e fid = 0 errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_SMB_BAD_TID |
︙ | ︙ | |||
2070 2071 2072 2073 2074 2075 2076 | respParameters = smb.SMBOpenAndXResponse_Parameters() respData = '' openAndXParameters = smb.SMBOpenAndX_Parameters(SMBCommand['Parameters']) openAndXData = smb.SMBOpenAndX_Data( flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated | | | 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 | respParameters = smb.SMBOpenAndXResponse_Parameters() respData = '' openAndXParameters = smb.SMBOpenAndX_Parameters(SMBCommand['Parameters']) openAndXData = smb.SMBOpenAndX_Data( flags = recvPacket['Flags2'], data = SMBCommand['Data']) # Get the Tid associated if recvPacket['Tid'] in connData['ConnectedShares']: path = connData['ConnectedShares'][recvPacket['Tid']]['path'] openedFile, mode, pathName, errorCode = openFile(path, decodeSMBString(recvPacket['Flags2'],openAndXData['FileName']), openAndXParameters['DesiredAccess'], openAndXParameters['FileAttributes'], openAndXParameters['OpenMode']) else: |
︙ | ︙ | |||
2219 2220 2221 2222 2223 2224 2225 | blob = SPNEGO_NegTokenInit(sessionSetupData['SecurityBlob']) token = blob['MechToken'] if len(blob['MechTypes'][0]) > 0: # Is this GSSAPI NTLM or something else we don't support? mechType = blob['MechTypes'][0] if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider']: # Nope, do we know it? | | | 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 | blob = SPNEGO_NegTokenInit(sessionSetupData['SecurityBlob']) token = blob['MechToken'] if len(blob['MechTypes'][0]) > 0: # Is this GSSAPI NTLM or something else we don't support? mechType = blob['MechTypes'][0] if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider']: # Nope, do we know it? if mechType in MechTypes: mechStr = MechTypes[mechType] else: mechStr = hexlify(mechType) smbServer.log("Unsupported MechType '%s'" % mechStr, logging.CRITICAL) # We don't know the token, we answer back again saying # we just support NTLM. # ToDo: Build this into a SPNEGO_NegTokenResp() |
︙ | ︙ | |||
2427 2428 2429 2430 2431 2432 2433 | _dialects_parameters['ChallengeLength'] = 0 else: resp['Flags2'] = smb.SMB.FLAGS2_NT_STATUS | smb.SMB.FLAGS2_UNICODE _dialects_parameters = smb.SMBNTLMDialect_Parameters() _dialects_data= smb.SMBNTLMDialect_Data() _dialects_data['Payload'] = '' | | | 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 | _dialects_parameters['ChallengeLength'] = 0 else: resp['Flags2'] = smb.SMB.FLAGS2_NT_STATUS | smb.SMB.FLAGS2_UNICODE _dialects_parameters = smb.SMBNTLMDialect_Parameters() _dialects_data= smb.SMBNTLMDialect_Data() _dialects_data['Payload'] = '' if 'EncryptionKey' in connData: _dialects_data['Challenge'] = connData['EncryptionKey'] _dialects_parameters['ChallengeLength'] = len(str(_dialects_data)) else: # TODO: Handle random challenges, now one that can be used with rainbow tables _dialects_data['Challenge'] = '\x11\x22\x33\x44\x55\x66\x77\x88' _dialects_parameters['ChallengeLength'] = 8 _dialects_parameters['Capabilities'] = smb.SMB.CAP_USE_NT_ERRORS | smb.SMB.CAP_NT_SMBS |
︙ | ︙ | |||
2459 2460 2461 2462 2463 2464 2465 | respSMBCommand['Data'] = _dialects_data respSMBCommand['Parameters'] = _dialects_parameters connData['_dialects_data'] = _dialects_data connData['_dialects_parameters'] = _dialects_parameters | | | 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 | respSMBCommand['Data'] = _dialects_data respSMBCommand['Parameters'] = _dialects_parameters connData['_dialects_data'] = _dialects_data connData['_dialects_parameters'] = _dialects_parameters except Exception as e: # No NTLM throw an error smbServer.log('smbComNegotiate: %s' % e, logging.ERROR) respSMBCommand['Data'] = struct.pack('<H',0xffff) smbServer.setConnectionData(connId, connData) |
︙ | ︙ | |||
2566 2567 2568 2569 2570 2571 2572 | blob = SPNEGO_NegTokenInit(securityBlob) token = blob['MechToken'] if len(blob['MechTypes'][0]) > 0: # Is this GSSAPI NTLM or something else we don't support? mechType = blob['MechTypes'][0] if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider']: # Nope, do we know it? | | | 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 | blob = SPNEGO_NegTokenInit(securityBlob) token = blob['MechToken'] if len(blob['MechTypes'][0]) > 0: # Is this GSSAPI NTLM or something else we don't support? mechType = blob['MechTypes'][0] if mechType != TypesMech['NTLMSSP - Microsoft NTLM Security Support Provider']: # Nope, do we know it? if mechType in MechTypes: mechStr = MechTypes[mechType] else: mechStr = hexlify(mechType) smbServer.log("Unsupported MechType '%s'" % mechStr, logging.CRITICAL) # We don't know the token, we answer back again saying # we just support NTLM. # ToDo: Build this into a SPNEGO_NegTokenResp() |
︙ | ︙ | |||
2777 2778 2779 2780 2781 2782 2783 | respSMBCommand = smb2.SMB2Create_Response() ntCreateRequest = smb2.SMB2Create(recvPacket['Data']) respSMBCommand['Buffer'] = '\x00' # Get the Tid associated | | | | 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 | respSMBCommand = smb2.SMB2Create_Response() ntCreateRequest = smb2.SMB2Create(recvPacket['Data']) respSMBCommand['Buffer'] = '\x00' # Get the Tid associated if recvPacket['TreeID'] in connData['ConnectedShares']: # If we have a rootFid, the path is relative to that fid errorCode = STATUS_SUCCESS if 'path' in connData['ConnectedShares'][recvPacket['TreeID']]: path = connData['ConnectedShares'][recvPacket['TreeID']]['path'] else: path = 'NONE' errorCode = STATUS_ACCESS_DENIED deleteOnClose = False |
︙ | ︙ | |||
2816 2817 2818 2819 2820 2821 2822 | mode |= os.O_TRUNC | os.O_CREAT elif createDisposition & smb2.FILE_CREATE == smb2.FILE_CREATE: if os.path.exists(pathName) is True: errorCode = STATUS_OBJECT_NAME_COLLISION else: mode |= os.O_CREAT elif createDisposition & smb2.FILE_OPEN == smb2.FILE_OPEN: | | | 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 | mode |= os.O_TRUNC | os.O_CREAT elif createDisposition & smb2.FILE_CREATE == smb2.FILE_CREATE: if os.path.exists(pathName) is True: errorCode = STATUS_OBJECT_NAME_COLLISION else: mode |= os.O_CREAT elif createDisposition & smb2.FILE_OPEN == smb2.FILE_OPEN: if os.path.exists(pathName) is not True and (unicode(pathName) in smbServer.getRegisteredNamedPipes()) is not True: errorCode = STATUS_NO_SUCH_FILE if errorCode == STATUS_SUCCESS: desiredAccess = ntCreateRequest['DesiredAccess'] if (desiredAccess & smb2.FILE_READ_DATA) or (desiredAccess & smb2.GENERIC_READ): mode |= os.O_RDONLY if (desiredAccess & smb2.FILE_WRITE_DATA) or (desiredAccess & smb2.GENERIC_WRITE): |
︙ | ︙ | |||
2838 2839 2840 2841 2842 2843 2844 | createOptions = ntCreateRequest['CreateOptions'] if mode & os.O_CREAT == os.O_CREAT: if createOptions & smb2.FILE_DIRECTORY_FILE == smb2.FILE_DIRECTORY_FILE: try: # Let's create the directory os.mkdir(pathName) mode = os.O_RDONLY | | | | | 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 | createOptions = ntCreateRequest['CreateOptions'] if mode & os.O_CREAT == os.O_CREAT: if createOptions & smb2.FILE_DIRECTORY_FILE == smb2.FILE_DIRECTORY_FILE: try: # Let's create the directory os.mkdir(pathName) mode = os.O_RDONLY except Exception as e: smbServer.log("SMB2_CREATE: %s,%s,%s" % (pathName,mode,e),logging.ERROR) errorCode = STATUS_ACCESS_DENIED if createOptions & smb2.FILE_NON_DIRECTORY_FILE == smb2.FILE_NON_DIRECTORY_FILE: # If the file being opened is a directory, the server MUST fail the request with # STATUS_FILE_IS_A_DIRECTORY in the Status field of the SMB Header in the server # response. if os.path.isdir(pathName) is True: errorCode = STATUS_FILE_IS_A_DIRECTORY if createOptions & smb2.FILE_DELETE_ON_CLOSE == smb2.FILE_DELETE_ON_CLOSE: deleteOnClose = True if errorCode == STATUS_SUCCESS: try: if os.path.isdir(pathName) and sys.platform == 'win32': fid = VOID_FILE_DESCRIPTOR else: if sys.platform == 'win32': mode |= os.O_BINARY if unicode(pathName) in smbServer.getRegisteredNamedPipes(): fid = PIPE_FILE_DESCRIPTOR sock = socket.socket() sock.connect(smbServer.getRegisteredNamedPipes()[unicode(pathName)]) else: fid = os.open(pathName, mode) except Exception as e: smbServer.log("SMB2_CREATE: %s,%s,%s" % (pathName,mode,e),logging.ERROR) #print e fid = 0 errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_SMB_BAD_TID |
︙ | ︙ | |||
2935 2936 2937 2938 2939 2940 2941 | respSMBCommand = smb2.SMB2Close_Response() closeRequest = smb2.SMB2Close(recvPacket['Data']) if str(closeRequest['FileID']) == '\xff'*16: # Let's take the data from the lastRequest | | | | | | 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 | respSMBCommand = smb2.SMB2Close_Response() closeRequest = smb2.SMB2Close(recvPacket['Data']) if str(closeRequest['FileID']) == '\xff'*16: # Let's take the data from the lastRequest if 'SMB2_CREATE' in connData['LastRequest']: fileID = connData['LastRequest']['SMB2_CREATE']['FileID'] else: fileID = str(closeRequest['FileID']) else: fileID = str(closeRequest['FileID']) if fileID in connData['OpenedFiles']: errorCode = STATUS_SUCCESS fileHandle = connData['OpenedFiles'][fileID]['FileHandle'] pathName = connData['OpenedFiles'][fileID]['FileName'] infoRecord = None try: if fileHandle == PIPE_FILE_DESCRIPTOR: connData['OpenedFiles'][fileID]['Socket'].close() elif fileHandle != VOID_FILE_DESCRIPTOR: os.close(fileHandle) infoRecord, errorCode = queryFileInformation(os.path.dirname(pathName), os.path.basename(pathName), smb2.SMB2_FILE_NETWORK_OPEN_INFO) except Exception as e: smbServer.log("SMB2_CLOSE %s" % e, logging.ERROR) errorCode = STATUS_INVALID_HANDLE else: # Check if the file was marked for removal if connData['OpenedFiles'][fileID]['DeleteOnClose'] is True: try: if os.path.isdir(pathName): shutil.rmtree(connData['OpenedFiles'][fileID]['FileName']) else: os.remove(connData['OpenedFiles'][fileID]['FileName']) except Exception as e: smbServer.log("SMB2_CLOSE %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED # Now fill out the response if infoRecord is not None: respSMBCommand['CreationTime'] = infoRecord['CreationTime'] respSMBCommand['LastAccessTime'] = infoRecord['LastAccessTime'] |
︙ | ︙ | |||
3000 3001 3002 3003 3004 3005 3006 | errorCode = STATUS_SUCCESS respSMBCommand['OutputBufferOffset'] = 0x48 respSMBCommand['Buffer'] = '\x00' if str(queryInfo['FileID']) == '\xff'*16: # Let's take the data from the lastRequest | | | | | 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 | errorCode = STATUS_SUCCESS respSMBCommand['OutputBufferOffset'] = 0x48 respSMBCommand['Buffer'] = '\x00' if str(queryInfo['FileID']) == '\xff'*16: # Let's take the data from the lastRequest if 'SMB2_CREATE' in connData['LastRequest']: fileID = connData['LastRequest']['SMB2_CREATE']['FileID'] else: fileID = str(queryInfo['FileID']) else: fileID = str(queryInfo['FileID']) if recvPacket['TreeID'] in connData['ConnectedShares']: if fileID in connData['OpenedFiles']: fileName = connData['OpenedFiles'][fileID]['FileName'] if queryInfo['InfoType'] == smb2.SMB2_0_INFO_FILE: if queryInfo['FileInfoClass'] == smb2.SMB2_FILE_INTERNAL_INFO: # No need to call queryFileInformation, we have the data here infoRecord = smb2.FileInternalInformation() infoRecord['IndexNumber'] = fileID |
︙ | ︙ | |||
3051 3052 3053 3054 3055 3056 3057 | setInfo = smb2.SMB2SetInfo(recvPacket['Data']) errorCode = STATUS_SUCCESS if str(setInfo['FileID']) == '\xff'*16: # Let's take the data from the lastRequest | | | | | 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 | setInfo = smb2.SMB2SetInfo(recvPacket['Data']) errorCode = STATUS_SUCCESS if str(setInfo['FileID']) == '\xff'*16: # Let's take the data from the lastRequest if 'SMB2_CREATE' in connData['LastRequest']: fileID = connData['LastRequest']['SMB2_CREATE']['FileID'] else: fileID = str(setInfo['FileID']) else: fileID = str(setInfo['FileID']) if recvPacket['TreeID'] in connData['ConnectedShares']: path = connData['ConnectedShares'][recvPacket['TreeID']]['path'] if fileID in connData['OpenedFiles']: pathName = connData['OpenedFiles'][fileID]['FileName'] if setInfo['InfoType'] == smb2.SMB2_0_INFO_FILE: # The file information is being set informationLevel = setInfo['FileInfoClass'] if informationLevel == smb2.SMB2_FILE_DISPOSITION_INFO: infoRecord = smb.SMBSetFileDispositionInfo(setInfo['Buffer']) |
︙ | ︙ | |||
3100 3101 3102 3103 3104 3105 3106 | renameInfo = smb2.FILE_RENAME_INFORMATION_TYPE_2(setInfo['Buffer']) newPathName = os.path.join(path,renameInfo['FileName'].decode('utf-16le').replace('\\', '/')) if renameInfo['ReplaceIfExists'] == 0 and os.path.exists(newPathName): return [smb2.SMB2Error()], None, STATUS_OBJECT_NAME_COLLISION try: os.rename(pathName,newPathName) connData['OpenedFiles'][fileID]['FileName'] = newPathName | | | 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 | renameInfo = smb2.FILE_RENAME_INFORMATION_TYPE_2(setInfo['Buffer']) newPathName = os.path.join(path,renameInfo['FileName'].decode('utf-16le').replace('\\', '/')) if renameInfo['ReplaceIfExists'] == 0 and os.path.exists(newPathName): return [smb2.SMB2Error()], None, STATUS_OBJECT_NAME_COLLISION try: os.rename(pathName,newPathName) connData['OpenedFiles'][fileID]['FileName'] = newPathName except Exception as e: smbServer.log("smb2SetInfo: %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: smbServer.log('Unknown level for set file info! 0x%x' % informationLevel, logging.ERROR) # UNSUPPORTED errorCode = STATUS_NOT_SUPPORTED #elif setInfo['InfoType'] == smb2.SMB2_0_INFO_FILESYSTEM: |
︙ | ︙ | |||
3141 3142 3143 3144 3145 3146 3147 | respSMBCommand = smb2.SMB2Write_Response() writeRequest = smb2.SMB2Write(recvPacket['Data']) respSMBCommand['Buffer'] = '\x00' if str(writeRequest['FileID']) == '\xff'*16: # Let's take the data from the lastRequest | | | | | | | | | | | | | 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 | respSMBCommand = smb2.SMB2Write_Response() writeRequest = smb2.SMB2Write(recvPacket['Data']) respSMBCommand['Buffer'] = '\x00' if str(writeRequest['FileID']) == '\xff'*16: # Let's take the data from the lastRequest if 'SMB2_CREATE' in connData['LastRequest']: fileID = connData['LastRequest']['SMB2_CREATE']['FileID'] else: fileID = str(writeRequest['FileID']) else: fileID = str(writeRequest['FileID']) if fileID in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][fileID]['FileHandle'] errorCode = STATUS_SUCCESS try: if fileHandle != PIPE_FILE_DESCRIPTOR: offset = writeRequest['Offset'] # If we're trying to write past the file end we just skip the write call (Vista does this) if os.lseek(fileHandle, 0, 2) >= offset: os.lseek(fileHandle,offset,0) os.write(fileHandle,writeRequest['Buffer']) else: sock = connData['OpenedFiles'][fileID]['Socket'] sock.send(writeRequest['Buffer']) respSMBCommand['Count'] = writeRequest['Length'] respSMBCommand['Remaining']= 0xff except Exception as e: smbServer.log('SMB2_WRITE: %s' % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE smbServer.setConnectionData(connId, connData) return [respSMBCommand], None, errorCode @staticmethod def smb2Read(connId, smbServer, recvPacket): connData = smbServer.getConnectionData(connId) respSMBCommand = smb2.SMB2Read_Response() readRequest = smb2.SMB2Read(recvPacket['Data']) respSMBCommand['Buffer'] = '\x00' if str(readRequest['FileID']) == '\xff'*16: # Let's take the data from the lastRequest if 'SMB2_CREATE' in connData['LastRequest']: fileID = connData['LastRequest']['SMB2_CREATE']['FileID'] else: fileID = str(readRequest['FileID']) else: fileID = str(readRequest['FileID']) if fileID in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][fileID]['FileHandle'] errorCode = 0 try: if fileHandle != PIPE_FILE_DESCRIPTOR: offset = readRequest['Offset'] os.lseek(fileHandle,offset,0) content = os.read(fileHandle,readRequest['Length']) else: sock = connData['OpenedFiles'][fileID]['Socket'] content = sock.recv(readRequest['Length']) respSMBCommand['DataOffset'] = 0x50 respSMBCommand['DataLength'] = len(content) respSMBCommand['DataRemaining']= 0 respSMBCommand['Buffer'] = content except Exception as e: smbServer.log('SMB2_READ: %s ' % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE smbServer.setConnectionData(connId, connData) return [respSMBCommand], None, errorCode @staticmethod def smb2Flush(connId, smbServer, recvPacket): connData = smbServer.getConnectionData(connId) respSMBCommand = smb2.SMB2Flush_Response() flushRequest = smb2.SMB2Flush(recvPacket['Data']) if str(flushRequest['FileID']) in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][str(flushRequest['FileID'])]['FileHandle'] errorCode = STATUS_SUCCESS try: os.fsync(fileHandle) except Exception as e: smbServer.log("SMB2_FLUSH %s" % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_HANDLE smbServer.setConnectionData(connId, connData) return [respSMBCommand], None, errorCode @staticmethod def smb2QueryDirectory(connId, smbServer, recvPacket): connData = smbServer.getConnectionData(connId) respSMBCommand = smb2.SMB2QueryDirectory_Response() queryDirectoryRequest = smb2.SMB2QueryDirectory(recvPacket['Data']) respSMBCommand['Buffer'] = '\x00' # The server MUST locate the tree connection, as specified in section 3.3.5.2.11. if (recvPacket['TreeID'] in connData['ConnectedShares']) is False: return [smb2.SMB2Error()], None, STATUS_NETWORK_NAME_DELETED # Next, the server MUST locate the open for the directory to be queried # If no open is found, the server MUST fail the request with STATUS_FILE_CLOSED if str(queryDirectoryRequest['FileID']) == '\xff'*16: # Let's take the data from the lastRequest if 'SMB2_CREATE' in connData['LastRequest']: fileID = connData['LastRequest']['SMB2_CREATE']['FileID'] else: fileID = str(queryDirectoryRequest['FileID']) else: fileID = str(queryDirectoryRequest['FileID']) if (fileID in connData['OpenedFiles']) is False: return [smb2.SMB2Error()], None, STATUS_FILE_CLOSED # If the open is not an open to a directory, the request MUST be failed # with STATUS_INVALID_PARAMETER. if os.path.isdir(connData['OpenedFiles'][fileID]['FileName']) is False: return [smb2.SMB2Error()], None, STATUS_INVALID_PARAMETER |
︙ | ︙ | |||
3379 3380 3381 3382 3383 3384 3385 | @staticmethod def smb2TreeDisconnect(connId, smbServer, recvPacket): connData = smbServer.getConnectionData(connId) respSMBCommand = smb2.SMB2TreeDisconnect_Response() | | | 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 | @staticmethod def smb2TreeDisconnect(connId, smbServer, recvPacket): connData = smbServer.getConnectionData(connId) respSMBCommand = smb2.SMB2TreeDisconnect_Response() if recvPacket['TreeID'] in connData['ConnectedShares']: smbServer.log("Disconnecting Share(%d:%s)" % (recvPacket['TreeID'],connData['ConnectedShares'][recvPacket['TreeID']]['shareName'])) del(connData['ConnectedShares'][recvPacket['TreeID']]) errorCode = STATUS_SUCCESS else: # STATUS_SMB_BAD_TID errorCode = STATUS_SMB_BAD_TID |
︙ | ︙ | |||
3416 3417 3418 3419 3420 3421 3422 | def smb2Ioctl(connId, smbServer, recvPacket): connData = smbServer.getConnectionData(connId) respSMBCommand = smb2.SMB2Ioctl_Response() ioctlRequest = smb2.SMB2Ioctl(recvPacket['Data']) ioctls = smbServer.getIoctls() | | | 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 | def smb2Ioctl(connId, smbServer, recvPacket): connData = smbServer.getConnectionData(connId) respSMBCommand = smb2.SMB2Ioctl_Response() ioctlRequest = smb2.SMB2Ioctl(recvPacket['Data']) ioctls = smbServer.getIoctls() if ioctlRequest['CtlCode'] in ioctls: outputData, errorCode = ioctls[ioctlRequest['CtlCode']](connId, smbServer, ioctlRequest) if errorCode == STATUS_SUCCESS: respSMBCommand['CtlCode'] = ioctlRequest['CtlCode'] respSMBCommand['FileID'] = ioctlRequest['FileID'] respSMBCommand['InputOffset'] = 0 respSMBCommand['InputCount'] = 0 respSMBCommand['OutputOffset'] = 0x70 |
︙ | ︙ | |||
3471 3472 3473 3474 3475 3476 3477 | @staticmethod def fsctlPipeTransceive(connId, smbServer, ioctlRequest): connData = smbServer.getConnectionData(connId) ioctlResponse = '' | | | | 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 | @staticmethod def fsctlPipeTransceive(connId, smbServer, ioctlRequest): connData = smbServer.getConnectionData(connId) ioctlResponse = '' if str(ioctlRequest['FileID']) in connData['OpenedFiles']: fileHandle = connData['OpenedFiles'][str(ioctlRequest['FileID'])]['FileHandle'] errorCode = STATUS_SUCCESS try: if fileHandle != PIPE_FILE_DESCRIPTOR: errorCode = STATUS_INVALID_DEVICE_REQUEST else: sock = connData['OpenedFiles'][str(ioctlRequest['FileID'])]['Socket'] sock.sendall(ioctlRequest['Buffer']) ioctlResponse = sock.recv(ioctlRequest['MaxOutputResponse']) except Exception as e: smbServer.log('fsctlPipeTransceive: %s ' % e, logging.ERROR) errorCode = STATUS_ACCESS_DENIED else: errorCode = STATUS_INVALID_DEVICE_REQUEST smbServer.setConnectionData(connId, connData) return ioctlResponse, errorCode |
︙ | ︙ | |||
3547 3548 3549 3550 3551 3552 3553 | self.__request.send(r.rawData()) else: resp = self.__SMB.processRequest(self.__connId, p.get_trailer()) # Send all the packets recevied. Except for big transactions this should be # a single packet for i in resp: session.send_packet(str(i)) | | | 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 | self.__request.send(r.rawData()) else: resp = self.__SMB.processRequest(self.__connId, p.get_trailer()) # Send all the packets recevied. Except for big transactions this should be # a single packet for i in resp: session.send_packet(str(i)) except Exception as e: self.__SMB.log("Handle: %s" % e) #import traceback #traceback.print_exc() break def finish(self): # Thread/process is dying, we should tell the main SMB thread to remove all this thread data |
︙ | ︙ | |||
3730 3731 3732 3733 3734 3735 3736 | self.__activeConnections[connId] = data #print "setConnectionData" #print self.__activeConnections def getConnectionData(self, connId, checkStatus = True): conn = self.__activeConnections[connId] if checkStatus is True: | | | | | 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 | self.__activeConnections[connId] = data #print "setConnectionData" #print self.__activeConnections def getConnectionData(self, connId, checkStatus = True): conn = self.__activeConnections[connId] if checkStatus is True: if ('Authenticated' in conn) is not True: # Can't keep going further raise Exception("User not Authenticated!") return conn def getRegisteredNamedPipes(self): return self.__registeredNamedPipes def registerNamedPipe(self, pipeName, address): self.__registeredNamedPipes[unicode(pipeName)] = address return True def unregisterNamedPipe(self, pipeName): if pipeName in self.__registeredNamedPipes: del(self.__registeredNamedPipes[unicode(pipeName)]) return True return False def unregisterTransaction(self, transCommand): if transCommand in self.__smbTransCommands: del(self.__smbTransCommands[transCommand]) def hookTransaction(self, transCommand, callback): # If you call this function, callback will replace # the current Transaction sub command. # (don't get confused with the Transaction smbCommand) # If the transaction sub command doesn't not exist, it is added |
︙ | ︙ | |||
3784 3785 3786 3787 3788 3789 3790 | # WHERE: # # respSetup: the setup response of the transaction # respParameters: the parameters response of the transaction # respData: the data reponse of the transaction # errorCode: the NT error code | | | | | | | | 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 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 | # WHERE: # # respSetup: the setup response of the transaction # respParameters: the parameters response of the transaction # respData: the data reponse of the transaction # errorCode: the NT error code if transCommand in self.__smbTransCommands: originalCommand = self.__smbTransCommands[transCommand] else: originalCommand = None self.__smbTransCommands[transCommand] = callback return originalCommand def unregisterTransaction2(self, transCommand): if transCommand in self.__smbTrans2Commands: del(self.__smbTrans2Commands[transCommand]) def hookTransaction2(self, transCommand, callback): # Here we should add to __smbTrans2Commands # Same description as Transaction if transCommand in self.__smbTrans2Commands: originalCommand = self.__smbTrans2Commands[transCommand] else: originalCommand = None self.__smbTrans2Commands[transCommand] = callback return originalCommand def unregisterNTTransaction(self, transCommand): if transCommand in self.__smbNTTransCommands: del(self.__smbNTTransCommands[transCommand]) def hookNTTransaction(self, transCommand, callback): # Here we should add to __smbNTTransCommands # Same description as Transaction if transCommand in self.__smbNTTransCommands: originalCommand = self.__smbNTTransCommands[transCommand] else: originalCommand = None self.__smbNTTransCommands[transCommand] = callback return originalCommand def unregisterSmbCommand(self, smbCommand): if smbCommand in self.__smbCommands: del(self.__smbCommands[smbCommand]) def hookSmbCommand(self, smbCommand, callback): # Here we should add to self.__smbCommands # If you call this function, callback will replace # the current smbCommand. # If smbCommand doesn't not exist, it is added |
︙ | ︙ | |||
3862 3863 3864 3865 3866 3867 3868 | # callback(connId, smbServer, SMBCommand, recvPacket, transCommands) # # WHERE: # # transCommands: a list of transaction subcommands already registered # | | | | | 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 | # callback(connId, smbServer, SMBCommand, recvPacket, transCommands) # # WHERE: # # transCommands: a list of transaction subcommands already registered # if smbCommand in self.__smbCommands: originalCommand = self.__smbCommands[smbCommand] else: originalCommand = None self.__smbCommands[smbCommand] = callback return originalCommand def unregisterSmb2Command(self, smb2Command): if smb2Command in self.__smb2Commands: del(self.__smb2Commands[smb2Command]) def hookSmb2Command(self, smb2Command, callback): if smb2Command in self.__smb2Commands: originalCommand = self.__smb2Commands[smb2Command] else: originalCommand = None self.__smb2Commands[smb2Command] = callback return originalCommand |
︙ | ︙ | |||
3965 3966 3967 3968 3969 3970 3971 | respCommands, respPackets, errorCode = self.__smbCommands[packet['Command']]( connId, self, SMBCommand, packet, self.__smbTransCommands) else: | | | | 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 | respCommands, respPackets, errorCode = self.__smbCommands[packet['Command']]( connId, self, SMBCommand, packet, self.__smbTransCommands) else: if packet['Command'] in self.__smbCommands: if self.__SMB2Support is True: if packet['Command'] == smb.SMB.SMB_COM_NEGOTIATE: try: respCommands, respPackets, errorCode = self.__smb2Commands[smb2.SMB2_NEGOTIATE](connId, self, packet, True) isSMB2 = True except Exception as e: self.log('SMB2_NEGOTIATE: %s' % e, logging.ERROR) # If something went wrong, let's fallback to SMB1 respCommands, respPackets, errorCode = self.__smbCommands[packet['Command']]( connId, self, SMBCommand, packet) |
︙ | ︙ | |||
4002 4003 4004 4005 4006 4007 4008 | compoundedPacketsResponse.append((respCommands, respPackets, errorCode)) compoundedPackets.append(packet) else: done = False while not done: | | | | 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 | compoundedPacketsResponse.append((respCommands, respPackets, errorCode)) compoundedPackets.append(packet) else: done = False while not done: if packet['Command'] in self.__smb2Commands: if self.__SMB2Support is True: respCommands, respPackets, errorCode = self.__smb2Commands[packet['Command']]( connId, self, packet) else: respCommands, respPackets, errorCode = self.__smb2Commands[255](connId, self, packet) else: respCommands, respPackets, errorCode = self.__smb2Commands[255](connId, self, packet) # Let's store the result for this compounded packet compoundedPacketsResponse.append((respCommands, respPackets, errorCode)) compoundedPackets.append(packet) if packet['NextCommand'] != 0: data = data[packet['NextCommand']:] packet = smb2.SMB2Packet(data = data) else: done = True except Exception as e: #import traceback #traceback.print_exc() # Something wen't wrong, defaulting to Bad user ID self.log('processRequest (0x%x,%s)' % (packet['Command'],e), logging.ERROR) raise # We prepare the response packet to commands don't need to bother about that. |
︙ | ︙ |
Changes to jni/curl/tests/python_dependencies/impacket/spnego.py.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # # Author: Alberto Solino (beto@coresecurity.com) # # Description: # SPNEGO functions used by SMB, SMB2/3 and DCERPC # from struct import pack, unpack, calcsize ############### GSS Stuff ################ | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 | from __future__ import print_function # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # # Author: Alberto Solino (beto@coresecurity.com) # # Description: # SPNEGO functions used by SMB, SMB2/3 and DCERPC # from struct import pack, unpack, calcsize ############### GSS Stuff ################ GSS_API_SPNEGO_UUID = '\x2b\x06\x01\x05\x05\x02' ASN1_SEQUENCE = 0x30 ASN1_AID = 0x60 ASN1_OID = 0x06 ASN1_OCTET_STRING = 0x04 ASN1_MECH_TYPE = 0xa0 ASN1_MECH_TOKEN = 0xa2 ASN1_SUPPORTED_MECH = 0xa1 ASN1_RESPONSE_TOKEN = 0xa2 ASN1_ENUMERATED = 0x0a MechTypes = { '+\x06\x01\x04\x01\x827\x02\x02\x1e': 'SNMPv2-SMI::enterprises.311.2.2.30', '+\x06\x01\x04\x01\x827\x02\x02\n': 'NTLMSSP - Microsoft NTLM Security Support Provider', '*\x86H\x82\xf7\x12\x01\x02\x02': 'MS KRB5 - Microsoft Kerberos 5', '*\x86H\x86\xf7\x12\x01\x02\x02': 'KRB5 - Kerberos 5', '*\x86H\x86\xf7\x12\x01\x02\x02\x03': 'KRB5 - Kerberos 5 - User to User' } TypesMech = dict((v,k) for k, v in MechTypes.iteritems()) def asn1encode(data = ''): #res = asn1.SEQUENCE(str).encode() #import binascii #print '\nalex asn1encode str: %s\n' % binascii.hexlify(str) if 0 <= len(data) <= 0x7F: res = pack('B', len(data)) + data elif 0x80 <= len(data) <= 0xFF: res = pack('BB', 0x81, len(data)) + data elif 0x100 <= len(data) <= 0xFFFF: res = pack('!BH', 0x82, len(data)) + data elif 0x10000 <= len(data) <= 0xffffff: res = pack('!BBH', 0x83, len(data) >> 16, len(data) & 0xFFFF) + data elif 0x1000000 <= len(data) <= 0xffffffff: res = pack('!BL', 0x84, len(data)) + data else: raise Exception('Error in asn1encode') return str(res) def asn1decode(data = ''): len1 = unpack('B', data[:1])[0] data = data[1:] if len1 == 0x81: pad = calcsize('B') len2 = unpack('B',data[:pad])[0] data = data[pad:] ans = data[:len2] elif len1 == 0x82: pad = calcsize('H') len2 = unpack('!H', data[:pad])[0] data = data[pad:] ans = data[:len2] elif len1 == 0x83: pad = calcsize('B') + calcsize('!H') len2, len3 = unpack('!BH', data[:pad]) data = data[pad:] ans = data[:len2 << 16 + len3] elif len1 == 0x84: pad = calcsize('!L') len2 = unpack('!L', data[:pad])[0] data = data[pad:] ans = data[:len2] # 1 byte length, string <= 0x7F else: pad = 0 ans = data[:len1] return ans, len(ans)+pad+1 class GSSAPI: # Generic GSSAPI Header Format def __init__(self, data = None): self.fields = {} self['UUID'] = GSS_API_SPNEGO_UUID if data: self.fromString(data) pass def __setitem__(self,key,value): self.fields[key] = value def __getitem__(self, key): return self.fields[key] |
︙ | ︙ | |||
111 112 113 114 115 116 117 | # GSSAPI OID # UUID data (BER Encoded) # Payload next_byte = unpack('B',data[:1])[0] if next_byte != ASN1_AID: raise Exception('Unknown AID=%x' % next_byte) data = data[1:] | | | | | | | | 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 | # GSSAPI OID # UUID data (BER Encoded) # Payload next_byte = unpack('B',data[:1])[0] if next_byte != ASN1_AID: raise Exception('Unknown AID=%x' % next_byte) data = data[1:] decode_data, total_bytes = asn1decode(data) # Now we should have a OID tag next_byte = unpack('B',decode_data[:1])[0] if next_byte != ASN1_OID: raise Exception('OID tag not found %x' % next_byte) decode_data = decode_data[1:] # Now the OID contents, should be SPNEGO UUID uuid, total_bytes = asn1decode(decode_data) self['OID'] = uuid # the rest should be the data self['Payload'] = decode_data[total_bytes:] #pass def dump(self): for i in self.fields.keys(): print("%s: {%r}" % (i,self[i])) def getData(self): ans = pack('B',ASN1_AID) ans += asn1encode( pack('B',ASN1_OID) + asn1encode(self['UUID']) + self['Payload'] ) return ans class SPNEGO_NegTokenResp: # http://tools.ietf.org/html/rfc4178#page-9 # NegTokenResp ::= SEQUENCE { |
︙ | ︙ | |||
159 160 161 162 163 164 165 | # This structure is not prepended by a GSS generic header! SPNEGO_NEG_TOKEN_RESP = 0xa1 SPNEGO_NEG_TOKEN_TARG = 0xa0 def __init__(self, data = None): self.fields = {} if data: | | | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | # This structure is not prepended by a GSS generic header! SPNEGO_NEG_TOKEN_RESP = 0xa1 SPNEGO_NEG_TOKEN_TARG = 0xa0 def __init__(self, data = None): self.fields = {} if data: self.fromString(data) pass def __setitem__(self,key,value): self.fields[key] = value def __getitem__(self, key): return self.fields[key] |
︙ | ︙ | |||
194 195 196 197 198 199 200 | decode_data = decode_data[1:] decode_data, total_bytes = asn1decode(decode_data) next_byte = unpack('B',decode_data[:1])[0] if next_byte != ASN1_MECH_TYPE: # MechType not found, could be an AUTH answer if next_byte != ASN1_RESPONSE_TOKEN: | | | 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | decode_data = decode_data[1:] decode_data, total_bytes = asn1decode(decode_data) next_byte = unpack('B',decode_data[:1])[0] if next_byte != ASN1_MECH_TYPE: # MechType not found, could be an AUTH answer if next_byte != ASN1_RESPONSE_TOKEN: raise Exception('MechType/ResponseToken tag not found %x' % next_byte) else: decode_data2 = decode_data[1:] decode_data2, total_bytes = asn1decode(decode_data2) next_byte = unpack('B', decode_data2[:1])[0] if next_byte != ASN1_ENUMERATED: raise Exception('Enumerated tag not found %x' % next_byte) item, total_bytes2 = asn1decode(decode_data) |
︙ | ︙ | |||
241 242 243 244 245 246 247 | raise Exception('Octet string token tag not found %x' % next_byte) decode_data = decode_data[1:] decode_data, total_bytes = asn1decode(decode_data) self['ResponseToken'] = decode_data def dump(self): for i in self.fields.keys(): | | | | | | | | | | | | | | | | | | | | | | 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 | raise Exception('Octet string token tag not found %x' % next_byte) decode_data = decode_data[1:] decode_data, total_bytes = asn1decode(decode_data) self['ResponseToken'] = decode_data def dump(self): for i in self.fields.keys(): print("%s: {%r}" % (i,self[i])) def getData(self): ans = pack('B',SPNEGO_NegTokenResp.SPNEGO_NEG_TOKEN_RESP) if 'NegResult' in self.fields and 'SupportedMech' in self.fields: # Server resp ans += asn1encode( pack('B', ASN1_SEQUENCE) + asn1encode( pack('B',SPNEGO_NegTokenResp.SPNEGO_NEG_TOKEN_TARG) + asn1encode( pack('B',ASN1_ENUMERATED) + asn1encode( self['NegResult'] )) + pack('B',ASN1_SUPPORTED_MECH) + asn1encode( pack('B',ASN1_OID) + asn1encode(self['SupportedMech'])) + pack('B',ASN1_RESPONSE_TOKEN ) + asn1encode( pack('B', ASN1_OCTET_STRING) + asn1encode(self['ResponseToken'])))) elif 'NegResult' in self.fields: # Server resp ans += asn1encode( pack('B', ASN1_SEQUENCE) + asn1encode( pack('B', SPNEGO_NegTokenResp.SPNEGO_NEG_TOKEN_TARG) + asn1encode( pack('B',ASN1_ENUMERATED) + asn1encode( self['NegResult'] )))) else: # Client resp ans += asn1encode( pack('B', ASN1_SEQUENCE) + asn1encode( pack('B', ASN1_RESPONSE_TOKEN) + asn1encode( pack('B', ASN1_OCTET_STRING) + asn1encode(self['ResponseToken'])))) return ans class SPNEGO_NegTokenInit(GSSAPI): # http://tools.ietf.org/html/rfc4178#page-8 # NegTokeInit :: = SEQUENCE { # mechTypes [0] MechTypeList, # reqFlags [1] ContextFlags OPTIONAL, # mechToken [2] OCTET STRING OPTIONAL, # mechListMIC [3] OCTET STRING OPTIONAL, # } SPNEGO_NEG_TOKEN_INIT = 0xa0 def fromString(self, data = 0): GSSAPI.fromString(self, data) payload = self['Payload'] next_byte = unpack('B', payload[:1])[0] if next_byte != SPNEGO_NegTokenInit.SPNEGO_NEG_TOKEN_INIT: raise Exception('NegTokenInit not found %x' % next_byte) payload = payload[1:] decode_data, total_bytes = asn1decode(payload) # Now we should have a SEQUENCE Tag next_byte = unpack('B', decode_data[:1])[0] if next_byte != ASN1_SEQUENCE: raise Exception('SEQUENCE tag not found %x' % next_byte) decode_data = decode_data[1:] decode_data, total_bytes2 = asn1decode(decode_data) next_byte = unpack('B',decode_data[:1])[0] if next_byte != ASN1_MECH_TYPE: raise Exception('MechType tag not found %x' % next_byte) decode_data = decode_data[1:] remaining_data = decode_data decode_data, total_bytes3 = asn1decode(decode_data) next_byte = unpack('B', decode_data[:1])[0] if next_byte != ASN1_SEQUENCE: raise Exception('SEQUENCE tag not found %x' % next_byte) decode_data = decode_data[1:] decode_data, total_bytes4 = asn1decode(decode_data) # And finally we should have the MechTypes self['MechTypes'] = [] while decode_data: next_byte = unpack('B', decode_data[:1])[0] if next_byte != ASN1_OID: # Not a valid OID, there must be something else we won't unpack break decode_data = decode_data[1:] item, total_bytes = asn1decode(decode_data) self['MechTypes'].append(item) decode_data = decode_data[total_bytes:] # Do we have MechTokens as well? decode_data = remaining_data[total_bytes3:] if len(decode_data) > 0: next_byte = unpack('B', decode_data[:1])[0] if next_byte == ASN1_MECH_TOKEN: # We have tokens in here! |
︙ | ︙ | |||
348 349 350 351 352 353 354 | mechTypes = '' for i in self['MechTypes']: mechTypes += pack('B', ASN1_OID) mechTypes += asn1encode(i) mechToken = '' # Do we have tokens to send? | | | < | 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 | mechTypes = '' for i in self['MechTypes']: mechTypes += pack('B', ASN1_OID) mechTypes += asn1encode(i) mechToken = '' # Do we have tokens to send? if 'MechToken' in self.fields: mechToken = pack('B', ASN1_MECH_TOKEN) + asn1encode( pack('B', ASN1_OCTET_STRING) + asn1encode( self['MechToken'])) ans = pack('B',SPNEGO_NegTokenInit.SPNEGO_NEG_TOKEN_INIT) ans += asn1encode( pack('B', ASN1_SEQUENCE) + asn1encode( pack('B', ASN1_MECH_TYPE) + asn1encode( pack('B', ASN1_SEQUENCE) + asn1encode(mechTypes)) + mechToken )) self['Payload'] = ans return GSSAPI.getData(self) |
Changes to jni/curl/tests/python_dependencies/impacket/structure.py.
1 2 3 4 5 6 7 | # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # | > | 1 2 3 4 5 6 7 8 | from __future__ import print_function # Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # |
︙ | ︙ | |||
93 94 95 96 97 98 99 | self.alignment = alignment def setData(self, data): self.data = data def packField(self, fieldName, format = None): if self.debug: | | | | | | | | | | 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 | self.alignment = alignment def setData(self, data): self.data = data def packField(self, fieldName, format = None): if self.debug: print("packField( %s | %s )" % (fieldName, format)) if format is None: format = self.formatForField(fieldName) if fieldName in self.fields: ans = self.pack(format, self.fields[fieldName], field = fieldName) else: ans = self.pack(format, None, field = fieldName) if self.debug: print("\tanswer %r" % ans) return ans def getData(self): if self.data is not None: return self.data data = '' for field in self.commonHdr+self.structure: try: data += self.packField(field[0], field[1]) except Exception as e: if field[0] in self.fields: e.args += ("When packing field '%s | %s | %r' in %s" % (field[0], field[1], self[field[0]], self.__class__),) else: e.args += ("When packing field '%s | %s' in %s" % (field[0], field[1], self.__class__),) raise if self.alignment: if len(data) % self.alignment: data += ('\x00'*self.alignment)[:-(len(data) % self.alignment)] #if len(data) % self.alignment: data += ('\x00'*self.alignment)[:-(len(data) % self.alignment)] return data def fromString(self, data): self.rawData = data for field in self.commonHdr+self.structure: if self.debug: print("fromString( %s | %s | %r )" % (field[0], field[1], data)) size = self.calcUnpackSize(field[1], data, field[0]) if self.debug: print(" size = %d" % size) dataClassOrCode = str if len(field) > 2: dataClassOrCode = field[2] try: self[field[0]] = self.unpack(field[1], data[:size], dataClassOrCode = dataClassOrCode, field = field[0]) except Exception as e: e.args += ("When unpacking field '%s | %s | %r[:%d]'" % (field[0], field[1], data, size),) raise size = self.calcPackSize(field[1], self[field[0]], field[0]) if self.alignment and size % self.alignment: size += self.alignment - (size % self.alignment) data = data[size:] |
︙ | ︙ | |||
171 172 173 174 175 176 177 | def __len__(self): # XXX: improve return len(self.getData()) def pack(self, format, data, field = None): if self.debug: | | | 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | def __len__(self): # XXX: improve return len(self.getData()) def pack(self, format, data, field = None): if self.debug: print(" pack( %s | %r | %s)" % (format, data, field)) if field: addressField = self.findAddressFieldFor(field) if (addressField is not None) and (data is None): return '' # void specifier |
︙ | ︙ | |||
202 203 204 205 206 207 208 | # address specifier two = format.split('&') if len(two) == 2: try: return self.pack(two[0], data) except: | | | 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | # address specifier two = format.split('&') if len(two) == 2: try: return self.pack(two[0], data) except: if (two[1] in self.fields) and (self[two[1]] is not None): return self.pack(two[0], id(self[two[1]]) & ((1<<(calcsize(two[0])*8))-1) ) else: return self.pack(two[0], 0) # length specifier two = format.split('-') if len(two) == 2: |
︙ | ︙ | |||
224 225 226 227 228 229 230 | if len(two) == 2: answer = '' for each in data: answer += self.pack(two[1], each) if two[0]: if two[0].isdigit(): if int(two[0]) != len(data): | | | 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | if len(two) == 2: answer = '' for each in data: answer += self.pack(two[1], each) if two[0]: if two[0].isdigit(): if int(two[0]) != len(data): raise Exception("Array field has a constant size, and it doesn't match the actual value") else: return self.pack(two[0], len(data))+answer return answer # "printf" string specifier if format[:1] == '%': # format string like specifier |
︙ | ︙ | |||
252 253 254 255 256 257 258 | data = '\0\0' elif len(data) % 2: data += '\0' l = pack('<L', len(data)/2) return '%s\0\0\0\0%s%s' % (l,l,data) if data is None: | | | | | 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 | data = '\0\0' elif len(data) % 2: data += '\0' l = pack('<L', len(data)/2) return '%s\0\0\0\0%s%s' % (l,l,data) if data is None: raise Exception("Trying to pack None") # literal specifier if format[:1] == ':': return str(data) # struct like specifier return pack(format, data) def unpack(self, format, data, dataClassOrCode = str, field = None): if self.debug: print(" unpack( %s | %r )" % (format, data)) if field: addressField = self.findAddressFieldFor(field) if addressField is not None: if not self[addressField]: return # void specifier if format[:1] == '_': if dataClassOrCode != str: fields = {'self':self, 'inputDataLeft':data} fields.update(self.fields) return eval(dataClassOrCode, {}, fields) else: return None # quote specifier if format[:1] == "'" or format[:1] == '"': answer = format[1:] if answer != data: raise Exception("Unpacked data doesn't match constant value '%r' should be '%r'" % (data, answer)) return answer # address specifier two = format.split('&') if len(two) == 2: return self.unpack(two[0],data) |
︙ | ︙ | |||
330 331 332 333 334 335 336 | if format[:1] == '%': # format string like specifier return format % data # asciiz specifier if format == 'z': if data[-1] != '\x00': | | | | 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | if format[:1] == '%': # format string like specifier return format % data # asciiz specifier if format == 'z': if data[-1] != '\x00': raise Exception("%s 'z' field is not NUL terminated: %r" % (field, data)) return data[:-1] # remove trailing NUL # unicode specifier if format == 'u': if data[-2:] != '\x00\x00': raise Exception("%s 'u' field is not NUL-NUL terminated: %r" % (field, data)) return data[:-2] # remove trailing NUL # DCE-RPC/NDR string specifier if format == 'w': l = unpack('<L', data[:4])[0] return data[12:12+l*2] |
︙ | ︙ | |||
388 389 390 391 392 393 394 | # array specifier two = format.split('*') if len(two) == 2: answer = 0 if two[0].isdigit(): if int(two[0]) != len(data): | | | 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | # array specifier two = format.split('*') if len(two) == 2: answer = 0 if two[0].isdigit(): if int(two[0]) != len(data): raise Exception("Array field has a constant size, and it doesn't match the actual value") elif two[0]: answer += self.calcPackSize(two[0], len(data)) for each in data: answer += self.calcPackSize(two[1], each) return answer |
︙ | ︙ | |||
424 425 426 427 428 429 430 | return len(data) # struct like specifier return calcsize(format) def calcUnpackSize(self, format, data, field = None): if self.debug: | | | 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 | return len(data) # struct like specifier return calcsize(format) def calcUnpackSize(self, format, data, field = None): if self.debug: print(" calcUnpackSize( %s | %s | %r)" % (field, format, data)) # void specifier if format[:1] == '_': return 0 addressField = self.findAddressFieldFor(field) if addressField is not None: |
︙ | ︙ | |||
483 484 485 486 487 488 489 | else: while answer < len(data): answer += self.calcUnpackSize(two[1], data[answer:]) return answer # "printf" string specifier if format[:1] == '%': | | | 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 | else: while answer < len(data): answer += self.calcUnpackSize(two[1], data[answer:]) return answer # "printf" string specifier if format[:1] == '%': raise Exception("Can't guess the size of a printf like specifier for unpacking") # asciiz specifier if format[:1] == 'z': return data.index('\x00')+1 # asciiz specifier if format[:1] == 'u': |
︙ | ︙ | |||
516 517 518 519 520 521 522 | return self.calcPackSize(format, self[fieldName]) def formatForField(self, fieldName): for field in self.commonHdr+self.structure: if field[0] == fieldName: return field[1] | | | 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 | return self.calcPackSize(format, self[fieldName]) def formatForField(self, fieldName): for field in self.commonHdr+self.structure: if field[0] == fieldName: return field[1] raise Exception("Field %s not found" % fieldName) def findAddressFieldFor(self, fieldName): descriptor = '&%s' % fieldName l = len(descriptor) for field in self.commonHdr+self.structure: if field[1][-l:] == descriptor: return field[0] |
︙ | ︙ | |||
554 555 556 557 558 559 560 | def clear(self): for field in self.commonHdr + self.structure: self[field[0]] = self.zeroValue(field[1]) def dump(self, msg = None, indent = 0): if msg is None: msg = self.__class__.__name__ ind = ' '*indent | | | | | | | | | | | | | | | 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 | def clear(self): for field in self.commonHdr + self.structure: self[field[0]] = self.zeroValue(field[1]) def dump(self, msg = None, indent = 0): if msg is None: msg = self.__class__.__name__ ind = ' '*indent print("\n%s" % msg) fixedFields = [] for field in self.commonHdr+self.structure: i = field[0] if i in self.fields: fixedFields.append(i) if isinstance(self[i], Structure): self[i].dump('%s%s:{' % (ind,i), indent = indent + 4) print("%s}" % ind) else: print("%s%s: {%r}" % (ind,i,self[i])) # Do we have remaining fields not defined in the structures? let's # print them remainingFields = list(set(self.fields) - set(fixedFields)) for i in remainingFields: if isinstance(self[i], Structure): self[i].dump('%s%s:{' % (ind,i), indent = indent + 4) print("%s}" % ind) else: print("%s%s: {%r}" % (ind,i,self[i])) class _StructureTest: alignment = 0 def create(self,data = None): if data is not None: return self.theClass(data, alignment = self.alignment) else: return self.theClass(alignment = self.alignment) def run(self): print() print("-"*70) testName = self.__class__.__name__ print("starting test: %s....." % testName) a = self.create() self.populate(a) a.dump("packing.....") a_str = str(a) print("packed: %r" % a_str) print("unpacking.....") b = self.create(a_str) b.dump("unpacked.....") print("repacking.....") b_str = str(b) if b_str != a_str: print("ERROR: original packed and repacked don't match") print("packed: %r" % b_str) class _Test_simple(_StructureTest): class theClass(Structure): commonHdr = () structure = ( ('int1', '!L'), ('len1','!L-z1'), |
︙ | ︙ | |||
728 729 730 731 732 733 734 | if __name__ == '__main__': _Test_simple().run() try: _Test_fixedLength().run() except: | | | 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 | if __name__ == '__main__': _Test_simple().run() try: _Test_fixedLength().run() except: print("cannot repack because length is bogus") _Test_simple_aligned4().run() _Test_nested().run() _Test_Optional().run() _Test_Optional_sparse().run() _Test_AsciiZArray().run() _Test_UnpackCode().run() _Test_AAA().run() |
Changes to jni/curl/tests/python_dependencies/impacket/uuid.py.
︙ | ︙ | |||
13 14 15 16 17 18 19 20 21 | # import re from random import randrange from struct import pack, unpack def generate(): # UHm... crappy Python has an maximum integer of 2**31-1. | > > > > > | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # import re from random import randrange from struct import pack, unpack try: long # Python 2 except NameError: long = int # Python 3 def generate(): # UHm... crappy Python has an maximum integer of 2**31-1. top = (1<<31)-1 return pack("IIII", randrange(top), randrange(top), randrange(top), randrange(top)) def bin_to_string(uuid): uuid1, uuid2, uuid3 = unpack('<LHH', uuid[:8]) uuid4, uuid5, uuid6 = unpack('>HHL', uuid[8:16]) return '%08X-%04X-%04X-%04X-%04X%08X' % (uuid1, uuid2, uuid3, uuid4, uuid5, uuid6) |
︙ | ︙ | |||
45 46 47 48 49 50 51 | def bin_to_uuidtup(bin): assert len(bin) == 20 uuidstr = bin_to_string(bin[:16]) maj, min = unpack("<HH", bin[16:]) return uuidstr, "%d.%d" % (maj, min) #input: string | | | | | | | | | 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | def bin_to_uuidtup(bin): assert len(bin) == 20 uuidstr = bin_to_string(bin[:16]) maj, min = unpack("<HH", bin[16:]) return uuidstr, "%d.%d" % (maj, min) #input: string #output: tuple (uuid,version) #if version is not found in the input string "1.0" is returned #example: # "00000000-0000-0000-0000-000000000000 3.0" returns ('00000000-0000-0000-0000-000000000000','3.0') # "10000000-2000-3000-4000-500000000000 version 3.0" returns ('00000000-0000-0000-0000-000000000000','3.0') # "10000000-2000-3000-4000-500000000000 v 3.0" returns ('00000000-0000-0000-0000-000000000000','3.0') # "10000000-2000-3000-4000-500000000000" returns ('00000000-0000-0000-0000-000000000000','1.0') def string_to_uuidtup(s): g = re.search("([A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}).*?([0-9]{1,5}\.[0-9]{1,5})",s+" 1.0") if g: (u,v) = g.groups() return (u,v) return def uuidtup_to_string(tup): uuid, (maj, min) = tup return "%s v%d.%d" % (uuid, maj, min) |
Changes to jni/curl/tests/runtests.1.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH runtests.pl 1 "May 05, 2017" "Curl 7.65.0" "runtests" .SH NAME runtests.pl \- run one or more test cases .SH SYNOPSIS .B runtests.pl [options] [test number] [!test number] [key word] [!key word] .SH DESCRIPTION \fIruntests.pl\fP runs one, several or all the existing test cases in curl's |
︙ | ︙ |
Changes to jni/curl/tests/runtests.pl.
︙ | ︙ | |||
272 273 274 275 276 277 278 | my %disabled; # disabled test cases my $sshdid; # for socks server, ssh daemon version id my $sshdvernum; # for socks server, ssh daemon version number my $sshdverstr; # for socks server, ssh daemon version string my $sshderror; # for socks server, ssh daemon version error | | | 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 | my %disabled; # disabled test cases my $sshdid; # for socks server, ssh daemon version id my $sshdvernum; # for socks server, ssh daemon version number my $sshdverstr; # for socks server, ssh daemon version string my $sshderror; # for socks server, ssh daemon version error my $defserverlogslocktimeout = 2; # timeout to await server logs lock removal my $defpostcommanddelay = 0; # delay between command and postcheck sections my $timestats; # time stamping and stats generation my $fullstats; # show time stats for every single test my %timeprepini; # timestamp for each test preparation start my %timesrvrini; # timestamp for each test required servers verification start my %timesrvrend; # timestamp for each test required servers verification end |
︙ | ︙ | |||
2008 2009 2010 2011 2012 2013 2014 | ####################################################################### # Start the ssh (scp/sftp) server # sub runsshserver { my ($id, $verbose, $ipv6) = @_; my $ip=$HOSTIP; my $port = $SSHPORT; | < | 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 | ####################################################################### # Start the ssh (scp/sftp) server # sub runsshserver { my ($id, $verbose, $ipv6) = @_; my $ip=$HOSTIP; my $port = $SSHPORT; my $proto = 'ssh'; my $ipvnum = 4; my $idnum = ($id && ($id =~ /^(\d+)$/) && ($id > 1)) ? $id : 1; my $server; my $srvrname; my $pidfile; my $logfile; |
︙ | ︙ | |||
2042 2043 2044 2045 2046 2047 2048 | $logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum); $flags .= "--verbose " if($verbose); $flags .= "--debugprotocol " if($debugprotocol); $flags .= "--pidfile \"$pidfile\" "; $flags .= "--id $idnum " if($idnum > 1); $flags .= "--ipv$ipvnum --addr \"$ip\" "; | | | 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 | $logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum); $flags .= "--verbose " if($verbose); $flags .= "--debugprotocol " if($debugprotocol); $flags .= "--pidfile \"$pidfile\" "; $flags .= "--id $idnum " if($idnum > 1); $flags .= "--ipv$ipvnum --addr \"$ip\" "; $flags .= "--sshport $port "; $flags .= "--user \"$USER\""; my $cmd = "$perl $srcdir/sshserver.pl $flags"; my ($sshpid, $pid2) = startnew($cmd, $pidfile, 60, 0); # on loaded systems sshserver start up can take longer than the timeout # passed to startnew, when this happens startnew completes without being |
︙ | ︙ | |||
2135 2136 2137 2138 2139 2140 2141 | } unlink($pidfile) if(-f $pidfile); $srvrname = servername_str($proto, $ipvnum, $idnum); $logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum); | < < < < < < | < < < < < < < | < < < < < < < < < < | < < < < | < < | < < < < < < < < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | < < < < < < < < < < < < < < < | | 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 | } unlink($pidfile) if(-f $pidfile); $srvrname = servername_str($proto, $ipvnum, $idnum); $logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum); # start our socks server, get commands from the FTP cmd file my $cmd="server/socksd". " --port $port ". " --pidfile $pidfile". " --backend $HOSTIP". " --config $FTPDCMD"; my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0); if($sockspid <= 0 || !pidexists($sockspid)) { # it is NOT alive logmsg "RUN: failed to start the $srvrname server\n"; stopserver($server, "$pid2"); $doesntrun{$pidfile} = 1; return (0,0); } if($verbose) { logmsg "RUN: $srvrname server is now running PID $pid2\n"; } return ($pid2, $sockspid); } ####################################################################### # start the dict server # sub rundictserver { my ($verbose, $alt, $port) = @_; |
︙ | ︙ | |||
3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 | } if($debug_build || ($has_shared ne "yes")) { # print "Skipping LD_PRELOAD due to no release shared build\n"; next; } } $ENV{$var} = "$content"; } } } } if(!$why) { my @precheck = getpart("client", "precheck"); | > | 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 | } if($debug_build || ($has_shared ne "yes")) { # print "Skipping LD_PRELOAD due to no release shared build\n"; next; } } $ENV{$var} = "$content"; print "setenv $var = $content\n" if($verbose); } } } } if(!$why) { my @precheck = getpart("client", "precheck"); |
︙ | ︙ | |||
3753 3754 3755 3756 3757 3758 3759 | if($hash{'nonewline'}) { # cut off the final newline from the final line of the upload data chomp($upload[$#upload]); } } # if this section exists, it might be FTP server instructions: | | | 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 | if($hash{'nonewline'}) { # cut off the final newline from the final line of the upload data chomp($upload[$#upload]); } } # if this section exists, it might be FTP server instructions: my @ftpservercmd = fixarray ( getpart("reply", "servercmd") ); my $CURLOUT="$LOGDIR/curl$testnum.out"; # curl output if not stdout # name of the test my @testname= getpart("client", "name"); my $testname = $testname[0]; $testname =~ s/\n//g; |
︙ | ︙ | |||
4970 4971 4972 4973 4974 4975 4976 | if($pid <= 0) { return "failed starting TFTP-IPv6 server"; } printf("* pid tftp-ipv6 => %d %d\n", $pid, $pid2) if($verbose); $run{'tftp-ipv6'}="$pid $pid2"; } } | | > | | | | | | | | < < < < < < < < < < < < < < < < < < | 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 | if($pid <= 0) { return "failed starting TFTP-IPv6 server"; } printf("* pid tftp-ipv6 => %d %d\n", $pid, $pid2) if($verbose); $run{'tftp-ipv6'}="$pid $pid2"; } } elsif($what eq "sftp" || $what eq "scp") { if(!$run{'ssh'}) { ($pid, $pid2) = runsshserver("", $verbose); if($pid <= 0) { return "failed starting SSH server"; } printf ("* pid ssh => %d %d\n", $pid, $pid2) if($verbose); $run{'ssh'}="$pid $pid2"; } } elsif($what eq "socks4" || $what eq "socks5" ) { if(!$run{'socks'}) { ($pid, $pid2) = runsocksserver("", $verbose); if($pid <= 0) { return "failed starting socks server"; } printf ("* pid socks => %d %d\n", $pid, $pid2) if($verbose); $run{'socks'}="$pid $pid2"; } } elsif($what eq "http-unix") { if($torture && $run{'http-unix'} && !responsive_http_server("http", $verbose, "unix", $HTTPUNIXPATH)) { stopserver('http-unix'); } |
︙ | ︙ |
Changes to jni/curl/tests/server/Makefile.in.
︙ | ︙ | |||
87 88 89 90 91 92 93 | PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @DOING_NATIVE_WINDOWS_TRUE@am__append_1 = -DCURL_STATICLIB noinst_PROGRAMS = getpart$(EXEEXT) resolve$(EXEEXT) rtspd$(EXEEXT) \ sockfilt$(EXEEXT) sws$(EXEEXT) tftpd$(EXEEXT) \ | | | 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @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) 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-compilers.m4 \ $(top_srcdir)/m4/curl-confopts.m4 \ $(top_srcdir)/m4/curl-functions.m4 \ $(top_srcdir)/m4/curl-openssl.m4 \ |
︙ | ︙ | |||
204 205 206 207 208 209 210 | sockfilt-sockfilt.$(OBJEXT) \ ../../lib/sockfilt-inet_pton.$(OBJEXT) sockfilt_OBJECTS = $(am_sockfilt_OBJECTS) sockfilt_DEPENDENCIES = sockfilt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(sockfilt_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ | | > > > > > > > > > > > > > > > > > | | | | | | | | | | 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 | sockfilt-sockfilt.$(OBJEXT) \ ../../lib/sockfilt-inet_pton.$(OBJEXT) sockfilt_OBJECTS = $(am_sockfilt_OBJECTS) sockfilt_DEPENDENCIES = sockfilt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(sockfilt_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__objects_16 = ../../lib/socksd-mprintf.$(OBJEXT) \ ../../lib/socksd-nonblock.$(OBJEXT) \ ../../lib/socksd-strtoofft.$(OBJEXT) \ ../../lib/socksd-warnless.$(OBJEXT) \ ../../lib/socksd-curl_ctype.$(OBJEXT) am__objects_17 = socksd-getpart.$(OBJEXT) \ ../../lib/socksd-base64.$(OBJEXT) \ ../../lib/socksd-memdebug.$(OBJEXT) am__objects_18 = socksd-util.$(OBJEXT) am_socksd_OBJECTS = $(am__objects_16) $(am__objects_2) \ $(am__objects_17) $(am__objects_18) socksd-socksd.$(OBJEXT) \ ../../lib/socksd-inet_pton.$(OBJEXT) socksd_OBJECTS = $(am_socksd_OBJECTS) socksd_DEPENDENCIES = socksd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(socksd_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__objects_19 = ../../lib/sws-mprintf.$(OBJEXT) \ ../../lib/sws-nonblock.$(OBJEXT) \ ../../lib/sws-strtoofft.$(OBJEXT) \ ../../lib/sws-warnless.$(OBJEXT) \ ../../lib/sws-curl_ctype.$(OBJEXT) am__objects_20 = sws-getpart.$(OBJEXT) ../../lib/sws-base64.$(OBJEXT) \ ../../lib/sws-memdebug.$(OBJEXT) am__objects_21 = sws-util.$(OBJEXT) am_sws_OBJECTS = $(am__objects_19) $(am__objects_2) $(am__objects_20) \ $(am__objects_21) sws-sws.$(OBJEXT) \ ../../lib/sws-inet_pton.$(OBJEXT) sws_OBJECTS = $(am_sws_OBJECTS) sws_DEPENDENCIES = sws_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(sws_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__objects_22 = ../../lib/tftpd-mprintf.$(OBJEXT) \ ../../lib/tftpd-nonblock.$(OBJEXT) \ ../../lib/tftpd-strtoofft.$(OBJEXT) \ ../../lib/tftpd-warnless.$(OBJEXT) \ ../../lib/tftpd-curl_ctype.$(OBJEXT) am__objects_23 = tftpd-getpart.$(OBJEXT) \ ../../lib/tftpd-base64.$(OBJEXT) \ ../../lib/tftpd-memdebug.$(OBJEXT) am__objects_24 = tftpd-util.$(OBJEXT) am_tftpd_OBJECTS = $(am__objects_22) $(am__objects_2) \ $(am__objects_23) $(am__objects_24) tftpd-tftpd.$(OBJEXT) tftpd_OBJECTS = $(am_tftpd_OBJECTS) tftpd_DEPENDENCIES = tftpd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(tftpd_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) |
︙ | ︙ | |||
287 288 289 290 291 292 293 294 295 296 297 298 299 300 | ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po \ ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po \ ../../lib/$(DEPDIR)/sockfilt-memdebug.Po \ ../../lib/$(DEPDIR)/sockfilt-mprintf.Po \ ../../lib/$(DEPDIR)/sockfilt-nonblock.Po \ ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po \ ../../lib/$(DEPDIR)/sockfilt-warnless.Po \ ../../lib/$(DEPDIR)/sws-base64.Po \ ../../lib/$(DEPDIR)/sws-curl_ctype.Po \ ../../lib/$(DEPDIR)/sws-inet_pton.Po \ ../../lib/$(DEPDIR)/sws-memdebug.Po \ ../../lib/$(DEPDIR)/sws-mprintf.Po \ ../../lib/$(DEPDIR)/sws-nonblock.Po \ ../../lib/$(DEPDIR)/sws-strtoofft.Po \ | > > > > > > > > | 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po \ ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po \ ../../lib/$(DEPDIR)/sockfilt-memdebug.Po \ ../../lib/$(DEPDIR)/sockfilt-mprintf.Po \ ../../lib/$(DEPDIR)/sockfilt-nonblock.Po \ ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po \ ../../lib/$(DEPDIR)/sockfilt-warnless.Po \ ../../lib/$(DEPDIR)/socksd-base64.Po \ ../../lib/$(DEPDIR)/socksd-curl_ctype.Po \ ../../lib/$(DEPDIR)/socksd-inet_pton.Po \ ../../lib/$(DEPDIR)/socksd-memdebug.Po \ ../../lib/$(DEPDIR)/socksd-mprintf.Po \ ../../lib/$(DEPDIR)/socksd-nonblock.Po \ ../../lib/$(DEPDIR)/socksd-strtoofft.Po \ ../../lib/$(DEPDIR)/socksd-warnless.Po \ ../../lib/$(DEPDIR)/sws-base64.Po \ ../../lib/$(DEPDIR)/sws-curl_ctype.Po \ ../../lib/$(DEPDIR)/sws-inet_pton.Po \ ../../lib/$(DEPDIR)/sws-memdebug.Po \ ../../lib/$(DEPDIR)/sws-mprintf.Po \ ../../lib/$(DEPDIR)/sws-nonblock.Po \ ../../lib/$(DEPDIR)/sws-strtoofft.Po \ |
︙ | ︙ | |||
310 311 312 313 314 315 316 | ./$(DEPDIR)/fake_ntlm-getpart.Po ./$(DEPDIR)/fake_ntlm-util.Po \ ./$(DEPDIR)/getpart-getpart.Po ./$(DEPDIR)/getpart-testpart.Po \ ./$(DEPDIR)/resolve-getpart.Po ./$(DEPDIR)/resolve-resolve.Po \ ./$(DEPDIR)/resolve-util.Po ./$(DEPDIR)/rtspd-getpart.Po \ ./$(DEPDIR)/rtspd-rtspd.Po ./$(DEPDIR)/rtspd-util.Po \ ./$(DEPDIR)/sockfilt-getpart.Po \ ./$(DEPDIR)/sockfilt-sockfilt.Po ./$(DEPDIR)/sockfilt-util.Po \ | > > | | | | | | | 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 | ./$(DEPDIR)/fake_ntlm-getpart.Po ./$(DEPDIR)/fake_ntlm-util.Po \ ./$(DEPDIR)/getpart-getpart.Po ./$(DEPDIR)/getpart-testpart.Po \ ./$(DEPDIR)/resolve-getpart.Po ./$(DEPDIR)/resolve-resolve.Po \ ./$(DEPDIR)/resolve-util.Po ./$(DEPDIR)/rtspd-getpart.Po \ ./$(DEPDIR)/rtspd-rtspd.Po ./$(DEPDIR)/rtspd-util.Po \ ./$(DEPDIR)/sockfilt-getpart.Po \ ./$(DEPDIR)/sockfilt-sockfilt.Po ./$(DEPDIR)/sockfilt-util.Po \ ./$(DEPDIR)/socksd-getpart.Po ./$(DEPDIR)/socksd-socksd.Po \ ./$(DEPDIR)/socksd-util.Po ./$(DEPDIR)/sws-getpart.Po \ ./$(DEPDIR)/sws-sws.Po ./$(DEPDIR)/sws-util.Po \ ./$(DEPDIR)/tftpd-getpart.Po ./$(DEPDIR)/tftpd-tftpd.Po \ ./$(DEPDIR)/tftpd-util.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(fake_ntlm_SOURCES) $(getpart_SOURCES) $(resolve_SOURCES) \ $(rtspd_SOURCES) $(sockfilt_SOURCES) $(socksd_SOURCES) \ $(sws_SOURCES) $(tftpd_SOURCES) DIST_SOURCES = $(fake_ntlm_SOURCES) $(getpart_SOURCES) \ $(resolve_SOURCES) $(rtspd_SOURCES) $(sockfilt_SOURCES) \ $(socksd_SOURCES) $(sws_SOURCES) $(tftpd_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, |
︙ | ︙ | |||
659 660 661 662 663 664 665 666 667 668 669 670 671 672 | sockfilt_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sockfilt.c \ ../../lib/inet_pton.c sockfilt_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sockfilt_CFLAGS = $(AM_CFLAGS) sws_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sws.c \ ../../lib/inet_pton.c sws_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sws_CFLAGS = $(AM_CFLAGS) | > > > > > > | 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 | sockfilt_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sockfilt.c \ ../../lib/inet_pton.c sockfilt_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sockfilt_CFLAGS = $(AM_CFLAGS) socksd_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h socksd.c \ ../../lib/inet_pton.c socksd_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ socksd_CFLAGS = $(AM_CFLAGS) sws_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sws.c \ ../../lib/inet_pton.c sws_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sws_CFLAGS = $(AM_CFLAGS) |
︙ | ︙ | |||
826 827 828 829 830 831 832 833 834 835 836 837 838 839 | ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sockfilt-inet_pton.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) sockfilt$(EXEEXT): $(sockfilt_OBJECTS) $(sockfilt_DEPENDENCIES) $(EXTRA_sockfilt_DEPENDENCIES) @rm -f sockfilt$(EXEEXT) $(AM_V_CCLD)$(sockfilt_LINK) $(sockfilt_OBJECTS) $(sockfilt_LDADD) $(LIBS) ../../lib/sws-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sws-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sws-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sws-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ | > > > > > > > > > > > > > > > > > > > > | 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 | ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sockfilt-inet_pton.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) sockfilt$(EXEEXT): $(sockfilt_OBJECTS) $(sockfilt_DEPENDENCIES) $(EXTRA_sockfilt_DEPENDENCIES) @rm -f sockfilt$(EXEEXT) $(AM_V_CCLD)$(sockfilt_LINK) $(sockfilt_OBJECTS) $(sockfilt_LDADD) $(LIBS) ../../lib/socksd-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/socksd-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/socksd-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/socksd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/socksd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/socksd-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/socksd-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/socksd-inet_pton.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) socksd$(EXEEXT): $(socksd_OBJECTS) $(socksd_DEPENDENCIES) $(EXTRA_socksd_DEPENDENCIES) @rm -f socksd$(EXEEXT) $(AM_V_CCLD)$(socksd_LINK) $(socksd_OBJECTS) $(socksd_LDADD) $(LIBS) ../../lib/sws-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sws-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sws-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) ../../lib/sws-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \ |
︙ | ︙ | |||
908 909 910 911 912 913 914 915 916 917 918 919 920 921 | @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-inet_pton.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-memdebug.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-mprintf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-nonblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strtoofft.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-base64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-curl_ctype.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-inet_pton.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-memdebug.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-mprintf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-nonblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strtoofft.Po@am__quote@ # am--include-marker | > > > > > > > > | 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 | @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-inet_pton.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-memdebug.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-mprintf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-nonblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strtoofft.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-base64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-curl_ctype.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-inet_pton.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-memdebug.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-mprintf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-nonblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-strtoofft.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-base64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-curl_ctype.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-inet_pton.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-memdebug.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-mprintf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-nonblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strtoofft.Po@am__quote@ # am--include-marker |
︙ | ︙ | |||
937 938 939 940 941 942 943 944 945 946 947 948 949 950 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-rtspd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-sockfilt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-sws.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-tftpd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-util.Po@am__quote@ # am--include-marker | > > > | 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-rtspd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-sockfilt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socksd-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socksd-socksd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socksd-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-sws.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-getpart.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-tftpd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-util.Po@am__quote@ # am--include-marker |
︙ | ︙ | |||
1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 | ../../lib/sockfilt-inet_pton.obj: ../../lib/inet_pton.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-inet_pton.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo -c -o ../../lib/sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/sockfilt-inet_pton.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi` ../../lib/sws-mprintf.o: ../../lib/mprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-mprintf.Tpo -c -o ../../lib/sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-mprintf.Tpo ../../lib/$(DEPDIR)/sws-mprintf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/sws-mprintf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | ../../lib/sockfilt-inet_pton.obj: ../../lib/inet_pton.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-inet_pton.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo -c -o ../../lib/sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/sockfilt-inet_pton.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi` ../../lib/socksd-mprintf.o: ../../lib/mprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-mprintf.Tpo -c -o ../../lib/socksd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-mprintf.Tpo ../../lib/$(DEPDIR)/socksd-mprintf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/socksd-mprintf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c ../../lib/socksd-mprintf.obj: ../../lib/mprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-mprintf.Tpo -c -o ../../lib/socksd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-mprintf.Tpo ../../lib/$(DEPDIR)/socksd-mprintf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/socksd-mprintf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi` ../../lib/socksd-nonblock.o: ../../lib/nonblock.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-nonblock.Tpo -c -o ../../lib/socksd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-nonblock.Tpo ../../lib/$(DEPDIR)/socksd-nonblock.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/socksd-nonblock.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c ../../lib/socksd-nonblock.obj: ../../lib/nonblock.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-nonblock.Tpo -c -o ../../lib/socksd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-nonblock.Tpo ../../lib/$(DEPDIR)/socksd-nonblock.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/socksd-nonblock.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi` ../../lib/socksd-strtoofft.o: ../../lib/strtoofft.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-strtoofft.Tpo -c -o ../../lib/socksd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-strtoofft.Tpo ../../lib/$(DEPDIR)/socksd-strtoofft.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/socksd-strtoofft.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c ../../lib/socksd-strtoofft.obj: ../../lib/strtoofft.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-strtoofft.Tpo -c -o ../../lib/socksd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-strtoofft.Tpo ../../lib/$(DEPDIR)/socksd-strtoofft.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/socksd-strtoofft.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi` ../../lib/socksd-warnless.o: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-warnless.Tpo -c -o ../../lib/socksd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-warnless.Tpo ../../lib/$(DEPDIR)/socksd-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/socksd-warnless.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c ../../lib/socksd-warnless.obj: ../../lib/warnless.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-warnless.Tpo -c -o ../../lib/socksd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-warnless.Tpo ../../lib/$(DEPDIR)/socksd-warnless.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/socksd-warnless.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi` ../../lib/socksd-curl_ctype.o: ../../lib/curl_ctype.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo -c -o ../../lib/socksd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo ../../lib/$(DEPDIR)/socksd-curl_ctype.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/socksd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c ../../lib/socksd-curl_ctype.obj: ../../lib/curl_ctype.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo -c -o ../../lib/socksd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo ../../lib/$(DEPDIR)/socksd-curl_ctype.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/socksd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi` socksd-getpart.o: getpart.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT socksd-getpart.o -MD -MP -MF $(DEPDIR)/socksd-getpart.Tpo -c -o socksd-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/socksd-getpart.Tpo $(DEPDIR)/socksd-getpart.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getpart.c' object='socksd-getpart.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o socksd-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c socksd-getpart.obj: getpart.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT socksd-getpart.obj -MD -MP -MF $(DEPDIR)/socksd-getpart.Tpo -c -o socksd-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/socksd-getpart.Tpo $(DEPDIR)/socksd-getpart.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getpart.c' object='socksd-getpart.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o socksd-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi` ../../lib/socksd-base64.o: ../../lib/base64.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-base64.Tpo -c -o ../../lib/socksd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-base64.Tpo ../../lib/$(DEPDIR)/socksd-base64.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/base64.c' object='../../lib/socksd-base64.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c ../../lib/socksd-base64.obj: ../../lib/base64.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-base64.Tpo -c -o ../../lib/socksd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-base64.Tpo ../../lib/$(DEPDIR)/socksd-base64.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/base64.c' object='../../lib/socksd-base64.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi` ../../lib/socksd-memdebug.o: ../../lib/memdebug.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-memdebug.Tpo -c -o ../../lib/socksd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-memdebug.Tpo ../../lib/$(DEPDIR)/socksd-memdebug.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/socksd-memdebug.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c ../../lib/socksd-memdebug.obj: ../../lib/memdebug.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-memdebug.Tpo -c -o ../../lib/socksd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-memdebug.Tpo ../../lib/$(DEPDIR)/socksd-memdebug.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/socksd-memdebug.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi` socksd-util.o: util.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT socksd-util.o -MD -MP -MF $(DEPDIR)/socksd-util.Tpo -c -o socksd-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/socksd-util.Tpo $(DEPDIR)/socksd-util.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util.c' object='socksd-util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o socksd-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c socksd-util.obj: util.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT socksd-util.obj -MD -MP -MF $(DEPDIR)/socksd-util.Tpo -c -o socksd-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/socksd-util.Tpo $(DEPDIR)/socksd-util.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util.c' object='socksd-util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o socksd-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi` socksd-socksd.o: socksd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT socksd-socksd.o -MD -MP -MF $(DEPDIR)/socksd-socksd.Tpo -c -o socksd-socksd.o `test -f 'socksd.c' || echo '$(srcdir)/'`socksd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/socksd-socksd.Tpo $(DEPDIR)/socksd-socksd.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='socksd.c' object='socksd-socksd.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o socksd-socksd.o `test -f 'socksd.c' || echo '$(srcdir)/'`socksd.c socksd-socksd.obj: socksd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT socksd-socksd.obj -MD -MP -MF $(DEPDIR)/socksd-socksd.Tpo -c -o socksd-socksd.obj `if test -f 'socksd.c'; then $(CYGPATH_W) 'socksd.c'; else $(CYGPATH_W) '$(srcdir)/socksd.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/socksd-socksd.Tpo $(DEPDIR)/socksd-socksd.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='socksd.c' object='socksd-socksd.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o socksd-socksd.obj `if test -f 'socksd.c'; then $(CYGPATH_W) 'socksd.c'; else $(CYGPATH_W) '$(srcdir)/socksd.c'; fi` ../../lib/socksd-inet_pton.o: ../../lib/inet_pton.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-inet_pton.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-inet_pton.Tpo -c -o ../../lib/socksd-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-inet_pton.Tpo ../../lib/$(DEPDIR)/socksd-inet_pton.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/socksd-inet_pton.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c ../../lib/socksd-inet_pton.obj: ../../lib/inet_pton.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-inet_pton.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-inet_pton.Tpo -c -o ../../lib/socksd-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-inet_pton.Tpo ../../lib/$(DEPDIR)/socksd-inet_pton.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/socksd-inet_pton.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi` ../../lib/sws-mprintf.o: ../../lib/mprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-mprintf.Tpo -c -o ../../lib/sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-mprintf.Tpo ../../lib/$(DEPDIR)/sws-mprintf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/sws-mprintf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c |
︙ | ︙ | |||
2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 | -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po -rm -f ../../lib/$(DEPDIR)/sws-base64.Po -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sws-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sws-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po | > > > > > > > > | 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 | -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po -rm -f ../../lib/$(DEPDIR)/socksd-base64.Po -rm -f ../../lib/$(DEPDIR)/socksd-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/socksd-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/socksd-memdebug.Po -rm -f ../../lib/$(DEPDIR)/socksd-mprintf.Po -rm -f ../../lib/$(DEPDIR)/socksd-nonblock.Po -rm -f ../../lib/$(DEPDIR)/socksd-strtoofft.Po -rm -f ../../lib/$(DEPDIR)/socksd-warnless.Po -rm -f ../../lib/$(DEPDIR)/sws-base64.Po -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sws-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sws-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po |
︙ | ︙ | |||
2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 | -rm -f ./$(DEPDIR)/resolve-util.Po -rm -f ./$(DEPDIR)/rtspd-getpart.Po -rm -f ./$(DEPDIR)/rtspd-rtspd.Po -rm -f ./$(DEPDIR)/rtspd-util.Po -rm -f ./$(DEPDIR)/sockfilt-getpart.Po -rm -f ./$(DEPDIR)/sockfilt-sockfilt.Po -rm -f ./$(DEPDIR)/sockfilt-util.Po -rm -f ./$(DEPDIR)/sws-getpart.Po -rm -f ./$(DEPDIR)/sws-sws.Po -rm -f ./$(DEPDIR)/sws-util.Po -rm -f ./$(DEPDIR)/tftpd-getpart.Po -rm -f ./$(DEPDIR)/tftpd-tftpd.Po -rm -f ./$(DEPDIR)/tftpd-util.Po -rm -f Makefile | > > > | 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 | -rm -f ./$(DEPDIR)/resolve-util.Po -rm -f ./$(DEPDIR)/rtspd-getpart.Po -rm -f ./$(DEPDIR)/rtspd-rtspd.Po -rm -f ./$(DEPDIR)/rtspd-util.Po -rm -f ./$(DEPDIR)/sockfilt-getpart.Po -rm -f ./$(DEPDIR)/sockfilt-sockfilt.Po -rm -f ./$(DEPDIR)/sockfilt-util.Po -rm -f ./$(DEPDIR)/socksd-getpart.Po -rm -f ./$(DEPDIR)/socksd-socksd.Po -rm -f ./$(DEPDIR)/socksd-util.Po -rm -f ./$(DEPDIR)/sws-getpart.Po -rm -f ./$(DEPDIR)/sws-sws.Po -rm -f ./$(DEPDIR)/sws-util.Po -rm -f ./$(DEPDIR)/tftpd-getpart.Po -rm -f ./$(DEPDIR)/tftpd-tftpd.Po -rm -f ./$(DEPDIR)/tftpd-util.Po -rm -f Makefile |
︙ | ︙ | |||
2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 | -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po -rm -f ../../lib/$(DEPDIR)/sws-base64.Po -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sws-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sws-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po | > > > > > > > > | 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 | -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po -rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po -rm -f ../../lib/$(DEPDIR)/socksd-base64.Po -rm -f ../../lib/$(DEPDIR)/socksd-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/socksd-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/socksd-memdebug.Po -rm -f ../../lib/$(DEPDIR)/socksd-mprintf.Po -rm -f ../../lib/$(DEPDIR)/socksd-nonblock.Po -rm -f ../../lib/$(DEPDIR)/socksd-strtoofft.Po -rm -f ../../lib/$(DEPDIR)/socksd-warnless.Po -rm -f ../../lib/$(DEPDIR)/sws-base64.Po -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po -rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po -rm -f ../../lib/$(DEPDIR)/sws-memdebug.Po -rm -f ../../lib/$(DEPDIR)/sws-mprintf.Po -rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po -rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po |
︙ | ︙ | |||
2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 | -rm -f ./$(DEPDIR)/resolve-util.Po -rm -f ./$(DEPDIR)/rtspd-getpart.Po -rm -f ./$(DEPDIR)/rtspd-rtspd.Po -rm -f ./$(DEPDIR)/rtspd-util.Po -rm -f ./$(DEPDIR)/sockfilt-getpart.Po -rm -f ./$(DEPDIR)/sockfilt-sockfilt.Po -rm -f ./$(DEPDIR)/sockfilt-util.Po -rm -f ./$(DEPDIR)/sws-getpart.Po -rm -f ./$(DEPDIR)/sws-sws.Po -rm -f ./$(DEPDIR)/sws-util.Po -rm -f ./$(DEPDIR)/tftpd-getpart.Po -rm -f ./$(DEPDIR)/tftpd-tftpd.Po -rm -f ./$(DEPDIR)/tftpd-util.Po -rm -f Makefile | > > > | 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 | -rm -f ./$(DEPDIR)/resolve-util.Po -rm -f ./$(DEPDIR)/rtspd-getpart.Po -rm -f ./$(DEPDIR)/rtspd-rtspd.Po -rm -f ./$(DEPDIR)/rtspd-util.Po -rm -f ./$(DEPDIR)/sockfilt-getpart.Po -rm -f ./$(DEPDIR)/sockfilt-sockfilt.Po -rm -f ./$(DEPDIR)/sockfilt-util.Po -rm -f ./$(DEPDIR)/socksd-getpart.Po -rm -f ./$(DEPDIR)/socksd-socksd.Po -rm -f ./$(DEPDIR)/socksd-util.Po -rm -f ./$(DEPDIR)/sws-getpart.Po -rm -f ./$(DEPDIR)/sws-sws.Po -rm -f ./$(DEPDIR)/sws-util.Po -rm -f ./$(DEPDIR)/tftpd-getpart.Po -rm -f ./$(DEPDIR)/tftpd-tftpd.Po -rm -f ./$(DEPDIR)/tftpd-util.Po -rm -f Makefile |
︙ | ︙ |
Changes to jni/curl/tests/server/Makefile.inc.
|
| | | 1 2 3 4 5 6 7 8 | noinst_PROGRAMS = getpart resolve rtspd sockfilt sws tftpd fake_ntlm socksd CURLX_SRCS = \ ../../lib/mprintf.c \ ../../lib/nonblock.c \ ../../lib/strtoofft.c \ ../../lib/warnless.c \ ../../lib/curl_ctype.c |
︙ | ︙ | |||
45 46 47 48 49 50 51 52 53 54 55 56 57 58 | sockfilt_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sockfilt.c \ ../../lib/inet_pton.c sockfilt_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sockfilt_CFLAGS = $(AM_CFLAGS) sws_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sws.c \ ../../lib/inet_pton.c sws_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sws_CFLAGS = $(AM_CFLAGS) | > > > > > > | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | sockfilt_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sockfilt.c \ ../../lib/inet_pton.c sockfilt_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sockfilt_CFLAGS = $(AM_CFLAGS) socksd_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h socksd.c \ ../../lib/inet_pton.c socksd_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ socksd_CFLAGS = $(AM_CFLAGS) sws_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ server_sockaddr.h \ sws.c \ ../../lib/inet_pton.c sws_LDADD = @CURL_NETWORK_AND_TIME_LIBS@ sws_CFLAGS = $(AM_CFLAGS) |
︙ | ︙ |
Added jni/curl/tests/server/socksd.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 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 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ***************************************************************************/ #include "server_setup.h" #include <stdlib.h> /* Function * * Accepts a TCP connection on a custom port (IPv4 or IPv6). Connects to a * given addr + port backend (that is NOT extracted form the client's * request). The backend server default to connect to can be set with * --backend and --backendport. * * Read commands from FILE (set with --config). The commands control how to * act and is reset to defaults each client TCP connect. * * Config file keywords: * * "version [number: 5]" - requires the communication to use this version. * "nmethods_min [number: 1]" - the minimum numberf NMETHODS the client must * state * "nmethods_max [number: 3]" - the minimum numberf NMETHODS the client must * state * "user [string]" - the user name that must match (if method is 2) * "password [string]" - the password that must match (if method is 2) * "backend [IPv4]" - numerical IPv4 address of backend to connect to * "backendport [number:0]" - TCP port of backend to connect to. 0 means use the client's specified port number. * "method [number: 0]" - connect method to respond with: * 0 - no auth * 1 - GSSAPI (not supported) * 2 - user + password * "response [number]" - the decimal number to repsond to a connect * SOCKS5: 0 is OK, SOCKS4: 90 is ok * */ /* based on sockfilt.c */ #ifdef HAVE_SIGNAL_H #include <signal.h> #endif #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif #ifdef HAVE_NETINET_IN6_H #include <netinet/in6.h> #endif #ifdef HAVE_ARPA_INET_H #include <arpa/inet.h> #endif #ifdef HAVE_NETDB_H #include <netdb.h> #endif #define ENABLE_CURLX_PRINTF /* make the curlx header define all printf() functions to use the curlx_* versions instead */ #include "curlx.h" /* from the private lib dir */ #include "getpart.h" #include "inet_pton.h" #include "util.h" #include "server_sockaddr.h" #include "warnless.h" /* include memdebug.h last */ #include "memdebug.h" #ifdef USE_WINSOCK #undef EINTR #define EINTR 4 /* errno.h value */ #undef EAGAIN #define EAGAIN 11 /* errno.h value */ #undef ENOMEM #define ENOMEM 12 /* errno.h value */ #undef EINVAL #define EINVAL 22 /* errno.h value */ #endif #define DEFAULT_PORT 8905 #ifndef DEFAULT_LOGFILE #define DEFAULT_LOGFILE "log/socksd.log" #endif #ifndef DEFAULT_CONFIG #define DEFAULT_CONFIG "socksd.config" #endif static const char *backendaddr = "127.0.0.1"; static unsigned short backendport = 0; /* default is use client's */ struct configurable { unsigned char version; /* initial version byte in the request must match this */ unsigned char nmethods_min; /* minimum number of nmethods to expect */ unsigned char nmethods_max; /* maximum number of nmethods to expect */ unsigned char responseversion; unsigned char responsemethod; unsigned char reqcmd; unsigned char connectrep; unsigned short port; /* backend port */ char addr[32]; /* backend IPv4 numerical */ char user[256]; char password[256]; }; #define CONFIG_VERSION 5 #define CONFIG_NMETHODS_MIN 1 /* unauth, gssapi, auth */ #define CONFIG_NMETHODS_MAX 3 #define CONFIG_RESPONSEVERSION CONFIG_VERSION #define CONFIG_RESPONSEMETHOD 0 /* no auth */ #define CONFIG_REQCMD 1 /* CONNECT */ #define CONFIG_PORT backendport #define CONFIG_ADDR backendaddr #define CONFIG_CONNECTREP 0 static struct configurable config; const char *serverlogfile = DEFAULT_LOGFILE; static const char *configfile = DEFAULT_CONFIG; #ifdef ENABLE_IPV6 static bool use_ipv6 = FALSE; #endif static const char *ipv_inuse = "IPv4"; static unsigned short port = DEFAULT_PORT; static void resetdefaults(void) { logmsg("Reset to defaults"); config.version = CONFIG_VERSION; config.nmethods_min = CONFIG_NMETHODS_MIN; config.nmethods_max = CONFIG_NMETHODS_MAX; config.responseversion = CONFIG_RESPONSEVERSION; config.responsemethod = CONFIG_RESPONSEMETHOD; config.reqcmd = CONFIG_REQCMD; config.connectrep = CONFIG_CONNECTREP; config.port = CONFIG_PORT; strcpy(config.addr, CONFIG_ADDR); strcpy(config.user, "user"); strcpy(config.password, "password"); } static unsigned char byteval(char *value) { unsigned long num = strtoul(value, NULL, 10); return num & 0xff; } static unsigned short shortval(char *value) { unsigned long num = strtoul(value, NULL, 10); return num & 0xffff; } static void getconfig(void) { FILE *fp = fopen(configfile, FOPEN_READTEXT); resetdefaults(); if(fp) { char buffer[512]; logmsg("parse config file"); while(fgets(buffer, sizeof(buffer), fp)) { char key[32]; char value[32]; if(2 == sscanf(buffer, "%31s %31s", key, value)) { if(!strcmp(key, "version")) { config.version = byteval(value); logmsg("version [%d] set", config.version); } else if(!strcmp(key, "nmethods_min")) { config.nmethods_min = byteval(value); logmsg("nmethods_min [%d] set", config.nmethods_min); } else if(!strcmp(key, "nmethods_max")) { config.nmethods_max = byteval(value); logmsg("nmethods_max [%d] set", config.nmethods_max); } else if(!strcmp(key, "backend")) { strcpy(config.addr, value); logmsg("backend [%s] set", config.addr); } else if(!strcmp(key, "backendport")) { config.port = shortval(value); logmsg("backendport [%d] set", config.port); } else if(!strcmp(key, "user")) { strcpy(config.user, value); logmsg("user [%s] set", config.user); } else if(!strcmp(key, "password")) { strcpy(config.password, value); logmsg("password [%s] set", config.password); } /* Methods: o X'00' NO AUTHENTICATION REQUIRED o X'01' GSSAPI o X'02' USERNAME/PASSWORD */ else if(!strcmp(key, "method")) { config.responsemethod = byteval(value); logmsg("method [%d] set", config.responsemethod); } else if(!strcmp(key, "response")) { config.connectrep = byteval(value); logmsg("response [%d] set", config.connectrep); } } } fclose(fp); } } /* do-nothing macro replacement for systems which lack siginterrupt() */ #ifndef HAVE_SIGINTERRUPT #define siginterrupt(x,y) do {} while(0) #endif /* vars used to keep around previous signal handlers */ typedef RETSIGTYPE (*SIGHANDLER_T)(int); #ifdef SIGHUP static SIGHANDLER_T old_sighup_handler = SIG_ERR; #endif #ifdef SIGPIPE static SIGHANDLER_T old_sigpipe_handler = SIG_ERR; #endif #ifdef SIGALRM static SIGHANDLER_T old_sigalrm_handler = SIG_ERR; #endif #ifdef SIGINT static SIGHANDLER_T old_sigint_handler = SIG_ERR; #endif #if defined(SIGBREAK) && defined(WIN32) static SIGHANDLER_T old_sigbreak_handler = SIG_ERR; #endif /* var which if set indicates that the program should finish execution */ SIG_ATOMIC_T got_exit_signal = 0; /* if next is set indicates the first signal handled in exit_signal_handler */ static volatile int exit_signal = 0; /* signal handler that will be triggered to indicate that the program should finish its execution in a controlled manner as soon as possible. The first time this is called it will set got_exit_signal to one and store in exit_signal the signal that triggered its execution. */ static RETSIGTYPE exit_signal_handler(int signum) { int old_errno = errno; if(got_exit_signal == 0) { got_exit_signal = 1; exit_signal = signum; } (void)signal(signum, exit_signal_handler); errno = old_errno; } static void install_signal_handlers(void) { #ifdef SIGHUP /* ignore SIGHUP signal */ old_sighup_handler = signal(SIGHUP, SIG_IGN); if(old_sighup_handler == SIG_ERR) logmsg("cannot install SIGHUP handler: %s", strerror(errno)); #endif #ifdef SIGPIPE /* ignore SIGPIPE signal */ old_sigpipe_handler = signal(SIGPIPE, SIG_IGN); if(old_sigpipe_handler == SIG_ERR) logmsg("cannot install SIGPIPE handler: %s", strerror(errno)); #endif #ifdef SIGALRM /* ignore SIGALRM signal */ old_sigalrm_handler = signal(SIGALRM, SIG_IGN); if(old_sigalrm_handler == SIG_ERR) logmsg("cannot install SIGALRM handler: %s", strerror(errno)); #endif #ifdef SIGINT /* handle SIGINT signal with our exit_signal_handler */ old_sigint_handler = signal(SIGINT, exit_signal_handler); if(old_sigint_handler == SIG_ERR) logmsg("cannot install SIGINT handler: %s", strerror(errno)); else siginterrupt(SIGINT, 1); #endif #if defined(SIGBREAK) && defined(WIN32) /* handle SIGBREAK signal with our exit_signal_handler */ old_sigbreak_handler = signal(SIGBREAK, exit_signal_handler); if(old_sigbreak_handler == SIG_ERR) logmsg("cannot install SIGBREAK handler: %s", strerror(errno)); else siginterrupt(SIGBREAK, 1); #endif } static void restore_signal_handlers(void) { #ifdef SIGHUP if(SIG_ERR != old_sighup_handler) (void)signal(SIGHUP, old_sighup_handler); #endif #ifdef SIGPIPE if(SIG_ERR != old_sigpipe_handler) (void)signal(SIGPIPE, old_sigpipe_handler); #endif #ifdef SIGALRM if(SIG_ERR != old_sigalrm_handler) (void)signal(SIGALRM, old_sigalrm_handler); #endif #ifdef SIGINT if(SIG_ERR != old_sigint_handler) (void)signal(SIGINT, old_sigint_handler); #endif #if defined(SIGBREAK) && defined(WIN32) if(SIG_ERR != old_sigbreak_handler) (void)signal(SIGBREAK, old_sigbreak_handler); #endif } static void loghex(unsigned char *buffer, ssize_t len) { char data[1200]; ssize_t i; unsigned char *ptr = buffer; char *optr = data; ssize_t width = 0; int left = sizeof(data); for(i = 0; i<len && (left >= 0); i++) { msnprintf(optr, left, "%02x", ptr[i]); width += 2; optr += 2; left -= 2; } if(width) logmsg("'%s'", data); } /* RFC 1928, SOCKS5 byte index */ #define SOCKS5_VERSION 0 #define SOCKS5_NMETHODS 1 /* number of methods that is listed */ /* in the request: */ #define SOCKS5_REQCMD 1 #define SOCKS5_RESERVED 2 #define SOCKS5_ATYP 3 #define SOCKS5_DSTADDR 4 /* connect response */ #define SOCKS5_REP 1 #define SOCKS5_BNDADDR 4 /* auth request */ #define SOCKS5_ULEN 1 #define SOCKS5_UNAME 2 #define SOCKS4_CD 1 #define SOCKS4_DSTPORT 2 /* connect to a given IPv4 address, not the one asked for */ static curl_socket_t socksconnect(unsigned short connectport, const char *connectaddr) { int rc; srvr_sockaddr_union_t me; curl_socket_t sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == CURL_SOCKET_BAD) return CURL_SOCKET_BAD; memset(&me.sa4, 0, sizeof(me.sa4)); me.sa4.sin_family = AF_INET; me.sa4.sin_port = htons(connectport); me.sa4.sin_addr.s_addr = INADDR_ANY; Curl_inet_pton(AF_INET, connectaddr, &me.sa4.sin_addr); rc = connect(sock, &me.sa, sizeof(me.sa4)); if(rc) { int error = SOCKERRNO; logmsg("Error connecting to %s:%hu: (%d) %s", connectaddr, connectport, error, strerror(error)); return CURL_SOCKET_BAD; } logmsg("Connected fine to %s:%d", connectaddr, connectport); return sock; } static curl_socket_t socks4(curl_socket_t fd, unsigned char *buffer, ssize_t rc) { unsigned char response[256 + 16]; curl_socket_t connfd; unsigned char cd; unsigned short s4port; if(buffer[SOCKS4_CD] != 1) { logmsg("SOCKS4 CD is not 1: %d", buffer[SOCKS4_CD]); return CURL_SOCKET_BAD; } if(rc < 9) { logmsg("SOCKS4 connect message too short: %d", rc); return CURL_SOCKET_BAD; } if(!config.port) s4port = (unsigned short)((buffer[SOCKS4_DSTPORT]<<8) | (buffer[SOCKS4_DSTPORT + 1])); else s4port = config.port; connfd = socksconnect(s4port, config.addr); if(connfd == CURL_SOCKET_BAD) { /* failed */ cd = 91; } else { /* success */ cd = 90; } response[0] = 0; /* reply version 0 */ response[1] = cd; /* result */ /* copy port and address from connect request */ memcpy(&response[2], &buffer[SOCKS4_DSTPORT], 6); rc = (send)(fd, (char *)response, 8, 0); if(rc != 8) { logmsg("Sending SOCKS4 response failed!"); return CURL_SOCKET_BAD; } logmsg("Sent %d bytes", rc); loghex(response, rc); if(cd == 90) /* now do the transfer */ return connfd; if(connfd != CURL_SOCKET_BAD) sclose(connfd); return CURL_SOCKET_BAD; } static curl_socket_t sockit(curl_socket_t fd) { unsigned char buffer[256 + 16]; unsigned char response[256 + 16]; ssize_t rc; unsigned char len; unsigned char type; unsigned char rep = 0; unsigned char *address; unsigned short socksport; curl_socket_t connfd = CURL_SOCKET_BAD; unsigned short s5port; getconfig(); rc = recv(fd, (char *)buffer, sizeof(buffer), 0); logmsg("READ %d bytes", rc); loghex(buffer, rc); if(buffer[SOCKS5_VERSION] == 4) return socks4(fd, buffer, rc); if(buffer[SOCKS5_VERSION] != config.version) { logmsg("VERSION byte not %d", config.version); return CURL_SOCKET_BAD; } if((buffer[SOCKS5_NMETHODS] < config.nmethods_min) || (buffer[SOCKS5_NMETHODS] > config.nmethods_max)) { logmsg("NMETHODS byte not within %d - %d ", config.nmethods_min, config.nmethods_max); return CURL_SOCKET_BAD; } /* after NMETHODS follows that many bytes listing the methods the client says it supports */ if(rc != (buffer[SOCKS5_NMETHODS] + 2)) { logmsg("Expected %d bytes, got %d", buffer[SOCKS5_NMETHODS] + 2, rc); return CURL_SOCKET_BAD; } logmsg("Incoming request deemed fine!"); /* respond with two bytes: VERSION + METHOD */ response[0] = config.responseversion; response[1] = config.responsemethod; rc = (send)(fd, (char *)response, 2, 0); if(rc != 2) { logmsg("Sending response failed!"); return CURL_SOCKET_BAD; } logmsg("Sent %d bytes", rc); loghex(response, rc); /* expect the request or auth */ rc = recv(fd, (char *)buffer, sizeof(buffer), 0); logmsg("READ %d bytes", rc); loghex(buffer, rc); if(config.responsemethod == 2) { /* RFC 1929 authentication +----+------+----------+------+----------+ |VER | ULEN | UNAME | PLEN | PASSWD | +----+------+----------+------+----------+ | 1 | 1 | 1 to 255 | 1 | 1 to 255 | +----+------+----------+------+----------+ */ unsigned char ulen; unsigned char plen; bool login = TRUE; if(rc < 5) { logmsg("Too short auth input: %d", rc); return CURL_SOCKET_BAD; } if(buffer[SOCKS5_VERSION] != 1) { logmsg("Auth VERSION byte not 1, got %d", buffer[SOCKS5_VERSION]); return CURL_SOCKET_BAD; } ulen = buffer[SOCKS5_ULEN]; if(rc < 4 + ulen) { logmsg("Too short packet for username: %d", rc); return CURL_SOCKET_BAD; } plen = buffer[SOCKS5_ULEN + ulen + 1]; if(rc < 3 + ulen + plen) { logmsg("Too short packet for ulen %d plen %d: %d", ulen, plen, rc); return CURL_SOCKET_BAD; } if((ulen != strlen(config.user)) || (plen != strlen(config.password)) || memcmp(&buffer[SOCKS5_UNAME], config.user, ulen) || memcmp(&buffer[SOCKS5_UNAME + ulen + 1], config.password, plen)) { /* no match! */ logmsg("mismatched credentials!"); login = FALSE; } response[0] = 1; response[1] = login ? 0 : 1; rc = (send)(fd, (char *)response, 2, 0); if(rc != 2) { logmsg("Sending auth response failed!"); return CURL_SOCKET_BAD; } logmsg("Sent %d bytes", rc); loghex(response, rc); if(!login) return CURL_SOCKET_BAD; /* expect the request */ rc = recv(fd, (char *)buffer, sizeof(buffer), 0); logmsg("READ %d bytes", rc); loghex(buffer, rc); } if(rc < 6) { logmsg("Too short for request: %d", rc); return CURL_SOCKET_BAD; } if(buffer[SOCKS5_VERSION] != config.version) { logmsg("Request VERSION byte not %d", config.version); return CURL_SOCKET_BAD; } /* 1 == CONNECT */ if(buffer[SOCKS5_REQCMD] != config.reqcmd) { logmsg("Request COMMAND byte not %d", config.reqcmd); return CURL_SOCKET_BAD; } /* reserved, should be zero */ if(buffer[SOCKS5_RESERVED] != 0) { logmsg("Request COMMAND byte not %d", config.reqcmd); return CURL_SOCKET_BAD; } /* ATYP: o IP V4 address: X'01' o DOMAINNAME: X'03' o IP V6 address: X'04' */ type = buffer[SOCKS5_ATYP]; address = &buffer[SOCKS5_DSTADDR]; switch(type) { case 1: /* 4 bytes IPv4 address */ len = 4; break; case 3: /* The first octet of the address field contains the number of octets of name that follow */ len = buffer[SOCKS5_DSTADDR]; len++; break; case 4: /* 16 bytes IPv6 address */ len = 16; break; default: logmsg("Unknown ATYP %d", type); return CURL_SOCKET_BAD; } if(rc < (4 + len + 2)) { logmsg("Request too short: %d, expected %d", rc, 4 + len + 2); return CURL_SOCKET_BAD; } if(!config.port) { unsigned char *portp = &buffer[SOCKS5_DSTADDR + len]; s5port = (unsigned short)((portp[0]<<8) | (portp[1])); } else s5port = config.port; if(!config.connectrep) connfd = socksconnect(s5port, config.addr); if(connfd == CURL_SOCKET_BAD) { /* failed */ rep = 1; } else { rep = config.connectrep; } /* */ response[SOCKS5_VERSION] = config.responseversion; /* o REP Reply field: o X'00' succeeded o X'01' general SOCKS server failure o X'02' connection not allowed by ruleset o X'03' Network unreachable o X'04' Host unreachable o X'05' Connection refused o X'06' TTL expired o X'07' Command not supported o X'08' Address type not supported o X'09' to X'FF' unassigned */ response[SOCKS5_REP] = rep; response[SOCKS5_RESERVED] = 0; /* must be zero */ response[SOCKS5_ATYP] = type; /* address type */ /* mirror back the original addr + port */ /* address or hostname */ memcpy(&response[SOCKS5_BNDADDR], address, len); /* port number */ memcpy(&response[SOCKS5_BNDADDR + len], &buffer[SOCKS5_DSTADDR + len], sizeof(socksport)); rc = (send)(fd, (char *)response, len + 6, 0); if(rc != (len + 6)) { logmsg("Sending connect response failed!"); return CURL_SOCKET_BAD; } logmsg("Sent %d bytes", rc); loghex(response, rc); if(!rep) return connfd; if(connfd != CURL_SOCKET_BAD) sclose(connfd); return CURL_SOCKET_BAD; } struct perclient { size_t fromremote; size_t fromclient; curl_socket_t remotefd; curl_socket_t clientfd; bool used; }; /* return non-zero when transfer is done */ static int tunnel(struct perclient *cp, fd_set *fds) { ssize_t nread; ssize_t nwrite; char buffer[512]; if(FD_ISSET(cp->clientfd, fds)) { /* read from client, send to remote */ nread = recv(cp->clientfd, buffer, sizeof(buffer), 0); if(nread > 0) { nwrite = send(cp->remotefd, (char *)buffer, (SEND_TYPE_ARG3)nread, 0); if(nwrite != nread) return 1; cp->fromclient += nwrite; } else return 1; } if(FD_ISSET(cp->remotefd, fds)) { /* read from remote, send to client */ nread = recv(cp->remotefd, buffer, sizeof(buffer), 0); if(nread > 0) { nwrite = send(cp->clientfd, (char *)buffer, (SEND_TYPE_ARG3)nread, 0); if(nwrite != nread) return 1; cp->fromremote += nwrite; } else return 1; } return 0; } /* sockfdp is a pointer to an established stream or CURL_SOCKET_BAD if sockfd is CURL_SOCKET_BAD, listendfd is a listening socket we must accept() */ static bool incoming(curl_socket_t listenfd) { fd_set fds_read; fd_set fds_write; fd_set fds_err; curl_socket_t sockfd = CURL_SOCKET_BAD; int maxfd = -99; ssize_t rc; int error = 0; int clients = 0; /* connected clients */ struct perclient c[2]; memset(c, 0, sizeof(c)); if(got_exit_signal) { logmsg("signalled to die, exiting..."); return FALSE; } #ifdef HAVE_GETPPID /* As a last resort, quit if socks5 process becomes orphan. */ if(getppid() <= 1) { logmsg("process becomes orphan, exiting"); return FALSE; } #endif do { int i; FD_ZERO(&fds_read); FD_ZERO(&fds_write); FD_ZERO(&fds_err); sockfd = listenfd; /* there's always a socket to wait for */ FD_SET(sockfd, &fds_read); maxfd = (int)sockfd; for(i = 0; i < 2; i++) { if(c[i].used) { curl_socket_t fd = c[i].clientfd; FD_SET(fd, &fds_read); if((int)fd > maxfd) maxfd = (int)fd; fd = c[i].remotefd; FD_SET(fd, &fds_read); if((int)fd > maxfd) maxfd = (int)fd; } } do { /* select() blocking behavior call on blocking descriptors please */ rc = select(maxfd + 1, &fds_read, &fds_write, &fds_err, NULL); if(got_exit_signal) { logmsg("signalled to die, exiting..."); return FALSE; } } while((rc == -1) && ((error = errno) == EINTR)); if(rc < 0) { logmsg("select() failed with error: (%d) %s", error, strerror(error)); return FALSE; } if((clients < 2) && FD_ISSET(sockfd, &fds_read)) { curl_socket_t newfd = accept(sockfd, NULL, NULL); if(CURL_SOCKET_BAD == newfd) { error = SOCKERRNO; logmsg("accept(%d, NULL, NULL) failed with error: (%d) %s", sockfd, error, strerror(error)); } else { curl_socket_t remotefd; logmsg("====> Client connect, fd %d. Read config from %s", newfd, configfile); remotefd = sockit(newfd); /* SOCKS until done */ if(remotefd == CURL_SOCKET_BAD) { logmsg("====> Client disconnect"); sclose(newfd); } else { struct perclient *cp = &c[0]; logmsg("====> Tunnel transfer"); if(c[0].used) cp = &c[1]; cp->fromremote = 0; cp->fromclient = 0; cp->clientfd = newfd; cp->remotefd = remotefd; cp->used = TRUE; clients++; } } } for(i = 0; i < 2; i++) { struct perclient *cp = &c[i]; if(cp->used) { if(tunnel(cp, &fds_read)) { logmsg("SOCKS transfer completed. Bytes: < %zu > %zu", cp->fromremote, cp->fromclient); sclose(cp->clientfd); sclose(cp->remotefd); cp->used = FALSE; clients--; } } } } while(clients); return TRUE; } static curl_socket_t sockdaemon(curl_socket_t sock, unsigned short *listenport) { /* passive daemon style */ srvr_sockaddr_union_t listener; int flag; int rc; int totdelay = 0; int maxretr = 10; int delay = 20; int attempt = 0; int error = 0; do { attempt++; flag = 1; rc = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *)&flag, sizeof(flag)); if(rc) { error = SOCKERRNO; logmsg("setsockopt(SO_REUSEADDR) failed with error: (%d) %s", error, strerror(error)); if(maxretr) { rc = wait_ms(delay); if(rc) { /* should not happen */ error = errno; logmsg("wait_ms() failed with error: (%d) %s", error, strerror(error)); sclose(sock); return CURL_SOCKET_BAD; } if(got_exit_signal) { logmsg("signalled to die, exiting..."); sclose(sock); return CURL_SOCKET_BAD; } totdelay += delay; delay *= 2; /* double the sleep for next attempt */ } } } while(rc && maxretr--); if(rc) { logmsg("setsockopt(SO_REUSEADDR) failed %d times in %d ms. Error: (%d) %s", attempt, totdelay, error, strerror(error)); logmsg("Continuing anyway..."); } /* When the specified listener port is zero, it is actually a request to let the system choose a non-zero available port. */ #ifdef ENABLE_IPV6 if(!use_ipv6) { #endif memset(&listener.sa4, 0, sizeof(listener.sa4)); listener.sa4.sin_family = AF_INET; listener.sa4.sin_addr.s_addr = INADDR_ANY; listener.sa4.sin_port = htons(*listenport); rc = bind(sock, &listener.sa, sizeof(listener.sa4)); #ifdef ENABLE_IPV6 } else { memset(&listener.sa6, 0, sizeof(listener.sa6)); listener.sa6.sin6_family = AF_INET6; listener.sa6.sin6_addr = in6addr_any; listener.sa6.sin6_port = htons(*listenport); rc = bind(sock, &listener.sa, sizeof(listener.sa6)); } #endif /* ENABLE_IPV6 */ if(rc) { error = SOCKERRNO; logmsg("Error binding socket on port %hu: (%d) %s", *listenport, error, strerror(error)); sclose(sock); return CURL_SOCKET_BAD; } if(!*listenport) { /* The system was supposed to choose a port number, figure out which port we actually got and update the listener port value with it. */ curl_socklen_t la_size; srvr_sockaddr_union_t localaddr; #ifdef ENABLE_IPV6 if(!use_ipv6) #endif la_size = sizeof(localaddr.sa4); #ifdef ENABLE_IPV6 else la_size = sizeof(localaddr.sa6); #endif memset(&localaddr.sa, 0, (size_t)la_size); if(getsockname(sock, &localaddr.sa, &la_size) < 0) { error = SOCKERRNO; logmsg("getsockname() failed with error: (%d) %s", error, strerror(error)); sclose(sock); return CURL_SOCKET_BAD; } switch(localaddr.sa.sa_family) { case AF_INET: *listenport = ntohs(localaddr.sa4.sin_port); break; #ifdef ENABLE_IPV6 case AF_INET6: *listenport = ntohs(localaddr.sa6.sin6_port); break; #endif default: break; } if(!*listenport) { /* Real failure, listener port shall not be zero beyond this point. */ logmsg("Apparently getsockname() succeeded, with listener port zero."); logmsg("A valid reason for this failure is a binary built without"); logmsg("proper network library linkage. This might not be the only"); logmsg("reason, but double check it before anything else."); sclose(sock); return CURL_SOCKET_BAD; } } /* start accepting connections */ rc = listen(sock, 5); if(0 != rc) { error = SOCKERRNO; logmsg("listen(%d, 5) failed with error: (%d) %s", sock, error, strerror(error)); sclose(sock); return CURL_SOCKET_BAD; } return sock; } int main(int argc, char *argv[]) { curl_socket_t sock = CURL_SOCKET_BAD; curl_socket_t msgsock = CURL_SOCKET_BAD; int wrotepidfile = 0; const char *pidname = ".socksd.pid"; bool juggle_again; int error; int arg = 1; while(argc>arg) { if(!strcmp("--version", argv[arg])) { printf("socksd IPv4%s\n", #ifdef ENABLE_IPV6 "/IPv6" #else "" #endif ); return 0; } else if(!strcmp("--pidfile", argv[arg])) { arg++; if(argc>arg) pidname = argv[arg++]; } else if(!strcmp("--config", argv[arg])) { arg++; if(argc>arg) configfile = argv[arg++]; } else if(!strcmp("--backend", argv[arg])) { arg++; if(argc>arg) backendaddr = argv[arg++]; } else if(!strcmp("--backendport", argv[arg])) { arg++; if(argc>arg) backendport = (unsigned short)atoi(argv[arg++]); } else if(!strcmp("--logfile", argv[arg])) { arg++; if(argc>arg) serverlogfile = argv[arg++]; } else if(!strcmp("--ipv6", argv[arg])) { #ifdef ENABLE_IPV6 ipv_inuse = "IPv6"; use_ipv6 = TRUE; #endif arg++; } else if(!strcmp("--ipv4", argv[arg])) { /* for completeness, we support this option as well */ #ifdef ENABLE_IPV6 ipv_inuse = "IPv4"; use_ipv6 = FALSE; #endif arg++; } else if(!strcmp("--port", argv[arg])) { arg++; if(argc>arg) { char *endptr; unsigned long ulnum = strtoul(argv[arg], &endptr, 10); if((endptr != argv[arg] + strlen(argv[arg])) || ((ulnum != 0UL) && ((ulnum < 1025UL) || (ulnum > 65535UL)))) { fprintf(stderr, "socksd: invalid --port argument (%s)\n", argv[arg]); return 0; } port = curlx_ultous(ulnum); arg++; } } else { puts("Usage: socksd [option]\n" " --backend [ipv4 addr]\n" " --backendport [TCP port]\n" " --config [file]\n" " --version\n" " --logfile [file]\n" " --pidfile [file]\n" " --ipv4\n" " --ipv6\n" " --bindonly\n" " --port [port]\n"); return 0; } } #ifdef WIN32 win32_init(); atexit(win32_cleanup); setmode(fileno(stdin), O_BINARY); setmode(fileno(stdout), O_BINARY); setmode(fileno(stderr), O_BINARY); #endif install_signal_handlers(); #ifdef ENABLE_IPV6 if(!use_ipv6) #endif sock = socket(AF_INET, SOCK_STREAM, 0); #ifdef ENABLE_IPV6 else sock = socket(AF_INET6, SOCK_STREAM, 0); #endif if(CURL_SOCKET_BAD == sock) { error = SOCKERRNO; logmsg("Error creating socket: (%d) %s", error, strerror(error)); goto socks5_cleanup; } { /* passive daemon style */ sock = sockdaemon(sock, &port); if(CURL_SOCKET_BAD == sock) { goto socks5_cleanup; } msgsock = CURL_SOCKET_BAD; /* no stream socket yet */ } logmsg("Running %s version", ipv_inuse); logmsg("Listening on port %hu", port); wrotepidfile = write_pidfile(pidname); if(!wrotepidfile) { goto socks5_cleanup; } do { juggle_again = incoming(sock); } while(juggle_again); socks5_cleanup: if((msgsock != sock) && (msgsock != CURL_SOCKET_BAD)) sclose(msgsock); if(sock != CURL_SOCKET_BAD) sclose(sock); if(wrotepidfile) unlink(pidname); restore_signal_handlers(); if(got_exit_signal) { logmsg("============> socksd exits with signal (%d)", exit_signal); /* * To properly set the return status of the process we * must raise the same signal SIGINT or SIGTERM that we * caught and let the old handler take care of it. */ raise(exit_signal); } logmsg("============> socksd quits"); return 0; } |
Changes to jni/curl/tests/server/sws.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
107 108 109 110 111 112 113 | there's an Authorization header */ bool auth; /* Authorization header present in the incoming request */ size_t cl; /* Content-Length of the incoming request */ bool digest; /* Authorization digest header found */ bool ntlm; /* Authorization ntlm header found */ int writedelay; /* if non-zero, delay this number of seconds between writes in the response */ | < < < | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | there's an Authorization header */ bool auth; /* Authorization header present in the incoming request */ size_t cl; /* Content-Length of the incoming request */ bool digest; /* Authorization digest header found */ bool ntlm; /* Authorization ntlm header found */ int writedelay; /* if non-zero, delay this number of seconds between writes in the response */ int skip; /* if non-zero, the server is instructed to not read this many bytes from a PUT/POST request. Ie the client sends N bytes said in Content-Length, but the server only reads N - skip bytes. */ int rcmd; /* doing a special command, see defines above */ int prot_version; /* HTTP version * 10 */ int callcount; /* times ProcessRequest() gets called */ bool connmon; /* monitor the state of the connection, log disconnects */ bool upgrade; /* test case allows upgrade to http2 */ bool upgrade_request; /* upgrade request found and allowed */ bool close; /* similar to swsclose in response: close connection after response is sent */ int done_processing; |
︙ | ︙ | |||
422 423 424 425 426 427 428 | logmsg("enabled upgrade to http2"); req->upgrade = TRUE; } else if(!strncmp(CMD_SWSCLOSE, cmd, strlen(CMD_SWSCLOSE))) { logmsg("swsclose: close this connection after response"); req->close = TRUE; } | < < < < < < < < | 419 420 421 422 423 424 425 426 427 428 429 430 431 432 | logmsg("enabled upgrade to http2"); req->upgrade = TRUE; } else if(!strncmp(CMD_SWSCLOSE, cmd, strlen(CMD_SWSCLOSE))) { logmsg("swsclose: close this connection after response"); req->close = TRUE; } else if(1 == sscanf(cmd, "skip: %d", &num)) { logmsg("instructed to skip this number of bytes %d", num); req->skip = num; } else if(1 == sscanf(cmd, "writedelay: %d", &num)) { logmsg("instructed to delay %d secs between packets", num); req->writedelay = num; |
︙ | ︙ | |||
702 703 704 705 706 707 708 | msnprintf(logbuf, sizeof(logbuf), "Requested GOPHER test number %ld part %ld", req->testno, req->partno); logmsg("%s", logbuf); } } | < < < < < | 691 692 693 694 695 696 697 698 699 700 701 702 703 704 | msnprintf(logbuf, sizeof(logbuf), "Requested GOPHER test number %ld part %ld", req->testno, req->partno); logmsg("%s", logbuf); } } /* **** Persistence **** * * If the request is a HTTP/1.0 one, we close the connection unconditionally * when we're done. * * If the request is a HTTP/1.1 one, we MUST check for a "Connection:" * header that might say "close". If it does, we close a connection when |
︙ | ︙ | |||
840 841 842 843 844 845 846 | authentication negotiation to work in the test suite. */ req->partno += 1; logmsg("Received Basic request, sending back data %ld", req->partno); } if(strstr(req->reqbuf, "Connection: close")) req->open = FALSE; /* close connection after this request */ | < | < < < < < < < < < < < < < | 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 | authentication negotiation to work in the test suite. */ req->partno += 1; logmsg("Received Basic request, sending back data %ld", req->partno); } if(strstr(req->reqbuf, "Connection: close")) req->open = FALSE; /* close connection after this request */ if(req->open && req->prot_version >= 11 && end && req->reqbuf + req->offset > end + strlen(end_of_headers) && !req->cl && (!strncmp(req->reqbuf, "GET", strlen("GET")) || !strncmp(req->reqbuf, "HEAD", strlen("HEAD")))) { /* If we have a persistent connection, HTTP version >= 1.1 and GET/HEAD request, enable pipelining. */ req->checkindex = (end - req->reqbuf) + strlen(end_of_headers); } /* If authentication is required and no auth was provided, end now. This makes the server NOT wait for PUT/POST data and you can then make the test case send a rejection before any such data has been sent. Test case 154 uses this.*/ if(req->auth_req && !req->auth) { |
︙ | ︙ | |||
947 948 949 950 951 952 953 | if(res) logmsg("Error closing file %s error: %d %s", dumpfile, error, strerror(error)); } static void init_httprequest(struct httprequest *req) { | < < < < | | < < | 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 | if(res) logmsg("Error closing file %s error: %d %s", dumpfile, error, strerror(error)); } static void init_httprequest(struct httprequest *req) { req->checkindex = 0; req->offset = 0; req->testno = DOCNUMBER_NOTHING; req->partno = 0; req->connect_request = FALSE; req->open = TRUE; req->auth_req = FALSE; req->auth = FALSE; req->cl = 0; req->digest = FALSE; req->ntlm = FALSE; req->skip = 0; req->writedelay = 0; req->rcmd = RCMD_NORMALREQ; req->prot_version = 0; req->callcount = 0; req->connect_port = 0; req->done_processing = 0; |
︙ | ︙ | |||
987 988 989 990 991 992 993 | char *reqbuf = req->reqbuf; ssize_t got = 0; int overflow = 0; char *pipereq = NULL; size_t pipereq_length = 0; | < < < < < < < < < < < | 951 952 953 954 955 956 957 958 959 960 961 962 963 964 | char *reqbuf = req->reqbuf; ssize_t got = 0; int overflow = 0; char *pipereq = NULL; size_t pipereq_length = 0; if(req->offset >= REQBUFSIZ-1) { /* buffer is already full; do nothing */ overflow = 1; } else { if(pipereq_length && pipereq) { memmove(reqbuf, pipereq, pipereq_length); |
︙ | ︙ | |||
1047 1048 1049 1050 1051 1052 1053 | req->offset += (size_t)got; reqbuf[req->offset] = '\0'; req->done_processing = ProcessRequest(req); if(got_exit_signal) return -1; | < < < < < | | 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 | req->offset += (size_t)got; reqbuf[req->offset] = '\0'; req->done_processing = ProcessRequest(req); if(got_exit_signal) return -1; } if(overflow || (req->offset == REQBUFSIZ-1 && got > 0)) { logmsg("Request would overflow buffer, closing connection"); /* dump request received so far to external file anyway */ reqbuf[REQBUFSIZ-1] = '\0'; fail = 1; } else if(req->offset > REQBUFSIZ-1) { logmsg("Request buffer overflow, closing connection"); /* dump request received so far to external file anyway */ reqbuf[REQBUFSIZ-1] = '\0'; fail = 1; } else reqbuf[req->offset] = '\0'; /* at the end of a request dump it to an external file */ if(fail || req->done_processing) storerequest(reqbuf, req->offset); if(got_exit_signal) return -1; return fail ? -1 : 1; } /* returns -1 on failure */ |
︙ | ︙ | |||
1594 1595 1596 1597 1598 1599 1600 | /* Disable the Nagle algorithm */ curl_socklen_t flag = 1; if(0 != setsockopt(datafd, IPPROTO_TCP, TCP_NODELAY, (void *)&flag, sizeof(flag))) logmsg("====> TCP_NODELAY for client DATA connection failed"); } #endif | < | 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 | /* Disable the Nagle algorithm */ curl_socklen_t flag = 1; if(0 != setsockopt(datafd, IPPROTO_TCP, TCP_NODELAY, (void *)&flag, sizeof(flag))) logmsg("====> TCP_NODELAY for client DATA connection failed"); } #endif init_httprequest(&req2); while(!req2.done_processing) { err = get_request(datafd, &req2); if(err < 0) { /* this socket must be closed, done or not */ break; } |
︙ | ︙ | |||
2277 2278 2279 2280 2281 2282 2283 | if(!wrotepidfile) goto sws_cleanup; /* initialization of httprequest struct is done before get_request(), but the pipelining struct field must be initialized previously to FALSE every time a new connection arrives. */ | < | 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 | if(!wrotepidfile) goto sws_cleanup; /* initialization of httprequest struct is done before get_request(), but the pipelining struct field must be initialized previously to FALSE every time a new connection arrives. */ init_httprequest(&req); for(;;) { fd_set input; fd_set output; struct timeval timeout = {0, 250000L}; /* 250 ms */ curl_socket_t maxfd = (curl_socket_t)-1; |
︙ | ︙ |
Changes to jni/curl/tests/server/util.c.
︙ | ︙ | |||
146 147 148 149 150 151 152 | #ifdef WIN32 /* use instead of perror() on generic windows */ void win32_perror(const char *msg) { char buf[512]; DWORD err = SOCKERRNO; | | | | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | #ifdef WIN32 /* use instead of perror() on generic windows */ void win32_perror(const char *msg) { char buf[512]; DWORD err = SOCKERRNO; if(!FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, LANG_NEUTRAL, buf, sizeof(buf), NULL)) msnprintf(buf, sizeof(buf), "Unknown error %lu (%#lx)", err, err); if(msg) fprintf(stderr, "%s: ", msg); fprintf(stderr, "%s\n", buf); } #endif /* WIN32 */ |
︙ | ︙ |
Changes to jni/curl/tests/sshserver.pl.
1 2 3 4 5 6 7 8 | #!/usr/bin/env perl #*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #!/usr/bin/env perl #*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) 1998 - 2019, 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.haxx.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. # #*************************************************************************** # Starts sshd for use in the SCP and SFTP curl test harness tests. # Also creates the ssh configuration files needed for these tests. use strict; use warnings; use Cwd; use Cwd 'abs_path'; |
︙ | ︙ | |||
77 78 79 80 81 82 83 | use pathhelp; #*************************************************************************** my $verbose = 0; # set to 1 for debugging my $debugprotocol = 0; # set to 1 for protocol debugging my $port = 8999; # our default SCP/SFTP server port | < | 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | use pathhelp; #*************************************************************************** my $verbose = 0; # set to 1 for debugging my $debugprotocol = 0; # set to 1 for protocol debugging my $port = 8999; # our default SCP/SFTP server port my $listenaddr = '127.0.0.1'; # default address on which to listen my $ipvnum = 4; # default IP version of listener address my $idnum = 1; # default ssh daemon instance number my $proto = 'ssh'; # protocol the ssh daemon speaks my $path = getcwd(); # current working directory my $logdir = $path .'/log'; # directory for log files my $username = $ENV{USER}; # default user |
︙ | ︙ | |||
153 154 155 156 157 158 159 | if($ARGV[1]) { if($ARGV[1] =~ /^(\d+)$/) { $port = $1; shift @ARGV; } } } | < < < < < < < < | < | 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 | if($ARGV[1]) { if($ARGV[1] =~ /^(\d+)$/) { $port = $1; shift @ARGV; } } } else { print STDERR "\nWarning: sshserver.pl unknown parameter: $ARGV[0]\n"; } shift @ARGV; } #*************************************************************************** # Default ssh daemon pid file name # if(!$pidfile) { $pidfile = "$path/". server_pidfilename($proto, $ipvnum, $idnum); } #*************************************************************************** # ssh and sftp server log file names # $sshdlog = server_logfilename($logdir, 'ssh', $ipvnum, $idnum); $sftplog = server_logfilename($logdir, 'sftp', $ipvnum, $idnum); #*************************************************************************** # Logging level for ssh server and client # my $loglevel = $debugprotocol?'DEBUG3':'DEBUG2'; |
︙ | ︙ | |||
222 223 224 225 226 227 228 | #*************************************************************************** # Find out ssh daemon version info # my ($sshdid, $sshdvernum, $sshdverstr, $sshderror) = sshversioninfo($sshd); if(!$sshdid) { # Not an OpenSSH or SunSSH ssh daemon logmsg $sshderror if($verbose); | | | 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | #*************************************************************************** # Find out ssh daemon version info # my ($sshdid, $sshdvernum, $sshdverstr, $sshderror) = sshversioninfo($sshd); if(!$sshdid) { # Not an OpenSSH or SunSSH ssh daemon logmsg $sshderror if($verbose); logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later'; exit 1; } logmsg "ssh server found $sshd is $sshdverstr" if($verbose); #*************************************************************************** # ssh daemon command line options we might use and version support |
︙ | ︙ | |||
251 252 253 254 255 256 257 | #*************************************************************************** # Verify minimum ssh daemon version # if((($sshdid =~ /OpenSSH/) && ($sshdvernum < 299)) || (($sshdid =~ /SunSSH/) && ($sshdvernum < 100))) { | | | 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | #*************************************************************************** # Verify minimum ssh daemon version # if((($sshdid =~ /OpenSSH/) && ($sshdvernum < 299)) || (($sshdid =~ /SunSSH/) && ($sshdvernum < 100))) { logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later'; exit 1; } #*************************************************************************** # Find out sftp server plugin canonical file name # |
︙ | ︙ | |||
306 307 308 309 310 311 312 | #*************************************************************************** # Find out ssh client version info # my ($sshid, $sshvernum, $sshverstr, $ssherror) = sshversioninfo($ssh); if(!$sshid) { # Not an OpenSSH or SunSSH ssh client logmsg $ssherror if($verbose); | | | 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 | #*************************************************************************** # Find out ssh client version info # my ($sshid, $sshvernum, $sshverstr, $ssherror) = sshversioninfo($ssh); if(!$sshid) { # Not an OpenSSH or SunSSH ssh client logmsg $ssherror if($verbose); logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later'; exit 1; } logmsg "ssh client found $ssh is $sshverstr" if($verbose); #*************************************************************************** # ssh client command line options we might use and version support |
︙ | ︙ | |||
337 338 339 340 341 342 343 | #*************************************************************************** # Verify minimum ssh client version # if((($sshid =~ /OpenSSH/) && ($sshvernum < 299)) || (($sshid =~ /SunSSH/) && ($sshvernum < 100))) { | | | 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | #*************************************************************************** # Verify minimum ssh client version # if((($sshid =~ /OpenSSH/) && ($sshvernum < 299)) || (($sshid =~ /SunSSH/) && ($sshvernum < 100))) { logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later'; exit 1; } #*************************************************************************** # ssh keygen command line options we actually use and version support # |
︙ | ︙ | |||
860 861 862 863 864 865 866 | push @cfgarr, '#'; push @cfgarr, "Port $port"; push @cfgarr, "HostName $listenaddr"; push @cfgarr, "User $username"; push @cfgarr, 'Protocol 2'; push @cfgarr, '#'; push @cfgarr, "BindAddress $listenaddr"; | < | 850 851 852 853 854 855 856 857 858 859 860 861 862 863 | push @cfgarr, '#'; push @cfgarr, "Port $port"; push @cfgarr, "HostName $listenaddr"; push @cfgarr, "User $username"; push @cfgarr, 'Protocol 2'; push @cfgarr, '#'; push @cfgarr, "BindAddress $listenaddr"; push @cfgarr, '#'; push @cfgarr, "IdentityFile $identity_config"; push @cfgarr, "UserKnownHostsFile $knownhosts_config"; push @cfgarr, '#'; push @cfgarr, 'BatchMode yes'; push @cfgarr, 'ChallengeResponseAuthentication no'; push @cfgarr, 'CheckHostIP no'; |
︙ | ︙ |
Changes to jni/curl/tests/testcurl.1.
︙ | ︙ | |||
16 17 18 19 20 21 22 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .\" * furnished to do so, under the terms of the COPYING file. .\" * .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * .\" ************************************************************************** .\" .TH testcurl.pl 1 "October 22, 2016" "Curl 7.65.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/unit1304.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
203 204 205 206 207 208 209 | fail_unless(strncmp(password, "none", 4) == 0, "password should be 'none'"); fail_unless(password_changed, "password should have been changed"); abort_unless(login != NULL, "returned NULL!"); fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'"); fail_unless(!login_changed, "login should not have been changed"); | < < < < | 203 204 205 206 207 208 209 210 | fail_unless(strncmp(password, "none", 4) == 0, "password should be 'none'"); fail_unless(password_changed, "password should have been changed"); abort_unless(login != NULL, "returned NULL!"); fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'"); fail_unless(!login_changed, "login should not have been changed"); UNITTEST_STOP |
Changes to jni/curl/tests/unit/unit1398.c.
1 2 3 4 5 6 7 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2019, 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.haxx.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 |
︙ | ︙ | |||
70 71 72 73 74 75 76 | /* larger width that string length */ rc = curl_msnprintf(output, 8, "%8s", str); fail_unless(rc == 8, "return code should be 8"); fail_unless(!strcmp(output, " bu"), "wrong output"); /* output a number in a limited output */ rc = curl_msnprintf(output, 4, "%d", 10240); | < | 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | /* larger width that string length */ rc = curl_msnprintf(output, 8, "%8s", str); fail_unless(rc == 8, "return code should be 8"); fail_unless(!strcmp(output, " bu"), "wrong output"); /* output a number in a limited output */ rc = curl_msnprintf(output, 4, "%d", 10240); fail_unless(rc == 4, "return code should be 4"); fail_unless(!strcmp(output, "102"), "wrong output"); /* padded strings */ rc = curl_msnprintf(output, 16, "%8s%8s", str, str); fail_unless(rc == 16, "return code should be 16"); fail_unless(!strcmp(output, " bug bu"), "wrong output"); |
︙ | ︙ |
Changes to jni/curl/tests/unit/unit1607.c.
︙ | ︙ | |||
27 28 29 30 31 32 33 | /* retrieves ip address and port from a sockaddr structure. note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */ bool getaddressinfo(struct sockaddr *sa, char *addr, long *port); #include "memdebug.h" /* LAST include file */ | < < < < < < < < < < < < < < < < | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /* retrieves ip address and port from a sockaddr structure. note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */ bool getaddressinfo(struct sockaddr *sa, char *addr, long *port); #include "memdebug.h" /* LAST include file */ 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 { /* host:port:address[,address]... */ const char *optval; |
︙ | ︙ | |||
118 119 120 121 122 123 124 | }, }; UNITTEST_START int i; int testnum = sizeof(tests) / sizeof(struct testcase); | | > > > > > | | > | > | | 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | }, }; UNITTEST_START int i; int testnum = sizeof(tests) / sizeof(struct testcase); for(i = 0; i < testnum; ++i) { int j; int addressnum = sizeof(tests[i].address) / sizeof(*tests[i].address); struct Curl_addrinfo *addr; struct Curl_dns_entry *dns; struct curl_slist *list; void *entry_id; bool problem = false; struct Curl_multi *multi; struct Curl_easy *easy = curl_easy_init(); if(!easy) { curl_global_cleanup(); return CURLE_OUT_OF_MEMORY; } /* create a multi handle and add the easy handle to it so that the hostcache is setup */ multi = curl_multi_init(); curl_multi_add_handle(multi, easy); list = curl_slist_append(NULL, tests[i].optval); if(!list) goto unit_test_abort; curl_easy_setopt(easy, CURLOPT_RESOLVE, list); Curl_loadhostpairs(easy); |
︙ | ︙ | |||
210 211 212 213 214 215 216 | problem = true; break; } addr = addr->ai_next; } | | > | 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | problem = true; break; } addr = addr->ai_next; } curl_easy_cleanup(easy); curl_multi_cleanup(multi); curl_slist_free_all(list); if(problem) { unitfail++; continue; } } UNITTEST_STOP |
Changes to jni/curl/tests/unit/unit1608.c.
︙ | ︙ | |||
61 62 63 64 65 66 67 68 69 70 71 72 73 | if(CURLE_OK != Curl_shuffle_addr(easy, &addrhead)) break; if(addrhead != addrs) break; } curl_easy_cleanup(easy); abort_unless(addrhead != addrs, "addresses are not being reordered"); return 0; } UNITTEST_STOP | > | 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | if(CURLE_OK != Curl_shuffle_addr(easy, &addrhead)) break; if(addrhead != addrs) break; } curl_easy_cleanup(easy); curl_global_cleanup(); abort_unless(addrhead != addrs, "addresses are not being reordered"); return 0; } UNITTEST_STOP |
Changes to jni/curl/tests/unit/unit1609.c.
︙ | ︙ | |||
27 28 29 30 31 32 33 | /* retrieves ip address and port from a sockaddr structure. note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */ bool getaddressinfo(struct sockaddr *sa, char *addr, long *port); #include "memdebug.h" /* LAST include file */ | < < < < < < < < < < < < < < < < | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /* retrieves ip address and port from a sockaddr structure. note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */ bool getaddressinfo(struct sockaddr *sa, char *addr, long *port); #include "memdebug.h" /* LAST include file */ 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 { /* host:port:address[,address]... */ const char *optval; |
︙ | ︙ | |||
113 114 115 116 117 118 119 120 121 122 123 124 125 | }, { "test.com:80:127.0.0.2", "test.com", 80, { "127.0.0.2", } }, }; UNITTEST_START int i; int testnum = sizeof(tests) / sizeof(struct testcase); /* important: we setup cache outside of the loop and also clean cache after the loop. In contrast,for example, test 1607 sets up and cleans cache on each iteration. */ | > < < < | > > > > > > > > > > | 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 | }, { "test.com:80:127.0.0.2", "test.com", 80, { "127.0.0.2", } }, }; UNITTEST_START { int i; int testnum = sizeof(tests) / sizeof(struct testcase); /* important: we setup cache outside of the loop and also clean cache after the loop. In contrast,for example, test 1607 sets up and cleans cache on each iteration. */ for(i = 0; i < testnum; ++i) { int j; int addressnum = sizeof (tests[i].address) / sizeof (*tests[i].address); struct Curl_addrinfo *addr; struct Curl_dns_entry *dns; struct curl_slist *list; void *entry_id; bool problem = false; struct Curl_multi *multi; struct Curl_easy *easy = curl_easy_init(); if(!easy) { curl_global_cleanup(); return CURLE_OUT_OF_MEMORY; } /* create a multi handle and add the easy handle to it so that the hostcache is setup */ multi = curl_multi_init(); curl_multi_add_handle(multi, easy); list = curl_slist_append(NULL, tests[i].optval); if(!list) goto unit_test_abort; curl_easy_setopt(easy, CURLOPT_RESOLVE, list); |
︙ | ︙ | |||
201 202 203 204 205 206 207 208 209 210 211 212 213 214 | problem = true; break; } addr = addr->ai_next; } curl_slist_free_all(list); if(problem) { unitfail++; continue; } } | > > > | < < | 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 | problem = true; break; } addr = addr->ai_next; } curl_easy_cleanup(easy); Curl_hash_destroy(&multi->hostcache); curl_multi_cleanup(multi); curl_slist_free_all(list); if(problem) { unitfail++; continue; } } } UNITTEST_STOP |
Changes to jni/curl/tests/unit/unit1621.c.
︙ | ︙ | |||
31 32 33 34 35 36 37 | return CURLE_OK; } static void unit_stop(void) { } | | > > | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | return CURLE_OK; } static void unit_stop(void) { } #if defined(__MINGW32__) || \ (!defined(HAVE_FSETXATTR) && \ (!defined(__FreeBSD_version) || (__FreeBSD_version < 500000))) UNITTEST_START { return 0; } UNITTEST_STOP #else |
︙ | ︙ |
Changes to jni/curl/tests/unit/unit1653.c.
︙ | ︙ | |||
164 165 166 167 168 169 170 | free_and_clear(ipv6port); curl_url_cleanup(u); /* Incorrect zone index syntax */ u = curl_url(); if(!u) goto fail; | | | | 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 | free_and_clear(ipv6port); curl_url_cleanup(u); /* Incorrect zone index syntax */ u = curl_url(); if(!u) goto fail; ipv6port = strdup("[fe80::250:56ff:fea7:da15!25eth3]:80"); if(!ipv6port) goto fail; ret = Curl_parse_port(u, ipv6port); fail_unless(ret != CURLUE_OK, "Curl_parse_port returned non-error"); free_and_clear(ipv6port); curl_url_cleanup(u); /* Non percent-encoded zone index */ u = curl_url(); if(!u) goto fail; ipv6port = strdup("[fe80::250:56ff:fea7:da15%eth3]:80"); if(!ipv6port) goto fail; ret = Curl_parse_port(u, ipv6port); fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error"); fail: free(ipv6port); curl_url_cleanup(u); } UNITTEST_STOP |
Changes to jni/curl/winbuild/Makefile.vc.
︙ | ︙ | |||
164 165 166 167 168 169 170 | !ENDIF !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static" USE_MBEDTLS = true MBEDTLS = $(WITH_MBEDTLS) !ENDIF | < < < < < < | 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | !ENDIF !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static" USE_MBEDTLS = true MBEDTLS = $(WITH_MBEDTLS) !ENDIF !IF "$(WITH_CARES)"=="dll" USE_CARES = true CARES = dll !ELSEIF "$(WITH_CARES)"=="static" USE_CARES = true CARES = static !ENDIF |
︙ | ︙ |
Changes to jni/curl/winbuild/MakefileBuild.vc.
︙ | ︙ | |||
474 475 476 477 478 479 480 481 482 483 484 485 486 487 | LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS) !ENDIF !IF "$(GEN_PDB)"=="true" CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)" LFLAGS = $(LFLAGS) $(LFLAGS_PDB) !ENDIF LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\ # # curl.exe | > > > > > > | 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 | LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS) !ENDIF !IF "$(GEN_PDB)"=="true" CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)" LFLAGS = $(LFLAGS) $(LFLAGS_PDB) !ENDIF !IF ( "$(USE_SSL)"=="true" && "$(USE_WINSSL)"=="true" ) \ || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \ || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WINSSL)"=="true" ) CFLAGS = $(CFLAGS) /DCURL_WITH_MULTI_SSL !ENDIF LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\ # # curl.exe |
︙ | ︙ |
Changes to jni/curl/winbuild/gen_resp_file.bat.
|
| | > > > > > > > > > > > > > > > > > > > > > > | > | | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @echo off rem *************************************************************************** rem * _ _ ____ _ rem * Project ___| | | | _ \| | rem * / __| | | | |_) | | rem * | (__| |_| | _ <| |___ rem * \___|\___/|_| \_\_____| rem * rem * Copyright (C) 2011 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. rem * rem * This software is licensed as described in the file COPYING, which rem * you should have received as part of this distribution. The terms rem * are also available at https://curl.haxx.se/docs/copyright.html. rem * rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell rem * copies of the Software, and permit persons to whom the Software is rem * furnished to do so, under the terms of the COPYING file. rem * rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY rem * KIND, either express or implied. rem * rem *************************************************************************** if exist %OUTFILE% ( del %OUTFILE% ) echo %MACRO_NAME% = \> %OUTFILE% for %%i in (%*) do echo %DIROBJ%/%%i \>> %OUTFILE% echo. >> %OUTFILE% :END |