Interrim Debian version 1.2.3-3indexdata
[pazpar2-moved-to-github.git] / src / http.c
index d40bd08..6ca8bd8 100644 (file)
@@ -62,21 +62,23 @@ typedef int socklen_t;
 #include <yaz/comstack.h>
 #include <yaz/nmem.h>
 
-#include "util.h"
-#include "eventl.h"
 #include "pazpar2.h"
 #include "http.h"
-#include "http_command.h"
 
 #define MAX_HTTP_HEADER 4096
 
+#ifdef WIN32
+#define strncasecmp _strnicmp
+#define strcasecmp _stricmp
+#endif
+
 static void proxy_io(IOCHAN i, int event);
 static struct http_channel *http_create(const char *addr,
                                         struct conf_server *server);
 static void http_destroy(IOCHAN i);
 
-static struct http_buf *http_buf_freelist = 0;
-static struct http_channel *http_channel_freelist = 0;
+static struct http_buf *http_buf_freelist = 0;        /* thread pr */
+static struct http_channel *http_channel_freelist = 0; /* thread pr */
 
 struct http_channel_observer_s {
     void *data;
@@ -87,8 +89,8 @@ struct http_channel_observer_s {
 };
 
 
-static const char *http_lookup_header(struct http_header *header,
-                                      const char *name)
+const char *http_lookup_header(struct http_header *header,
+                               const char *name)
 {
     for (; header; header = header->next)
         if (!strcasecmp(name, header->name))
@@ -268,7 +270,7 @@ void http_addheader(struct http_response *r, const char *name, const char *value
     r->headers = h;
 }
 
-char *http_argbyname(struct http_request *r, char *name)
+const char *http_argbyname(struct http_request *r, const char *name)
 {
     struct http_argument *p;
     if (!name)
@@ -279,7 +281,7 @@ char *http_argbyname(struct http_request *r, char *name)
     return 0;
 }
 
-char *http_headerbyname(struct http_header *h, char *name)
+const char *http_headerbyname(struct http_header *h, const char *name)
 {
     for (; h; h = h->next)
         if (!strcmp(h->name, name))
@@ -1129,8 +1131,6 @@ static void http_accept(IOCHAN i, int event)
     pazpar2_add_channel(c);
 }
 
-static int listener_socket = 0;
-
 /* Create a http-channel listener, syntax [host:]port */
 int http_init(const char *addr, struct conf_server *server)
 {
@@ -1193,7 +1193,7 @@ int http_init(const char *addr, struct conf_server *server)
         return 1;
     }
 
-    listener_socket = l;
+    server->listener_socket = l;
 
     c = iochan_create(l, http_accept, EVENT_INPUT | EVENT_EXCEPT);
     iochan_setdata(c, server);
@@ -1201,15 +1201,15 @@ int http_init(const char *addr, struct conf_server *server)
     return 0;
 }
 
-void http_close_server(void)
+void http_close_server(struct conf_server *server)
 {
     /* break the event_loop (select) by closing down the HTTP listener sock */
-    if (listener_socket)
+    if (server->listener_socket)
     {
 #ifdef WIN32
-        closesocket(listener_socket);
+        closesocket(server->listener_socket);
 #else
-        close(listener_socket);
+        close(server->listener_socket);
 #endif
     }
 }