� ���gf(��l�ddlZddlZddlmZddlmZddlmZddlmZGd�dej��ZdS) �N�)� base_socket)� exceptions)�packet)�payloadc�V�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z dd �Z d �Z d �Z d�Z d�Zd S)�SocketzAn Engine.IO socket.c��|j���} |j�|jj|jjz���g}|j���n#|$rtj���wxYw|dgkrgS |j�d���}|j���|�|j� d��n"|� |��n #|$rYnwxYw�t|S)z'Wait for packets to send to the client.)�timeoutNTF)�block) �server�get_queue_empty_exception�queue�get� ping_interval� ping_timeout� task_doner� QueueEmpty�put�append)�self� queue_empty�packets�pkts �_/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/engineio/socket.py�pollz Socket.poll s1���k�;�;�=�=� � *��z�~�~�� �1�D�K�4L�L�&�N�N�O�G� �J� � � "� "� "� "��� *� *� *��'�)�)� )� *���� �t�f� � ��I� � ��j�n�n�5�n�1�1��� �$�$�&�&�&��;��J�N�N�4�(�(�(�����s�#�#�#�#��� � � ��� ���� ��s%�A A(�(B�AC6� C6�6C>�=C>c �"�|jttj��krtj|jnd}|jj�d|j|t|j t��s|j nd��|jtj kr|� ��d S|jtj kr4|j�d|j|j |jj���d S|jtjkr3|�tjtj����d S|jtjkr)|�dd|jjj���d St1j���) zReceive packet from the client.�UNKNOWNz%s: Received packet %s data %s�<binary>�message�� run_asyncFT��wait�abort�reasonN)� packet_type�lenr� packet_namesr �logger�info�sid� isinstance�data�bytes�PONG� schedule_ping�MESSAGE�_trigger_event�async_handlers�UPGRADE�send�Packet�NOOP�CLOSE�closer&�CLIENT_DISCONNECTr�UnknownPacketError)rr� packet_names r�receivezSocket.receive#s~�����V�%8�!9�!9�9�9��)�#�/�:�:�?H� � � ���� @� $��+�0:�3�8�U�0K�0K�!0����%/� 1� 1� 1� �?�f�k� )� )� � � � � � � � � �_��� .� .� �K� &� &�y�$�(�C�H�15��1K� '� M� M� M� M� M� �_��� .� .� �I�I�f�m�F�K�0�0� 1� 1� 1� 1� 1� �_�� � ,� ,� �J�J�E��"�k�0�B� � D� D� D� D� D��/�1�1� 1�c�6�|jrtj���|jrwt j��|jz |jjkrN|jj�d|j ��|� dd|jj j ���dSdS)z2Make sure the client is still responding to pings.z"%s: Client is gone, closing socketFr#T) �closedr�SocketIsClosedError� last_ping�timer rr*r+r,r:r&� PING_TIMEOUT�rs r�check_ping_timeoutzSocket.check_ping_timeout8s��� �;� 3��0�2�2� 2� �>� �� � � �d�n�,�t�{�/G�G�G� �K� � #� #�$H�$(�H� .� .� .� �J�J�E��"�k�0�=� � ?� ?� ?��5��tr?c � �|���sdS|j�|��|jj�d|jtj|j t|j t��s|j nd��dS)zSend a packet to the client.Nz%s: Sending packet %s data %sr) rGrrr r*r+r,rr)r'r-r.r/)rrs rr6z Socket.sendHs����&�&�(�(� � �F� �J�N�N�3� � � � � ���� ?� $��&�*=�c�o�*N�0:�3�8�U�0K�0K�!0����%/� 1� 1� 1� 1� 1r?c���d�|�dd������d��D��}|�dd�����}d|vrL||jvrC|jj�d|j|��t|d|z��||��S|j s|j rtj tj ��gS |���}nm#tj$r[t#j��}|�d |jjj� ��|d �|d ���wxYw|S) z2Handle a long-polling GET request from the client.c�6�g|]}|�����S�)�strip)�.0�ss r� <listcomp>z-Socket.handle_get_request.<locals>.<listcomp>Us6��L�L�L�� �G�G�I�I�L�L�Lr?�HTTP_CONNECTION��,� HTTP_UPGRADE�upgradez%%s: Received request to upgrade to %s� _upgrade_F)r$r&r�)r�lower�split�upgrade_protocolsr r*r+r,�getattr� upgrading�upgradedrr7r8rrr�sys�exc_infor:r&�TRANSPORT_ERROR�with_traceback)r�environ�start_response� connections� transportr�excs r�handle_get_requestzSocket.handle_get_requestSs���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�9�7�4��y�!8�9�9�'�:H�J�J� J� �>� 0�T�]� 0��M�&�+�.�.�/� /� 0��i�i�k�k�G�G���$� 0� 0� 0��,�.�.�C� �J�J�E�$�+�*<�*L�J� M� M� M��a�&�'�'��A��/�/� /� 0�����s �,D�A*E+c�V�t|�dd����}||jjkrt j���|d�|���d��}tj |���}|j D]}|� |���dS)z3Handle a long-polling POST request from the client.�CONTENT_LENGTH�0z wsgi.inputzutf-8)�encoded_payloadN) �intrr �max_http_buffer_sizer�ContentTooLongError�read�decoder�Payloadrr>)rra�length�body�prs r�handle_post_requestzSocket.handle_post_requestjs����W�[�[�!1�3�7�7�8�8�� �D�K�4� 4� 4��0�2�2� 2��<�(�-�-�f�5�5�<�<�W�E�E�D����5�5�5�A��y� "� "��� � �S�!�!�!�!� "� "r?TFNc��|js�|js�d|_|j�d|j|p|jjjd���|s1|�tj tj ����d|_|j � d��|r|j � ��dSdSdSdS)zClose the socket connection.T� disconnectFr!N)rA�closingr r3r,r&�SERVER_DISCONNECTr6rr7r9rr�join)rr$r%r&s rr:z Socket.closeus����{� "�4�<� "��D�L� �K� &� &��d�h��>�$�+�,�>�� '� !� !� !�� 7�� � �&�-�� �5�5�6�6�6��D�K� �J�N�N�4� � � �� "�� ���!�!�!�!�!� "� "� "� "� "� "r?c�D�|j�|j��dS�N)r �start_background_task� _send_pingrFs rr1zSocket.schedule_ping�s �� � �)�)�$�/�:�:�:�:�:r?c��d|_|j�|jj��|jsR|jsMt j��|_|�tj tj ����dSdSdSr{) rCr �sleeprrwrArDr6rr7�PINGrFs rr}zSocket._send_ping�s|����� � ���$�+�3�4�4�4��|� 2�D�K� 2�!�Y�[�[�D�N� �I�I�f�m�F�K�0�0� 1� 1� 1� 1� 1� 2� 2� 2� 2r?c���|jrtd���|jjd�|j���S|jjd|j|j��}|||��S)z1Upgrade the connection from polling to websocket.z Socket has been upgraded already� websocket)r\�OSErrorr �_async� _bad_request�_websocket_handler)rrarb�wss r�_upgrade_websocketzSocket._upgrade_websocket�sv�� �=� >��<�=�=� =� �;� �k� *� 2��;�+�+�-�-� -� ,�T�[� � � ,� � #�T�[�2�2���r�'�>�*�*�*r?c� �����fd�}dD]j}t�|��rXtt�|��d��r:t�|����jj�jjz���k�j�rhd�_|��}tj |���}|j tj ks |j dkr.�jj �d�j��d�_gS��tj tjd� ��������j�tj tj����|��}tj |���}|j tjkr6d�_�jj �d �j|��d�_gSd�_d�_nd�_d�_��fd �}�j�|��}�jj �d �j�� d } |��}nQ#t2$rD} �js3�jj �d�jt7| ����Yd } ~ n�d } ~ wwxYw|�n�tj |���} ��|��ne#t:j$rYnTt:j$r"�jj �d��Yn&�jj � d��YnxYw��j�d ��|�!����"dd�jj#j$���gS)z*Engine.IO handler for websocket transport.c�������}|r,t|���jjkrt d���|S)Nzpacket is too large)r$r(r rl� ValueError)r.rr�s ��r�websocket_waitz1Socket._websocket_handler.<locals>.websocket_wait�sA����7�7�9�9�D�� 8��D� � �D�K�$D�D�D� �!6�7�7�7��Kr?)�_sock�socket� settimeoutT)�encoded_packet�probez,%s: Failed websocket upgrade, no PING packetF)r.zK%s: Failed websocket upgrade, expected UPGRADE packet, received %s instead.c���� d} ����}n#tj$rYn=wxYw|sn6 |D])}��|������*n#YnxYw�f����dSr{)rrrr6�encoder:)rrrr�s ��r�writerz)Socket._websocket_handler.<locals>.writer�s���� ����"�i�i�k�k�G�G��!�,�����E���������&�.�.������ � � � �-�-�-�-�.����E���� � �H�H�J�J�J�J�Js��-�-�,A!�!A%z#%s: Upgrade to websocket successfulNz-%s: Unexpected error "%s", closing connectionz!Receive error -- socket is closedzUnknown receive errorr#)%�hasattrrZr�r rr� connectedr[rr7r'r�r.r*r+r,r6r0r�rrr8r5r\r|� ExceptionrA�strr>rr<rB� exceptionryr:r&�TRANSPORT_CLOSE) rr�r��attrr� decoded_pktr�� writer_taskrs�es `` rr�zSocket._websocket_handler�s����� � � � � � �(� J� J�D��r�4� � � J�W�W�R��->�->� �%M�%M� J���D�!�!�,�,��K�-�� �0H�H�J�J�J�� �>� !�!�D�N� �.�"�"�C� �-�s�;�;�;�K��&�&�+�5�5��$��/�/�� �"�'�'�B�D�H�N�N�N�!&���� � �G�G�F�M�&�+�G�<�<�<�C�C�E�E� F� F� F� �J�N�N�6�=���5�5� 6� 6� 6� �.�"�"�C� �-�s�;�;�;�K��&�&�.�8�8� %�� �� �"�'�'�,��H�c�#�#�#�"'���� � �D�M�"�D�N�N�!�D�N� �D�M� � � � � � �"�k�7�7��?�?� � � ���� 1�4�8� =� =� =� ��A� �"�N�$�$����� � � ��{�*��K�&�+�+�G���#�a�&�&�*�*�*���������� �����y���-�q�1�1�1�C� �� � �S�!�!�!�!���0� � � ����1� � � �� �"�'�'�(K�L�L�L��� �� �"�,�,�-D�E�E�E������7 �: � ���t���������� � � ��T��+�,�<� � >� >� >�� s0�= I� J�:J�J�2K�L*�-L*� L*)TFN)�__name__� __module__� __qualname__�__doc__rr>rGr6rfrtr:r1r}r�r�rKr?rr r s������������.2�2�2�*��� 1� 1� 1����. "� "� "� "� "� "� "�;�;�;�2�2�2� +� +� +�g�g�g�g�gr?r ) r]rDrQrrrr� BaseSocketr rKr?r�<module>r�s��� � � � � � � � �������������������������v�v�v�v�v�[� #�v�v�v�v�vr?
Memory