****************************************************************************/
static int getLine(void)
{
- int count = 0;
+ int count = 0;
char *buf = config->buf;
while (read(a_c_r, buf + count, 1) == 1) {
buf[count] = 0;
return count;
}
- if (count < (MAX_MEMORY_BUFF-1)) /* check owerflow */
+ if (count < (MAX_MEMORY_BUFF-1)) /* check overflow */
count++;
}
if (count) return count;
*
****************************************************************************/
static int sendCgi(const char *url,
- const char *request, int bodyLen, const char *cookie,
- const char *content_type)
+ const char *request, int bodyLen, const char *cookie,
+ const char *content_type)
{
int fromCgi[2]; /* pipe for reading data from CGI */
int toCgi[2]; /* pipe for sending data to CGI */
*
> $Function: sendFile()
*
- * $Description: Send a file response to an HTTP request
+ * $Description: Send a file response to a HTTP request
*
* $Parameter:
* (const char *) url . . The URL requested.
static void handle_sigalrm(int sig)
{
- sendHeaders(HTTP_REQUEST_TIMEOUT);
- config->alarm_signaled = sig;
+ sendHeaders(HTTP_REQUEST_TIMEOUT);
+ config->alarm_signaled = sig;
}
/****************************************************************************
struct sigaction sa;
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
- int credentials = -1; /* if not requred this is Ok */
+ int credentials = -1; /* if not required this is Ok */
#endif
sa.sa_handler = handle_sigalrm;
/* Garbled request/URL */
goto BAD_REQUEST;
}
- url = alloca(strlen(buf) + 12); /* + sizeof("/index.html\0") */
+ url = alloca(strlen(buf) + sizeof("/index.html"));
if (url == NULL) {
sendHeaders(HTTP_INTERNAL_SERVER_ERROR);
break;
/* unset if non inetd looped */
config->ContentLength = -1;
#endif
-
#if ENABLE_FEATURE_HTTPD_CGI
}
}
#endif
-
} while (0);
-
#if ENABLE_FEATURE_HTTPD_WITHOUT_INETD
/* from inetd don't looping: freeing, closing automatic from exit always */
# if DEBUG
fprintf(stderr, "closing socket\n");
# endif
-# ifdef CONFIG_FEATURE_HTTPD_CGI
+# if ENABLE_FEATURE_HTTPD_CGI
free(cookie);
free(content_type);
free(config->referer);
/* copy the ports we are watching to the readfd set */
while (1) {
- readfd = portfd;
+ int on, s;
+ socklen_t fromAddrLen;
+ struct sockaddr_in fromAddr;
/* Now wait INDEFINITELY on the set of sockets! */
- if (select(server + 1, &readfd, 0, 0, 0) > 0) {
- if (FD_ISSET(server, &readfd)) {
- int on;
- struct sockaddr_in fromAddr;
-
- socklen_t fromAddrLen = sizeof(fromAddr);
- int s = accept(server,
- (struct sockaddr *)&fromAddr, &fromAddrLen);
+ readfd = portfd;
+ if (select(server + 1, &readfd, 0, 0, 0) <= 0)
+ continue;
+ if (!FD_ISSET(server, &readfd))
+ continue;
+ fromAddrLen = sizeof(fromAddr);
+ s = accept(server, (struct sockaddr *)&fromAddr, &fromAddrLen);
+ if (s < 0)
+ continue;
- if (s < 0) {
- continue;
- }
- config->accepted_socket = s;
- config->rmt_ip = ntohl(fromAddr.sin_addr.s_addr);
+ config->accepted_socket = s;
+ config->rmt_ip = ntohl(fromAddr.sin_addr.s_addr);
#if ENABLE_FEATURE_HTTPD_CGI || DEBUG
- sprintf(config->rmt_ip_str, "%u.%u.%u.%u",
- (unsigned char)(config->rmt_ip >> 24),
- (unsigned char)(config->rmt_ip >> 16),
- (unsigned char)(config->rmt_ip >> 8),
- config->rmt_ip & 0xff);
- config->port = ntohs(fromAddr.sin_port);
+ sprintf(config->rmt_ip_str, "%u.%u.%u.%u",
+ (unsigned char)(config->rmt_ip >> 24),
+ (unsigned char)(config->rmt_ip >> 16),
+ (unsigned char)(config->rmt_ip >> 8),
+ config->rmt_ip & 0xff);
+ config->port = ntohs(fromAddr.sin_port);
#if DEBUG
- bb_error_msg("connection from IP=%s, port %u",
- config->rmt_ip_str, config->port);
+ bb_error_msg("connection from IP=%s, port %u",
+ config->rmt_ip_str, config->port);
#endif
#endif /* CONFIG_FEATURE_HTTPD_CGI */
- /* set the KEEPALIVE option to cull dead connections */
- on = 1;
- setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on));
-
+ /* set the KEEPALIVE option to cull dead connections */
+ on = 1;
+ setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on));
#if !DEBUG
- if (fork() == 0)
+ if (fork() == 0)
#endif
- {
- /* This is the spawned thread */
+ {
+ /* This is the spawned thread */
#if ENABLE_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
- /* protect reload config, may be confuse checking */
- signal(SIGHUP, SIG_IGN);
+ /* protect reload config, may be confuse checking */
+ signal(SIGHUP, SIG_IGN);
#endif
- handleIncoming();
+ handleIncoming();
#if !DEBUG
- exit(0);
+ exit(0);
#endif
- }
- close(s);
- }
}
+ close(s);
} // while (1)
return 0;
}
xchdir(home_httpd);
#if ENABLE_FEATURE_HTTPD_WITHOUT_INETD
config->server_socket = openServer();
-# ifdef CONFIG_FEATURE_HTTPD_SETUID
+# if ENABLE_FEATURE_HTTPD_SETUID
/* drop privileges */
if (opt & OPT_SETUID) {
if (ugid.gid != (gid_t)-1) {
clearenv();
if (p)
setenv("PATH", p, 1);
-# ifdef CONFIG_FEATURE_HTTPD_WITHOUT_INETD
+# if ENABLE_FEATURE_HTTPD_WITHOUT_INETD
addEnvPort("SERVER");
# endif
}