OpenSSL - проблема SSL_write - PullRequest
       1

OpenSSL - проблема SSL_write

2 голосов
/ 28 августа 2011

Я пишу небольшой HTTPS-клиент на C , и у меня возникла проблема с функцией SSL_write. Три теста для иллюстрации моей проблемы:

#define HEADERS1 "GET / HTTP/1.1\r\n"
#define HEADERS2 "Host: www.example.com\r\n"
#define HEADERS3 "User-Agent: OpenSSL\r\n"
#define HEADERS4 "\r\n"

#define HEADERS "GET / HTTP/1.1\r\nHost: www.example.com\r\nUser-Agent: OpenSSL\r\n\r\n"

Тест 1:

SSL_write(ssl,HEADERS,strlen(HEADERS));

Успешно: сервер правильно возвращает ресурс /index.html с кодом HTTP / 1.1 200.

Тест 2:

SSL_write(ssl,HEADERS1,strlen(HEADERS1));
SSL_write(ssl,HEADERS2,strlen(HEADERS2));
SSL_write(ssl,HEADERS3,strlen(HEADERS3));
SSL_write(ssl,HEADERS4,strlen(HEADERS4));

Сбой: сервер ничего не возвращает. Все функции SSL_write не возвращают ОШИБКУ, но мое приложение заблокировано на SSL_read, потому что целевой сервер не выдает содержимое ... и заголовки: (

Тест 3:

SSL_write(ssl,HEADERS1,strlen(HEADERS1));
SSL_write(ssl,HEADERS2,strlen(HEADERS2));
SSL_write(ssl,HEADERS4,strlen(HEADERS4));

Успешно: Сервер правильно возвращает ресурс /index.html с кодом HTTP / 1.1 200.

Есть ли конкретное ограничение на количество раз, когда я могу вызывать SSL_write для отправки заголовков? Очень странно ...

Большое спасибо!


Хорошо, моя проблема сохраняется, но у меня есть более подробная информация:

IISS-SSL => Все тесты пройдены успешно.

Apache-SSL => Все тесты пройдены успешно.

Nginx-SSL => Все тесты пройдены успешно.

LightHTTPD-SSL => Сбой теста 2.

Я не понимаю, почему только LightHTTPD не понимает мою просьбу ...

1 Ответ

1 голос
/ 23 сентября 2011

Для операции SSL_Write () правильный путь должен быть после вызова SSL_Write, проверьте возвращаемое сообщение.Если это SSL_WANT_READ, дайте ему немного времени для чтения.

Выполнение операции непрерывной записи с проверкой возвращаемого значения может быть успешным, но это небезопасно, поскольку вы не будете уверены в данныхВы написали, что достигли сервера, и сервер полностью его прочитал.

Это, в свою очередь, может повлиять на другие операции SSL_write.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...