From: Alex Graveley Date: Fri, 1 Jun 2001 12:55:13 +0000 (+0000) Subject: Added. X-Git-Tag: SOUP_0_4_1~41 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4235bc70d6080516fdd18e55673fc3c85b4df793;p=platform%2Fupstream%2Flibsoup.git Added. 2001-06-01 Alex Graveley * 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. --- diff --git a/ChangeLog b/ChangeLog index 92c7421..354c19c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2001-06-01 Alex Graveley + + * 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 * tests/Makefile.am: Put the generated code into the build diff --git a/TODO b/TODO index b074664..d119334 100644 --- 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 diff --git a/configure.in b/configure.in index ba5dc8a..8584a77 100644 --- a/configure.in +++ b/configure.in @@ -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 diff --git a/libsoup/.cvsignore b/libsoup/.cvsignore index 20ed541..d111409 100644 --- a/libsoup/.cvsignore +++ b/libsoup/.cvsignore @@ -4,4 +4,5 @@ .libs Makefile Makefile.in +soup-httpd soup-ssl-proxy diff --git a/libsoup/Makefile.am b/libsoup/Makefile.am index 0a16078..83d6c93 100644 --- a/libsoup/Makefile.am +++ b/libsoup/Makefile.am @@ -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 = diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c index c792f38..1378e0d 100644 --- a/libsoup/soup-message.c +++ b/libsoup/soup-message.c @@ -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."); +} diff --git a/libsoup/soup-message.h b/libsoup/soup-message.h index 6ce3cc4..8bb1998 100644 --- a/libsoup/soup-message.h +++ b/libsoup/soup-message.h @@ -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), diff --git a/libsoup/soup-private.h b/libsoup/soup-private.h index 80babb3..311d0e8 100644 --- a/libsoup/soup-private.h +++ b/libsoup/soup-private.h @@ -19,6 +19,7 @@ #include #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 */ diff --git a/libsoup/soup-server.c b/libsoup/soup-server.c index e7deb79..8bdd843 100644 --- a/libsoup/soup-server.c +++ b/libsoup/soup-server.c @@ -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; diff --git a/libsoup/soup-socket.c b/libsoup/soup-socket.c index 8b7494e..1ed508e 100644 --- a/libsoup/soup-socket.c +++ b/libsoup/soup-socket.c @@ -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. diff --git a/libsoup/soup-socket.h b/libsoup/soup-socket.h index e42c967..47be597 100644 --- a/libsoup/soup-socket.h +++ b/libsoup/soup-socket.h @@ -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);