const void *LibEventTransport::getMorePostData(int &size) { #ifdef EVHTTP_READ_LIMITING if (m_request->ntoread == 0) { size = 0; return NULL; } evbuffer *buf = m_request->input_buffer; ASSERT(buf); evbuffer_drain(buf, EVBUFFER_LENGTH(buf)); if (evhttp_get_more_post_data(m_request, &m_epollfd, &m_epollevent)) { buf = m_request->input_buffer; ASSERT(buf); size = EVBUFFER_LENGTH(buf); evbuffer_expand(buf, size + 1); // allowing NULL termination // EVBUFFER_DATA(buf) might change after evbuffer_expand ((char*)EVBUFFER_DATA(buf))[size] = '\0'; if (m_request->ntoread == 0) { evhttp_get_post_data_done(m_request); } return EVBUFFER_DATA(buf); } if (m_epollfd != -1) { close(m_epollfd); m_epollfd = -1; } evhttp_get_post_data_done(m_request); size = 0; return NULL; #else size = 0; return NULL; #endif }
const void *LibEventTransport::getMorePostData(int &size) { #ifdef EVHTTP_PORTABLE_READ_LIMITING if (m_request->ntoread == 0) { if (m_eventBasePostData != nullptr) { event_base_free(m_eventBasePostData); m_eventBasePostData = nullptr; } size = 0; return nullptr; } evbuffer *buf = m_request->input_buffer; assert(buf); evbuffer_drain(buf, EVBUFFER_LENGTH(buf)); if (evhttp_get_more_post_data(m_request, &m_eventBasePostData, &m_moreDataRead)) { buf = m_request->input_buffer; assert(buf); size = EVBUFFER_LENGTH(buf); evbuffer_expand(buf, size + 1); // allowing NULL termination // EVBUFFER_DATA(buf) might change after evbuffer_expand ((char*)EVBUFFER_DATA(buf))[size] = '\0'; if (m_request->ntoread == 0) { if (m_eventBasePostData != nullptr) { event_base_free(m_eventBasePostData); m_eventBasePostData = nullptr; } evhttp_get_post_data_done(m_request); } return EVBUFFER_DATA(buf); } if (m_eventBasePostData != nullptr) { event_base_free(m_eventBasePostData); m_eventBasePostData = nullptr; } evhttp_get_post_data_done(m_request); size = 0; return nullptr; #else size = 0; return nullptr; #endif }
const void *LibEventTransport::getMorePostData(int &size) { #ifdef EVHTTP_PORTABLE_READ_LIMITING if (m_request->ntoread == 0) { if (m_eventBasePostData != nullptr) { event_base_free(m_eventBasePostData); m_eventBasePostData = nullptr; } size = 0; return nullptr; } evbuffer *buf = m_request->input_buffer; assert(buf); evbuffer_drain(buf, EVBUFFER_LENGTH(buf)); if (evhttp_get_more_post_data(m_request, &m_eventBasePostData, &m_moreDataRead)) { buf = m_request->input_buffer; assert(buf); size = EVBUFFER_LENGTH(buf); if (m_request->ntoread == 0) { if (m_eventBasePostData != nullptr) { event_base_free(m_eventBasePostData); m_eventBasePostData = nullptr; } evhttp_get_post_data_done(m_request); } return EVBUFFER_DATA(buf); } if (m_eventBasePostData != nullptr) { event_base_free(m_eventBasePostData); m_eventBasePostData = nullptr; } evhttp_get_post_data_done(m_request); size = 0; return nullptr; #else size = 0; return nullptr; #endif }