Added.
authorAlex Graveley <alex@ximian.com>
Fri, 1 Jun 2001 12:55:13 +0000 (12:55 +0000)
committerAlex Graveley <orph@src.gnome.org>
Fri, 1 Jun 2001 12:55:13 +0000 (12:55 +0000)
2001-06-01  Alex Graveley  <alex@ximian.com>

* src/soup-core/soup-message.c (soup_message_set_method):
(soup_message_add_header_handler):
(soup_message_add_response_code_handler):
(soup_message_add_body_handler): Added.

* src/soup-core/soup-socket.c (soup_address_get_name_sync): Allow
syncronous reverse name lookups.

* TODO (TODO): Updated.

* src/soup-core/Makefile.am (bin_PROGRAMS): Added soup-httpd.

* src/soup-core/soup-httpd.c: Added. Simple httpd server
implementation. This shares a *lot* of code with soup-queue.c, so
some hardc0re refactoring action is planned.

* configure.in (GMODULE_LIBS): Added.

ChangeLog
TODO
configure.in
libsoup/.cvsignore
libsoup/Makefile.am
libsoup/soup-message.c
libsoup/soup-message.h
libsoup/soup-private.h
libsoup/soup-server.c
libsoup/soup-socket.c
libsoup/soup-socket.h

index 92c7421..354c19c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2001-06-01  Alex Graveley  <alex@ximian.com>
+
+       * src/soup-core/soup-message.c (soup_message_set_method): 
+       (soup_message_add_header_handler): 
+       (soup_message_add_response_code_handler): 
+       (soup_message_add_body_handler): Added.
+
+       * src/soup-core/soup-socket.c (soup_address_get_name_sync): Allow
+       syncronous reverse name lookups.
+
+       * TODO (TODO): Updated.
+
+       * src/soup-core/Makefile.am (bin_PROGRAMS): Added soup-httpd.
+
+       * src/soup-core/soup-httpd.c: Added. Simple httpd server
+       implementation. This shares a *lot* of code with soup-queue.c, so
+       some hardc0re refactoring action is planned.
+
+       * configure.in (GMODULE_LIBS): Added.
+
 2001-05-29  Dick Porter  <dick@ximian.com>
 
        * tests/Makefile.am: Put the generated code into the build
diff --git a/TODO b/TODO
index b074664..d119334 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,20 +7,34 @@ TODO:
 
 * Document
 
-* Simple Soap Example clients and servers (time, updates, ...)
+* Tutorial Documentation
 
-* More SOCKS testing
+* Simple Soap Example clients and servers (time, updates, terraserver, ...)
 
-* *Simple* response cache
+* More SOCKS testing
 
 * Use gconf for config data
 
-* Tutorial Documentation
-
 * Make SoupMessage a generic HTTP engine (basically just make method settable).
 
 * handle gzip encoded responses, requests
 
 * MS Challenge/Response support
 
+* Server digest authentication
+
+* UDDI support
+
+* Disco support
+
+* DIME support
+
+* SOAP Routing Protocol serializer wrappers
+
+* Simple POP and SMTP engine.
+
+* Handle SOAP Attachments in HTTP and SMTP (use gmime)
+
 * C++ wrapper
