Initialize the listen pcb's prio correctly, added missing cast and include, http_poll: don't check for pcb->state

This commit is contained in:
goldsimon 2010-03-22 10:07:36 +00:00
parent 0035c0f119
commit 75d9fdc5c7
1 changed files with 13 additions and 8 deletions

View File

@ -85,6 +85,7 @@
#include "fs.h"
#include <string.h>
#include <stdlib.h>
#ifndef HTTPD_DEBUG
#define HTTPD_DEBUG LWIP_DBG_OFF
@ -305,6 +306,7 @@ struct http_state {
static err_t http_find_file(struct http_state *hs, const char *uri, int is_09);
static err_t http_init_file(struct http_state *hs, struct fs_file *file, int is_09);
static err_t http_poll(void *arg, struct tcp_pcb *pcb);
#if LWIP_HTTPD_SSI
/* SSI insert handler function pointer. */
@ -409,12 +411,16 @@ http_close_conn(struct tcp_pcb *pcb, struct http_state *hs)
LWIP_DEBUGF(HTTPD_DEBUG, ("Closing connection %p\n", (void*)pcb));
tcp_arg(pcb, NULL);
tcp_sent(pcb, NULL);
tcp_recv(pcb, NULL);
tcp_err(pcb, NULL);
tcp_poll(pcb, NULL, 0);
tcp_sent(pcb, NULL);
http_state_free(hs);
err = tcp_close(pcb);
if (err != ERR_OK) {
LWIP_DEBUGF(HTTPD_DEBUG, ("Error %d closing %p\n", err, (void*)pcb));
/* error closing, try again later in poll */
tcp_poll(pcb, http_poll, HTTPD_POLL_INTERVAL);
}
}
#if LWIP_HTTPD_CGI
@ -1591,7 +1597,7 @@ http_find_file(struct http_state *hs, const char *uri, int is_09)
/* No - we've been asked for a specific file. */
#if LWIP_HTTPD_CGI
/* First, isolate the base URI (without any parameters) */
params = strchr(uri, '?');
params = (char *)strchr(uri, '?');
if (params != NULL) {
/* URI contains parameters. NULL-terminate the base URI */
*params = '\0';
@ -1769,12 +1775,10 @@ http_poll(void *arg, struct tcp_pcb *pcb)
(void*)pcb, (void*)hs, tcp_debug_state_str(pcb->state)));
if (hs == NULL) {
if (pcb->state == ESTABLISHED) {
/* arg is null, close. */
LWIP_DEBUGF(HTTPD_DEBUG, ("http_poll: arg is NULL, close\n"));
http_close_conn(pcb, hs);
return ERR_OK;
}
/* arg is null, close. */
LWIP_DEBUGF(HTTPD_DEBUG, ("http_poll: arg is NULL, close\n"));
http_close_conn(pcb, hs);
return ERR_OK;
} else {
hs->retries++;
if (hs->retries == HTTPD_MAX_RETRIES) {
@ -1928,6 +1932,7 @@ httpd_init(void)
pcb = tcp_new();
LWIP_ASSERT("httpd_init: tcp_new failed", pcb != NULL);
tcp_setprio(pcb, HTTPD_TCP_PRIO);
err = tcp_bind(pcb, IP_ADDR_ANY, HTTPD_SERVER_PORT);
LWIP_ASSERT("httpd_init: tcp_bind failed", err == ERR_OK);
pcb = tcp_listen(pcb);