#define SESSION_FLAG_USE_TLS (1 << 0)
struct _GWebResult {
- guint status;
+ guint16 status;
const guint8 *buffer;
gsize length;
};
return web->close_connection;
}
-static inline void call_result_func(struct web_session *session, guint status)
+static inline void call_result_func(struct web_session *session, guint16 status)
{
if (session->result_func == NULL)
return;
- session->result_func(status, &session->result, session->result_data);
+ if (status != 0)
+ session->result.status = status;
+
+ session->result_func(&session->result, session->result_data);
}
static gboolean received_data(GIOChannel *channel, GIOCondition cond,
session->transport_watch = 0;
session->result.buffer = NULL;
session->result.length = 0;
- call_result_func(session, 200);
+ call_result_func(session, 0);
return FALSE;
}
if (session->header_done == TRUE) {
session->result.buffer = session->receive_buffer;
session->result.length = bytes_read;
- call_result_func(session, 100);
+ call_result_func(session, 0);
return TRUE;
}
session->header_done = TRUE;
session->result.buffer = pos + 1;
session->result.length = bytes_read;
- call_result_func(session, 100);
+ call_result_func(session, 0);
break;
}
G_WEB_METHOD_GET,
} GWebMethod;
-typedef void (*GWebResultFunc)(guint16 status, GWebResult *result,
- gpointer user_data);
+typedef void (*GWebResultFunc)(GWebResult *result, gpointer user_data);
typedef void (*GWebDebugFunc)(const char *str, gpointer user_data);
g_main_loop_quit(main_loop);
}
-static void web_result(guint16 status, GWebResult *result, gpointer user_data)
+static void web_result(GWebResult *result, gpointer user_data)
{
+ guint16 status;
gdouble elapsed;
+ status = g_web_result_get_status(result);
+
elapsed = g_timer_elapsed(timer, NULL);
g_print("elapse: %f seconds\n", elapsed);
static guint request_id;
static GWebParser *request_parser;
-static void web_result(guint16 status, GWebResult *result, gpointer user_data)
+static void web_result(GWebResult *result, gpointer user_data)
{
const guint8 *chunk;
gsize length;
+ guint16 status;
gdouble elapsed;
status = g_web_result_get_status(result);