commit fe8202d39c32032b68a7a6760651c843b2e3e16d
parent 79f2eea2629367ca402671cf7d033e52de0f9e8a
Author: Christian Grothoff <christian@grothoff.org>
Date: Thu, 27 Jun 2013 14:41:35 +0000
-fixing misc minor bugs and compiler warnings in libmicrospdy
Diffstat:
8 files changed, 108 insertions(+), 62 deletions(-)
diff --git a/src/examples/spdy_event_loop.c b/src/examples/spdy_event_loop.c
@@ -41,15 +41,17 @@
//#include "../framinglayer/structures.h"
//#include "../applicationlayer/alstructures.h"
-int run = 1;
-int run2 = 1;
+static int run = 1;
+
+static int run2 = 1;
- uint64_t loops;
- time_t start;
+static uint64_t loops;
+static time_t start;
-void
+
+static void
new_session_callback (void *cls,
struct SPDY_Session * session)
{
@@ -88,7 +90,8 @@ new_session_callback (void *cls,
}
}
-void
+
+static void
session_closed_handler (void *cls,
struct SPDY_Session * session,
int by_client)
@@ -108,7 +111,8 @@ session_closed_handler (void *cls,
//session_closed_called = 1;
}
-void
+
+static void
response_done_callback(void *cls,
struct SPDY_Response *response,
struct SPDY_Request *request,
@@ -135,7 +139,8 @@ response_done_callback(void *cls,
free(cls);
}
-int
+
+static int
print_headers (void *cls,
const char *name, const char *value)
{
@@ -163,11 +168,12 @@ new_request_cb (void *cls,
}
*/
-int
+
+static int
append_headers_to_data (void *cls,
- const char *name, const char **value, int num_values)
+ const char *name, const char * const *value, int num_values)
{
- char **data = (char **)cls;
+ char **data = cls;
void *tofree = *data;
int i;
@@ -183,7 +189,8 @@ append_headers_to_data (void *cls,
return SPDY_YES;
}
-void
+
+static void
standard_request_handler(void *cls,
struct SPDY_Request * request,
uint8_t priority,
@@ -251,11 +258,14 @@ standard_request_handler(void *cls,
}
}
-void sig_handler(int signo)
+
+static void
+sig_handler(int signo)
{
printf("received signal\n");
}
+
int
main (int argc, char *const *argv)
{
diff --git a/src/examples/spdy_response_with_callback.c b/src/examples/spdy_response_with_callback.c
@@ -32,10 +32,10 @@
#include <errno.h>
#include "microspdy.h"
-int run = 1;
+static int run = 1;
-ssize_t
+static ssize_t
response_callback (void *cls,
void *buffer,
size_t max,
@@ -53,11 +53,12 @@ response_callback (void *cls,
}
-void
+static void
response_done_callback(void *cls,
- struct SPDY_Response *response,
- struct SPDY_Request *request,
- bool streamopened)
+ struct SPDY_Response *response,
+ struct SPDY_Request *request,
+ enum SPDY_RESPONSE_RESULT status,
+ bool streamopened)
{
(void)streamopened;
printf("answer for %s was sent\n", (char *)cls);
@@ -67,7 +68,8 @@ response_done_callback(void *cls,
free(cls);
}
-void
+
+static void
standard_request_handler(void *cls,
struct SPDY_Request * request,
uint8_t priority,
@@ -141,6 +143,7 @@ standard_request_handler(void *cls,
}
}
+
int
main (int argc, char *const *argv)
{
diff --git a/src/include/microspdy.h b/src/include/microspdy.h
@@ -51,6 +51,30 @@
#include <zlib.h>
#include <stdbool.h>
+/* While we generally would like users to use a configure-driven
+ build process which detects which headers are present and
+ hence works on any platform, we use "standard" includes here
+ to build out-of-the-box for beginning users on common systems.
+
+ Once you have a proper build system and go for more exotic
+ platforms, you should define MHD_PLATFORM_H in some header that
+ you always include *before* "microhttpd.h". Then the following
+ "standard" includes won't be used (which might be a good
+ idea, especially on platforms where they do not exist). */
+#ifndef MHD_PLATFORM_H
+#include <unistd.h>
+#include <stdarg.h>
+#include <stdint.h>
+#ifdef __MINGW32__
+#include <ws2tcpip.h>
+#else
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#endif
+#endif
+
+
/**
* return code for "YES".
*/
diff --git a/src/microspdy/applicationlayer.c b/src/microspdy/applicationlayer.c
@@ -217,11 +217,11 @@ spdy_handler_response_queue_result(void * cls,
int streamopened;
struct SPDY_Request *request = (struct SPDY_Request *)cls;
- SPDYF_ASSERT(NULL == response_queue->data_frame
- && NULL != response_queue->control_frame
- || NULL != response_queue->data_frame
- && NULL == response_queue->control_frame,
- "response queue must have either control frame or data frame");
+ SPDYF_ASSERT( ( (NULL == response_queue->data_frame) &&
+ (NULL != response_queue->control_frame) ) ||
+ ( (NULL != response_queue->data_frame) &&
+ (NULL == response_queue->control_frame) ),
+ "response queue must have either control frame or data frame");
streamopened = !response_queue->stream->is_out_closed;
diff --git a/src/microspdy/daemon.c b/src/microspdy/daemon.c
@@ -423,15 +423,15 @@ SPDYF_get_fdset (struct SPDY_Daemon *daemon,
{
fd = pos->socket_fd;
FD_SET(fd, read_fd_set);
- if(all
- || NULL != pos->response_queue_head //frames pending
- || NULL != pos->write_buffer //part of last frame pending
- || SPDY_SESSION_STATUS_CLOSING == pos->status //the session is about to be closed
- || daemon->session_timeout //timeout passed for the session
- && (pos->last_activity + daemon->session_timeout < SPDYF_monotonic_time())
- || SPDY_YES == SPDYF_tls_is_pending(pos) //data in TLS' read buffer pending
- || ((pos->read_buffer_offset - pos->read_buffer_beginning) > 0) // data in lib's read buffer pending
- )
+ if (all
+ || (NULL != pos->response_queue_head) //frames pending
+ || (NULL != pos->write_buffer) //part of last frame pending
+ || (SPDY_SESSION_STATUS_CLOSING == pos->status) //the session is about to be closed
+ || (daemon->session_timeout //timeout passed for the session
+ && (pos->last_activity + daemon->session_timeout < SPDYF_monotonic_time()))
+ || (SPDY_YES == SPDYF_tls_is_pending(pos)) //data in TLS' read buffer pending
+ || ((pos->read_buffer_offset - pos->read_buffer_beginning) > 0) // data in lib's read buffer pending
+ )
FD_SET(fd, write_fd_set);
if(fd > max_fd)
max_fd = fd;
diff --git a/src/microspdy/session.c b/src/microspdy/session.c
@@ -932,6 +932,7 @@ SPDYF_session_write (struct SPDY_Session *session, bool only_one_frame)
//on respones with callbacks it is possible that their is no
//data available
if(0 == session->write_buffer_size)//nothing to write
+ {
if(response_queue != session->response_queue_head)
{
//the handler modified the queue
@@ -942,6 +943,7 @@ SPDYF_session_write (struct SPDY_Session *session, bool only_one_frame)
//no need to try the same frame again
break;
}
+ }
}
session->last_activity = SPDYF_monotonic_time();
diff --git a/src/microspdy/structures.c b/src/microspdy/structures.c
@@ -27,6 +27,7 @@
#include "structures.h"
#include "internal.h"
#include "session.h"
+#include <ctype.h>
struct SPDY_NameValue *
@@ -60,7 +61,7 @@ SPDY_name_value_add (struct SPDY_NameValue *container,
for(i=0; i<len; ++i)
{
- if(isupper(name[i]))
+ if(isupper((int) name[i]))
return SPDY_INPUT_ERROR;
}
@@ -289,12 +290,12 @@ SPDYF_response_queue_create(bool is_data,
unsigned int i;
bool is_last;
- SPDYF_ASSERT(!is_data
- || 0 == data_size && NULL != response->rcb
- || 0 < data_size && NULL == response->rcb,
- "either data or request->rcb must not be null");
+ SPDYF_ASSERT((! is_data)
+ || ((0 == data_size) && (NULL != response->rcb))
+ || ((0 < data_size) && (NULL == response->rcb)),
+ "either data or request->rcb must not be null");
- if(is_data && data_size > SPDY_MAX_SUPPORTED_FRAME_SIZE)
+ if (is_data && (data_size > SPDY_MAX_SUPPORTED_FRAME_SIZE))
{
//separate the data in more frames and add them to the queue
diff --git a/src/spdy2http/proxy.c b/src/spdy2http/proxy.c
@@ -127,10 +127,13 @@ struct URI
while(0)
-int loop = 1;
-CURLM *multi_handle;
-int still_running = 0; /* keep number of running handles */
-regex_t uri_preg;
+static int loop = 1;
+
+static CURLM *multi_handle;
+
+static int still_running = 0; /* keep number of running handles */
+
+static regex_t uri_preg;
struct Proxy
@@ -151,7 +154,7 @@ struct Proxy
};
-void
+static void
free_uri(struct URI * uri)
{
if(NULL != uri)
@@ -170,7 +173,8 @@ free_uri(struct URI * uri)
}
}
-int
+
+static int
init_parse_uri(regex_t * preg)
{
// RFC 2396
@@ -186,14 +190,16 @@ init_parse_uri(regex_t * preg)
return regcomp(preg, "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?", REG_EXTENDED);
}
-void
+
+static void
deinit_parse_uri(regex_t * preg)
{
regfree(preg);
}
-int
-parse_uri(regex_t * preg, char * full_uri, struct URI ** uri)
+
+static int
+parse_uri(regex_t * preg, const char * full_uri, struct URI ** uri)
{
int ret;
char *colon;
@@ -305,7 +311,7 @@ response_callback (void *cls,
}
-void
+static void
response_done_callback(void *cls,
struct SPDY_Response *response,
struct SPDY_Request *request,
@@ -490,7 +496,7 @@ curl_write_cb(void *contents, size_t size, size_t nmemb, void *userp)
}
-int
+static int
iterate_cb (void *cls, const char *name, const char * const * value, int num_values)
{
struct Proxy *proxy = (struct Proxy *)cls;
@@ -528,7 +534,7 @@ iterate_cb (void *cls, const char *name, const char * const * value, int num_val
}
-void
+static void
standard_request_handler(void *cls,
struct SPDY_Request * request,
uint8_t priority,
@@ -627,8 +633,9 @@ standard_request_handler(void *cls,
}
}
-int
-run()
+
+static int
+run ()
{
unsigned long long timeoutlong=0;
long curl_timeo = -1;
@@ -645,9 +652,7 @@ run()
CURLMsg *msg;
int msgs_left;
struct Proxy *proxy;
- struct sockaddr_in *addr;
- struct sockaddr_in addr4;
- struct in_addr inaddr4;
+ struct sockaddr_in *addr;
struct addrinfo hints;
char service[NI_MAXSERV];
struct addrinfo *gai;
@@ -679,16 +684,16 @@ run()
}
else
{
- snprintf(service, sizeof(service), "%u", glob_opt.listen_port);
- memset(&hints, 0, sizeof(struct addrinfo));
- hints.ai_family = AF_UNSPEC;
+ snprintf (service, sizeof(service), "%u", glob_opt.listen_port);
+ memset (&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
ret = getaddrinfo(glob_opt.listen_host, service, &hints, &gai);
if(ret != 0)
DIE("problem with specified host");
- addr=gai->ai_addr;
+ addr = (struct sockaddr_in *) gai->ai_addr;
daemon = SPDY_start_daemon(0,
glob_opt.cert,
@@ -836,7 +841,8 @@ run()
return 0;
}
-void
+
+static void
display_usage()
{
printf(