Simple SSL client hangs
Loris Bennett
loris.bennett at fu-berlin.de
Wed Jul 14 01:54:30 EDT 2021
Hi,
MRAB <python at mrabarnett.plus.com> writes:
> On 2021-07-13 08:50, Loris Bennett wrote:
>> Hi,
>>
>> In Perl I have the following
>>
>> use IO::Socket::SSL;
>>
>> my $my_socket = new IO::Socket::SSL(PeerAddr => 'some.server.somewhere,
>> PeerPort => 12345,
>> );
>>
>> my $line = <$my_socket>;
>> print("$line\n");
>> say $my_socket 'ECHO 1';
>> $line = <$my_socket>;
>> print("$line\n");
>>
>> This runs as expected and I get
>>
>> 200 Some Server Somewhere - Hello [123.456.789.123]
>>
>> 310 Hello Echo
>>
>> If I try the same with the following Python code:
>>
>> import socket
>> import ssl
>>
>> HOST = "some.server.somewhere"
>> PORT = 12345
>>
>> context = ssl.create_default_context()
>>
>> with socket.create_connection((HOST, PORT)) as sock:
>> with context.wrap_socket(sock, server_hostname=HOST) as ssock:
>> data = ssock.recv(1024)
>> print(data.decode())
>> ssock.write(b'ECHO 1')
>> data = ssock.read(1024)
>> print(data.decode())
>>
>> I get a timeout for the 'ECHO' command:
>>
>> 200 Some Server Somewhere - Hello [123.456.789.123]
>>
>> 501 Timeout
>>
>> Does anyone have an idea what I might be doing wrong?
>>
> The docs for Perl says that 'say' appends a newline.
>
> On the other hand, 'ssock.write' doesn't append a newline.
>
> Could that be the problem?
Thanks and well-spotted everyone! The missing newline was indeed the
problem. With
ssock.write(b'ECHO 1\n')
the Python codes behaves like the Perl code.
Cheers,
Loris
--
This signature is currently under construction.
More information about the Python-list
mailing list