|
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