|
689 | 689 |
|
690 | 690 | resp)))) |
691 | 691 |
|
692 | | -(defn- client-ssl-context |
693 | | - "Returns a client SslContext, or nil if none is requested. |
694 | | - Validates the ALPN setup." |
695 | | - ^SslContext |
696 | | - [ssl? ssl-context http-versions insecure?] |
697 | | - (if ssl? |
698 | | - (if ssl-context |
699 | | - (-> ssl-context |
700 | | - (common/ensure-consistent-alpn-config http-versions) |
701 | | - (netty/coerce-ssl-client-context)) |
702 | | - (let [ssl-ctx-opts {:application-protocol-config (netty/application-protocol-config http-versions)}] |
703 | | - (if insecure? |
704 | | - (netty/insecure-ssl-client-context ssl-ctx-opts) |
705 | | - (netty/ssl-client-context ssl-ctx-opts)))) |
706 | | - nil)) |
707 | | - |
708 | 692 | (defn- setup-http1-client |
709 | 693 | [{:keys [on-closed response-executor] |
710 | 694 | :as opts}] |
|
761 | 745 | bootstrap-transform |
762 | 746 | name-resolver |
763 | 747 | keep-alive? |
764 | | - insecure? |
765 | | - ssl-context |
766 | 748 | ssl-endpoint-id-alg |
767 | 749 | response-buffer-size |
768 | 750 | epoll? |
769 | 751 | transport |
770 | 752 | proxy-options |
771 | 753 | pipeline-transform |
772 | 754 | log-activity |
773 | | - http-versions |
774 | 755 | force-h2c? |
775 | 756 | on-closed |
776 | 757 | connect-timeout] |
|
784 | 765 | epoll? false |
785 | 766 | name-resolver :default |
786 | 767 | log-activity :debug |
787 | | - http-versions [:http1] |
788 | 768 | force-h2c? false} |
789 | 769 | :as opts}] |
790 | 770 |
|
|
798 | 778 | (get proxy-options :keep-alive? true)))) |
799 | 779 | authority (str host (when explicit-port? (str ":" port))) |
800 | 780 |
|
801 | | - ssl-context (client-ssl-context ssl? ssl-context http-versions insecure?) |
802 | | - |
803 | 781 | logger (cond |
804 | 782 | (instance? LoggingHandler log-activity) log-activity |
805 | 783 | (some? log-activity) (netty/activity-logger "aleph-client" log-activity) |
|
810 | 788 | (assoc opts |
811 | 789 | :proxy-connected proxy-connected |
812 | 790 | :ssl? ssl? |
813 | | - :ssl-context ssl-context |
814 | 791 | :ssl-endpoint-id-alg ssl-endpoint-id-alg |
815 | 792 | :remote-address remote-address |
816 | 793 | :raw-stream? raw-stream? |
|
868 | 845 | :raw-stream? raw-stream? |
869 | 846 | :remote-address remote-address |
870 | 847 | :response-buffer-size response-buffer-size |
871 | | - :ssl-context ssl-context |
872 | 848 | :ssl? ssl?)] |
873 | 849 |
|
874 | 850 | (log/debug (str "Using HTTP protocol: " protocol) |
|
935 | 911 | :response-buffer-size response-buffer-size |
936 | 912 | :t0 t0}))))))))))))))) |
937 | 913 |
|
| 914 | +(defn ssl-context |
| 915 | + "Coerces a client SSL context, including enforcement of its ALPN setup." |
| 916 | + (^SslContext [http-versions] (ssl-context nil http-versions false)) |
| 917 | + (^SslContext [ssl-ctx http-versions insecure?] |
| 918 | + (if ssl-ctx |
| 919 | + (-> ssl-ctx |
| 920 | + (common/ensure-consistent-alpn-config http-versions) |
| 921 | + (netty/coerce-ssl-client-context)) |
| 922 | + (let [ssl-ctx-opts {:application-protocol-config (netty/application-protocol-config http-versions)}] |
| 923 | + (if insecure? |
| 924 | + (netty/insecure-ssl-client-context ssl-ctx-opts) |
| 925 | + (netty/ssl-client-context ssl-ctx-opts)))))) |
| 926 | + |
938 | 927 |
|
939 | 928 |
|
940 | 929 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
970 | 959 | (InetSocketAddress/createUnresolved "www.google.com" (int 443)) |
971 | 960 | true |
972 | 961 | {:on-closed #(println "http conn closed") |
973 | | - :http-versions [:http1]})) |
| 962 | + :ssl-context (ssl-context [:http1])})) |
974 | 963 |
|
975 | 964 | (conn {:request-method :get})) |
976 | 965 | ) |
0 commit comments