1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-10-28 04:46:17 +00:00

Read_Request(): Clean up code and add some more comments

No functional changes.
This commit is contained in:
Alexander Barton 2020-05-01 23:41:49 +02:00
parent 629a45ee0f
commit 9f05f5ee61

View File

@ -1543,15 +1543,16 @@ Socket2Index( int Sock )
* @param Idx Connection index. * @param Idx Connection index.
*/ */
static void static void
Read_Request( CONN_ID Idx ) Read_Request(CONN_ID Idx)
{ {
ssize_t len; ssize_t len;
static const unsigned int maxbps = COMMAND_LEN / 2; static const unsigned int maxbps = COMMAND_LEN / 2;
char readbuf[READBUFFER_LEN]; char readbuf[READBUFFER_LEN];
time_t t; time_t t;
CLIENT *c; CLIENT *c;
assert( Idx > NONE );
assert( My_Connections[Idx].sock > NONE ); assert(Idx > NONE);
assert(My_Connections[Idx].sock > NONE);
#ifdef ZLIB #ifdef ZLIB
if ((array_bytes(&My_Connections[Idx].rbuf) >= READBUFFER_LEN) || if ((array_bytes(&My_Connections[Idx].rbuf) >= READBUFFER_LEN) ||
@ -1568,12 +1569,14 @@ Read_Request( CONN_ID Idx )
return; return;
} }
/* Now read new data from the network, up to READBUFFER_LEN bytes ... */
#ifdef SSL_SUPPORT #ifdef SSL_SUPPORT
if (Conn_OPTION_ISSET(&My_Connections[Idx], CONN_SSL)) if (Conn_OPTION_ISSET(&My_Connections[Idx], CONN_SSL))
len = ConnSSL_Read( &My_Connections[Idx], readbuf, sizeof(readbuf)); len = ConnSSL_Read(&My_Connections[Idx], readbuf, sizeof(readbuf));
else else
#endif #endif
len = read(My_Connections[Idx].sock, readbuf, sizeof(readbuf)); len = read(My_Connections[Idx].sock, readbuf, sizeof(readbuf));
if (len == 0) { if (len == 0) {
LogDebug("Client \"%s:%u\" is closing connection %d ...", LogDebug("Client \"%s:%u\" is closing connection %d ...",
My_Connections[Idx].host, My_Connections[Idx].host,
@ -1583,13 +1586,20 @@ Read_Request( CONN_ID Idx )
} }
if (len < 0) { if (len < 0) {
if( errno == EAGAIN ) return; if (errno == EAGAIN)
return;
Log(LOG_ERR, "Read error on connection %d (socket %d): %s!", Log(LOG_ERR, "Read error on connection %d (socket %d): %s!",
Idx, My_Connections[Idx].sock, strerror(errno)); Idx, My_Connections[Idx].sock, strerror(errno));
Conn_Close(Idx, "Read error", "Client closed connection", Conn_Close(Idx, "Read error", "Client closed connection",
false); false);
return; return;
} }
/* Now append the newly received data to the connection buffer.
* NOTE: This can lead to connection read buffers being bigger(!) than
* READBUFFER_LEN bytes, as we add up to READBUFFER_LEN new bytes to a
* buffer possibly being "almost" READBUFFER_LEN bytes already! */
#ifdef ZLIB #ifdef ZLIB
if (Conn_OPTION_ISSET(&My_Connections[Idx], CONN_ZIP)) { if (Conn_OPTION_ISSET(&My_Connections[Idx], CONN_ZIP)) {
if (!array_catb(&My_Connections[Idx].zip.rbuf, readbuf, if (!array_catb(&My_Connections[Idx].zip.rbuf, readbuf,