tornado icon indicating copy to clipboard operation
tornado copied to clipboard

self.request.get_ssl_certificate() getting error in WebSocketHandler

Open gnpkrish opened this issue 4 years ago • 2 comments

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/tornado/websocket.py", line 954, in _accept_connection
    open_result = handler.open(*handler.open_args, **handler.open_kwargs)
  File "/code/dpopgateway/dpopgateway/dpop_views/dpop_server_main.py", line 36, in open
    print(self.request.get_ssl_certificate())
  File "/usr/local/lib/python3.6/dist-packages/tornado/httputil.py", line 445, in get_ssl_certificate
    return self.connection.stream.socket.getpeercert(  # type: ignore
AttributeError: 'NoneType' object has no attribute 'socket'

gnpkrish avatar Feb 20 '21 08:02 gnpkrish

Through ws_connection I am able to access the getpeercert in WebSocketHandler.

class WSHandler(websocket.WebSocketHandler):
    def open(self):
        peer_cert = self.ws_connection.stream.socket.getpeercert()
        print(peer_cert)

gnpkrish avatar Feb 21 '21 13:02 gnpkrish

Reopening this because I think it's a useful feature request. RequestHandler methods that reach into the stream could be overridden in WebSocketHandler to get the stream elsewhere.

bdarnell avatar Mar 13 '21 22:03 bdarnell