@@ -157,22 +157,7 @@ int HTTPConnection::updateBuffer() {
157157 }
158158
159159 if (_bufferUnusedIdx < HTTPS_CONNECTION_DATA_CHUNK_SIZE) {
160- // Check only this socket for data
161- fd_set sockfds;
162- FD_ZERO ( &sockfds );
163- FD_SET (_socket, &sockfds);
164-
165- // We define an immediate timeout (return immediately, if there's no data)
166- timeval timeout;
167- timeout.tv_sec = 0 ;
168- timeout.tv_usec = 0 ;
169-
170- // Check for input
171- // As by 2017-12-14, it seems that FD_SETSIZE is defined as 0x40, but socket IDs now
172- // start at 0x1000, so we need to use _socket+1 here
173- select (_socket + 1 , &sockfds, NULL , NULL , &timeout);
174-
175- if (FD_ISSET (_socket, &sockfds)) { // FIXME: Is SSL_pending(_ssl) > 0 required here?
160+ if (canReadData ()) {
176161
177162 HTTPS_DLOGHEX (" [ ] There is data on the connection socket. fid=" , _socket)
178163
@@ -215,6 +200,24 @@ int HTTPConnection::updateBuffer() {
215200 return 0 ;
216201}
217202
203+ bool HTTPConnection::canReadData () {
204+ fd_set sockfds;
205+ FD_ZERO ( &sockfds );
206+ FD_SET (_socket, &sockfds);
207+
208+ // We define an immediate timeout (return immediately, if there's no data)
209+ timeval timeout;
210+ timeout.tv_sec = 0 ;
211+ timeout.tv_usec = 0 ;
212+
213+ // Check for input
214+ // As by 2017-12-14, it seems that FD_SETSIZE is defined as 0x40, but socket IDs now
215+ // start at 0x1000, so we need to use _socket+1 here
216+ select (_socket + 1 , &sockfds, NULL , NULL , &timeout);
217+
218+ return FD_ISSET (_socket, &sockfds);
219+ }
220+
218221size_t HTTPConnection::readBuffer (byte* buffer, size_t length) {
219222 updateBuffer ();
220223 size_t bufferSize = _bufferUnusedIdx - _bufferProcessed;
0 commit comments