+
+* GTK or Bonobo object generation
index ba5dc8a..8584a77 100644 (file)
@@ -71,9 +71,11 @@ AM_PATH_GLIB(1.2.0,,
 
 GLIB_CFLAGS=`glib-config --cflags glib`
 GLIB_LIBS=`glib-config --libs glib`
+GMODULE_LIBS=`glib-config --libs gmodule`
 
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
+AC_SUBST(GMODULE_LIBS)
 
 
 dnl ******************************
@@ -457,7 +459,6 @@ AC_OUTPUT([
        soup.spec
        Makefile
        docs/Makefile
-       docs/api/Makefile
        docs/reference/Makefile
        src/Makefile
        src/soup-core/Makefile
index 20ed541..d111409 100644 (file)
@@ -4,4 +4,5 @@
 .libs
 Makefile
 Makefile.in
+soup-httpd
 soup-ssl-proxy
index 0a16078..83d6c93 100644 (file)
@@ -70,7 +70,7 @@ libsoup_apache_la_LIBADD =    \
 libsoup_apache_la_SOURCES =    \
        soup-apache.c
 
-bin_PROGRAMS = soup-ssl-proxy
+bin_PROGRAMS = soup-ssl-proxy soup-httpd
 
 soup_ssl_proxy_LDADD =         \
        $(OPENSSL_LIBS)         \
@@ -84,5 +84,13 @@ soup_ssl_proxy_SOURCES =     \
        soup-openssl.c          \
        soup-ssl-proxy.c
 
+soup_httpd_LDADD =                                     \
+       $(GMODULE_LIBS)                                 \
+       $(POPT_LIBS)                                    \
+       $(top_builddir)/src/soup-core/libsoup.la
+
+soup_httpd_SOURCES =           \
+       soup-httpd.c
+
 EXTRA_DIST = 
 
index c792f38..1378e0d 100644 (file)
@@ -343,3 +343,38 @@ soup_message_get_flags (SoupMessage *msg)
 {
        return msg->priv->msg_flags;
 }
+
+void
+soup_message_set_method (SoupMessage *msg, SoupMessageMethod method)
+{
+       g_warning ("Not yet implemented.");
+}
+
+void 
+soup_message_add_header_handler (SoupMessage      *msg,
+                                const gchar      *header,
+                                SoupHandlerType   type,
+                                SoupHandlerFn     handler_cb,
+                                gpointer          user_data)
+{
+       g_warning ("Not yet implemented.");
+}
+
+void 
+soup_message_add_response_code_handler (SoupMessage      *msg,
+                                       guint             code,
+                                       SoupHandlerType   type,
+                                       SoupHandlerFn     handler_cb,
+                                       gpointer          user_data)
+{
+       g_warning ("Not yet implemented.");
+}
+
+void 
+soup_message_add_body_handler (SoupMessage      *msg,
+                              SoupHandlerType   type,
+                              SoupHandlerFn     handler_cb,
+                              gpointer          user_data)
+{
+       g_warning ("Not yet implemented.");
+}
index 6ce3cc4..8bb1998 100644 (file)
@@ -105,6 +105,41 @@ void           soup_message_set_response_header (SoupMessage      *req,
 const gchar   *soup_message_get_response_header (SoupMessage      *req,
                                                 const gchar      *name);
 
+typedef enum {
+       SOUP_METHOD_POST,
+       SOUP_METHOD_GET,
+       SOUP_METHOD_OPTIONS
+} SoupMessageMethod;
+
+void           soup_message_set_method          (SoupMessage      *msg,
+                                                SoupMessageMethod method);
+
+typedef enum {
+       SOUP_HANDLER_PRE_BODY,
+       SOUP_HANDLER_BODY_CHUNK,
+       SOUP_HANDLER_POST_BODY
+} SoupHandlerType;
+
+typedef SoupErrorCode SoupHandlerFn (SoupMessage *msg, gpointer user_data);
+
+void           soup_message_add_header_handler  (SoupMessage      *msg,
+                                                const gchar      *header,
+                                                SoupHandlerType   type,
+                                                SoupHandlerFn     handler_cb,
+                                                gpointer          user_data);
+
+void           soup_message_add_response_code_handler (
+                                                SoupMessage      *msg,
+                                                guint             code,
+                                                SoupHandlerType   type,
+                                                SoupHandlerFn     handler_cb,
+                                                gpointer          user_data);
+
+void           soup_message_add_body_handler    (SoupMessage      *msg,
+                                                SoupHandlerType   type,
+                                                SoupHandlerFn     handler_cb,
+                                                gpointer          user_data);
+
 /* FIXME: None of these are implemented yet, oh well... */
 typedef enum {
        SOUP_MESSAGE_FOLLOW_REDIRECT = (1 << 1),
index 80babb3..311d0e8 100644 (file)
@@ -19,6 +19,7 @@
 #include <netinet/in.h>
 
 #include "soup-context.h"
+#include "soup-message.h"
 #include "soup-server.h"
 #include "soup-socket.h"
 #include "soup-uri.h"
@@ -32,6 +33,7 @@ extern "C" {
 extern gboolean    soup_initialized;
 extern GSList     *soup_active_requests; /* CONTAINS: SoupMessage */
 extern GHashTable *soup_servers;         /* KEY: uri->host, VALUE: SoupServer */
+extern GSList     *soup_server_handlers;
 
 typedef struct {
        gchar      *host;
@@ -110,10 +112,13 @@ typedef struct {
 
 /* from soup-message.c */
 
-void      soup_message_issue_callback (SoupMessage   *req, 
-                                      SoupErrorCode  error);
+void          soup_message_issue_callback (SoupMessage      *req, 
+                                          SoupErrorCode     error);
 
-void      soup_message_cleanup        (SoupMessage   *req);
+SoupErrorCode soup_message_run_handlers   (SoupMessage      *msg,
+                                          SoupHandlerType   invoke_type);
+
+void          soup_message_cleanup        (SoupMessage      *req);
 
 /* from soup-misc.c */
 
index e7deb79..8bdd843 100644 (file)
@@ -17,7 +17,7 @@
 #include "soup-headers.h"
 #include "soup-private.h"
 
-static GSList                *soup_server_handlers = NULL;
+GSList *soup_server_handlers = NULL;
 
 static SoupServerAuthorizeFn  soup_server_global_auth = NULL;
 static gpointer               soup_server_global_auth_user_data = NULL;
index 8b7494e..1ed508e 100644 (file)
@@ -1323,6 +1323,31 @@ soup_address_get_name_cancel (SoupAddressGetNameId id)
 
 #endif         /*********** End Windows code ***********/
 
+static void
+soup_address_get_name_sync_cb (SoupAddress       *addr, 
+                              SoupAddressStatus  status, 
+                              const char        *name,
+                              gpointer           user_data)
+{
+       const char **ret = user_data;
+       *ret = name;
+}
+
+const gchar *
+soup_address_get_name_sync (SoupAddress *addr)
+{
+       const char *ret = (const char *) 0xdeadbeef; 
+
+       soup_address_get_name (addr, soup_address_get_name_sync_cb, &ret);
+
+       while (1) {
+               g_main_iteration (TRUE);
+               if (ret != (const char *) 0xdeadbeef) return ret;
+       }
+
+       return ret;
+}
+
 /**
  * soup_address_get_canonical_name:
  * @ia: Address to get the canonical name of.
index e42c967..47be597 100644 (file)
@@ -57,6 +57,8 @@ SoupAddressGetNameId soup_address_get_name           (SoupAddress*         ia,
 
 void                 soup_address_get_name_cancel    (SoupAddressGetNameId id);
 
+const gchar         *soup_address_get_name_sync      (SoupAddress *addr);
+
 gchar*               soup_address_get_canonical_name (SoupAddress*         ia);
 
 gint                 soup_address_get_port           (const SoupAddress*   ia);