+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
* 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
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 ******************************
soup.spec
Makefile
docs/Makefile
- docs/api/Makefile
docs/reference/Makefile
src/Makefile
src/soup-core/Makefile
.libs
Makefile
Makefile.in
+soup-httpd
soup-ssl-proxy
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) \
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 =
{
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.");
+}
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),
#include <netinet/in.h>
#include "soup-context.h"
+#include "soup-message.h"
#include "soup-server.h"
#include "soup-socket.h"
#include "soup-uri.h"
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;
/* 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 */
#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;
#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.
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);