Как закрыть клиентское соединение в libevent?

286
11 октября 2017, 08:26

Как закрыть клиентское соединение средствами библиотеки libevent (на с++) после получения ответа от сервера, чтобы файловый дескриптор используемый соединением освободился?

Схема по которой происходит отправка запроса:

struct evhttp_connection *conn;
struct evhttp_request *req;
conn = evhttp_connection_new(addr, port);
evhttp_connection_set_timeout(conn, timeout);
evhttp_connection_set_retries(conn, count_of_retry_sending);
evhttp_connection_free_on_completion(conn);
evhttp_connection_set_closecb(conn, callback_close_connection, nullptr);
// привязка обработчика ответа к соединению
req = evhttp_request_new(response_handler, static_cast<void*>(context));
// заполнение выходного буфера данными
// ......
// отправка запроса
evhttp_make_request(conn, req, EVHTTP_REQ_POST, resource);

При просмотре под отладчиком захода в callback_close_connection обнаружил, что закрытие соединения происходит минут через 5 после ответа от сервера. Непонятно почему соединение не закрывается сразу после получения ответа.

Answer 1

Нашел решение. Убрал строчки:

evhttp_connection_free_on_completion(conn);
evhttp_connection_set_retries(conn, count_of_retry_sending);

Указатель на соединение передал в функцию обработчик ответа от сервера, где вызывал по окончании обработки evhttp_connection_free(conn);

READ ALSO
c++ интерполяция как в ES6

c++ интерполяция как в ES6

Добрый день, есть ли интерполяция как в ES6 в C++?

262
Сборка qt-4.8.7 64-битным компилятором под Windows

Сборка qt-4.8.7 64-битным компилятором под Windows

Понадобилась 64-битная версия Qt4 под WindowsНе получается скомпилировать Qt

265
Ascii problem with russia (c++)

Ascii problem with russia (c++)

Всем привет, помогите пожалуйста с asciiСуть программы: шифрование и дешифрование сообщений

297
Проблема со сравнением char в С++ [требует правки]

Проблема со сравнением char в С++ [требует правки]

Трабла в том, что ругается на (path[i] == '\')Как это провернуть?Спасибо) Вот сам код:

185