� ���g�)��t�ddlZddlZddlZddlmZddlmZddlmZddlmZGd�dej��Z dS) �N�)� base_socket)� exceptions)�packet)�payloadc�R�eZdZd�Zd�Zd�Zd�Zd�Zd�Zdd �Z d �Z d �Z d �Z d�Z d S)� AsyncSocketc��DK� tj|j���|jj|jjz���d{V��g}|j���n2#tjtj f$rtj ���wxYw|dgkrgS |j� ��}|j���|�|j� d��n,|�|��n#tj $rYnwxYw�||S)z'Wait for packets to send to the client.N)�asyncio�wait_for�queue�get�server� ping_interval� ping_timeout� task_done� TimeoutError�CancelledErrorr� QueueEmpty� get_nowait� put_nowait�append)�self�packets�pkts �e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/engineio/async_socket.py�pollzAsyncSocket.poll s]���� *�$�-�� ��� � �� �)�D�K�,D�D�F�F�F�F�F�F�F�F�G�G� �J� � � "� "� "� "���$�g�&<�=� *� *� *��'�)�)� )� *���� �t�f� � ��I� � ��j�+�+�-�-��� �$�$�&�&�&��;��J�)�)�$�/�/�/�����s�#�#�#�#���%� � � ��� ���� ��s%�A#A(�(/B�%AD �4D � D�Dc ���K�|jj�d|jtj|jt|jt��s|jnd��|jtj kr|� ��dS|jtj kr:|j� d|j|j|jj����d{V��dS|jtjkr9|�t jtj�����d{V��dS|jtjkr/|�dd|jjj����d{V��dSt/j���) zReceive packet from the client.z%s: Received packet %s data %s�<binary>�message�� run_asyncNFT��wait�abort�reason)r�logger�info�sidr� packet_names� packet_type� isinstance�data�bytes�PONG� schedule_ping�MESSAGE�_trigger_event�async_handlers�UPGRADE�send�Packet�NOOP�CLOSE�closer&�CLIENT_DISCONNECTr�UnknownPacketError�rrs r�receivezAsyncSocket.receive#s����� � ���� @� $��&�*=�c�o�*N�0:�3�8�U�0K�0K�!0����%/� 1� 1� 1� �?�f�k� )� )� � � � � � � � � �_��� .� .��+�,�,��4�8�S�X��+�4�-�6�6� 6� 6� 6� 6� 6� 6� 6� 6� 6��_��� .� .��)�)�F�M�&�+�6�6�7�7� 7� 7� 7� 7� 7� 7� 7� 7� 7� �_�� � ,� ,��*�*�%�t�$(�K�$6�$H��J�J� J� J� J� J� J� J� J� J� J��/�1�1� 1�c��FK�|jrtj���|jr}t j��|jz |jjkrT|jj�d|j ��|� dd|jj j ����d{V��dSdS)z,Make sure the client is still sending pings.z"%s: Client is gone, closing socketFr#NT) �closedr�SocketIsClosedError� last_ping�timerrr'r(r)r9r&� PING_TIMEOUT�rs r�check_ping_timeoutzAsyncSocket.check_ping_timeout7s����� �;� 3��0�2�2� 2� �>� �� � � �d�n�,�t�{�/G�G�G� �K� � #� #�$H�$(�H� .� .� .� �*�*�%�u�$(�K�$6�$C��E�E� E� E� E� E� E� E� E��5��tr>c ��<K�|����d{V��sdS|j�|���d{V��|jj�d|jtj|j t|j t��s|j nd��dS)zSend a packet to the client.Nz%s: Sending packet %s data %sr) rFr �putrr'r(r)rr*r+r,r-r.r<s rr5zAsyncSocket.sendGs������,�,�.�.�.�.�.�.�.�.� &� �F��*�.�.��%�%� %� %� %� %� %� %� %� � ���� ?� $��&�*=�c�o�*N�0:�3�8�U�0K�0K�!0����%/� 1� 1� 1� 1� 1r>c��K�d�|�dd������d��D��}|�dd�����}d|vrQ||jvrH|jj�d|j|��t|d|z��|���d {V��S|j s|j rtj tj ��gS |����d {V��}ns#tj$rat#j��}|�d |jjj� ���d {V��|d �|d ���wxYw|S)z2Handle a long-polling GET request from the client.c�6�g|]}|�����S�)�strip)�.0�ss r� <listcomp>z2AsyncSocket.handle_get_request.<locals>.<listcomp>Ts6��L�L�L�� �G�G�I�I�L�L�Lr>�HTTP_CONNECTION��,� HTTP_UPGRADE�upgradez%%s: Received request to upgrade to %s� _upgrade_NF)r$r&r�)r�lower�split�upgrade_protocolsrr'r(r)�getattr� upgrading�upgradedrr6r7rrr�sys�exc_infor9r&�TRANSPORT_ERROR�with_traceback)r�environ� connections� transportr�excs r�handle_get_requestzAsyncSocket.handle_get_requestRs�����L�L��[�[�!2�B�7�7�=�=�?�?�E�E�c�J�J�L�L�L� ��K�K���3�3�9�9�;�;� � � � #� #� �T�5K�(K�(K� �K� � #� #�$K�$(�H�i� 9� 9� 9�?���{�Y�'>�?�?��H�H�H�H�H�H�H�H� H� �>� 0�T�]� 0��M�&�+�.�.�/� /� 0� �I�I�K�K�'�'�'�'�'�'�G�G���$� 0� 0� 0��,�.�.�C��*�*�%�$(�K�$6�$F��H�H� H� H� H� H� H� H� H��a�&�'�'��A��/�/� /�  0���� �s �3D�A0E>c��rK�t|�dd����}||jjkrt j���|d�|���d{V���d��}tj |���}|j D]}|� |���d{V���dS)z3Handle a long-polling POST request from the client.�CONTENT_LENGTH�0z wsgi.inputNzutf-8)�encoded_payload) �intrr�max_http_buffer_sizer�ContentTooLongError�read�decoder�Payloadrr=)rra�length�body�prs r�handle_post_requestzAsyncSocket.handle_post_requestis������W�[�[�!1�3�7�7�8�8�� �D�K�4� 4� 4��0�2�2� 2�!�,�/�4�4�V�<�<�<�<�<�<�<�<�D�D�W�M�M�D����5�5�5�A��y� (� (���l�l�3�'�'�'�'�'�'�'�'�'�'� (� (r>TFNc��vK�|js�|js�d|_|j�d|j|p|jjjd����d{V��|s7|�tj tj �����d{V��d|_|r%|j � ���d{V��dSdSdSdS)zClose the socket connection.T� disconnectFr!N) r@�closingrr2r)r&�SERVER_DISCONNECTr5rr6r8r �join)rr$r%r&s rr9zAsyncSocket.closets�����{� (�4�<� (��D�L��+�,�,��d�h��>�$�+�,�>��-�!�!� !� !� !� !� !� !� !�� =��i�i�� �f�l� ;� ;�<�<�<�<�<�<�<�<�<��D�K�� (��j�o�o�'�'�'�'�'�'�'�'�'�'�'� (� (� (� (� (� (r>c�D�|j�|j��dS�N)r�start_background_task� _send_pingrEs rr0zAsyncSocket.schedule_ping�s �� � �)�)�$�/�:�:�:�:�:r>c��"K�d|_tj|jj���d{V��|jsX|jsStj��|_|�tj tj �����d{V��dSdSdSrz) rBr �sleeprrrvr@rCr5rr6�PINGrEs rr|zAsyncSocket._send_ping�s���������m�D�K�5�6�6�6�6�6�6�6�6�6��|� 8�D�K� 8�!�Y�[�[�D�N��)�)�F�M�&�+�6�6�7�7� 7� 7� 7� 7� 7� 7� 7� 7� 7� 8� 8� 8� 8r>c���K�|jrtd���|jjd�|j���S|jjd|j|j��}||���d{V��S)z1Upgrade the connection from polling to websocket.z Socket has been upgraded already� websocketN)r\�OSErrorr�_async� _bad_request�_websocket_handler)rra�wss r�_upgrade_websocketzAsyncSocket._upgrade_websocket�s����� �=� >��<�=�=� =� �;� �k� *� 2��;�+�+�-�-� -� ,�T�[� � � ,� � #�T�[�2�2���R��[�[� � � � � � � r>c��F��K���fd�}�j�r�d�_ |���d{V��}n#t$rYdSwxYwtj|���}|jtjks |jdkr.�jj � d�j ��d�_dS�� tjtj d���������d{V���j�tjtj�����d{V�� |���d{V��}n#t$r d�_YdSwxYwtj|���}|jtjkr6d�_�jj � d �j |��d�_dSd�_d�_nd�_d�_��fd �}t)j|����}�jj � d �j �� d}t)j|����} t)j|�jj�jjz���d{V��}n4#t(j$r  |���n#YnxYwYn�Yn�xYw|�n�tj|���} ��|���d{V��ne#t8j$rYnTt8j$r"�jj � d ��Yn'�jj �d ��YnxYw��"�j�d���d{V��t)j|d����d{V����dd�jj j!����d{V��dS)z*Engine.IO handler for websocket transport.c���K������d{V��}|r,t|���jjkrt d���|S)Nzpacket is too large)r$�lenrrk� ValueError)r-rr�s ��r�websocket_waitz6AsyncSocket._websocket_handler.<locals>.websocket_wait�sQ����������?�?�?�?�?�?�D�� 8��D� � �D�K�$D�D�D� �!6�7�7�7��Kr>TN)�encoded_packet�probez,%s: Failed websocket upgrade, no PING packetF)r-zK%s: Failed websocket upgrade, expected UPGRADE packet, received %s instead.c��&�K� d} �����d{V��}n#tj$rYnCwxYw|sn< |D]/}��|������d{V���0n#YnxYw�r�����d{V��dSrz)rrrr5�encoder9)rrrr�s ��r�writerz.AsyncSocket._websocket_handler.<locals>.writer�s������ ����$(�I�I�K�K�/�/�/�/�/�/�G�G��!�,�����E���������&�4�4�� �g�g�c�j�j�l�l�3�3�3�3�3�3�3�3�3�3�4����E���� ��(�(�*�*� � � � � � � � � s�#�5�5�2A/�/A3z#%s: Upgrade to websocket successfulz!Receive error -- socket is closedzUnknown receive error)�timeoutr#)"� connectedr[r�rr6r+rr-rr'r(r)r5r/r�r rHr7r4r\r � ensure_futurer rrr� exceptionr=rr;rAr9r&�TRANSPORT_CLOSE) rr�r�r� decoded_pktr�� writer_taskrr� wait_tasks `` rr�zAsyncSocket._websocket_handler�s������� � � � � � � �>�$ !�!�D�N� �*�N�,�,�,�,�,�,�,�,����� � � ���� ���� �-�s�;�;�;�K��&�&�+�5�5��$��/�/�� �"�'�'�B�D�H�N�N�N�!&������'�'�&�-�� �'�B�B�B�I�I�K�K�L�L� L� L� L� L� L� L� L��*�.�.���v�{�!;�!;�<�<� <� <� <� <� <� <� <� �*�N�,�,�,�,�,�,�,�,����� � � �!&������ ����!�-�s�;�;�;�K��&�&�.�8�8� %�� �� �"�'�'�,��H�c�#�#�#�"'����� �D�M�"�D�N�N�!�D�N� �D�M� � � � � � �"�+�F�F�H�H�5�5� � � ���� 1�4�8� =� =� =�$ F��A��-�n�n�.>�.>�?�?�I� �!�*���K�-�� �0H�H�J�J�J�J�J�J�J�J�����)� � � ���'�'�)�)�)�)����D������ �������y���-�q�1�1�1�C� F��l�l�3�'�'�'�'�'�'�'�'�'�'���0� � � ����1� � � �� �"�'�'�(K�L�L�L��� F�� �"�,�,�-D�E�E�E�E�E����I$ F�L�j�n�n�T�"�"�"�"�"�"�"�"�"���{�D�9�9�9�9�9�9�9�9�9�9��j�j�e�4� $� � 2� B��D�D� D� D� D� D� D� D� D� D� Ds`�,� :�:�(D9�9E� E�52I(�(J�8J � J� J�J�J�5K�L3�"-L3� L3)TFN)�__name__� __module__� __qualname__rr=rFr5rersr9r0r|r�r�rKr>rr r s����������.2�2�2�(��� 1� 1� 1����. (� (� (� (� (� (� (�;�;�;�8�8�8� !� !� !�nD�nD�nD�nD�nDr>r ) r r]rCrQrrrr� BaseSocketr rKr>r�<module>r�s������� � � � � � � � �������������������������zD�zD�zD�zD�zD�+�(�zD�zD�zD�zD�zDr>
Memory