本文整理汇总了C++中soup_message_set_status函数的典型用法代码示例。如果您正苦于以下问题:C++ soup_message_set_status函数的具体用法?C++ soup_message_set_status怎么用?C++ soup_message_set_status使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了soup_message_set_status函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: do_put
static void
do_put (SoupServer *server, SoupMessage *msg, const char *path)
{
struct stat st;
FILE *f;
gboolean created = TRUE;
if (stat (path, &st) != -1) {
const char *match = soup_message_headers_get_one (msg->request_headers, "If-None-Match");
if (match && !strcmp (match, "*")) {
soup_message_set_status (msg, SOUP_STATUS_CONFLICT);
return;
}
if (!S_ISREG (st.st_mode)) {
soup_message_set_status (msg, SOUP_STATUS_FORBIDDEN);
return;
}
created = FALSE;
}
f = fopen (path, "w");
if (!f) {
soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR);
return;
}
fwrite (msg->request_body->data, 1, msg->request_body->length, f);
fclose (f);
soup_message_set_status (msg, created ? SOUP_STATUS_CREATED : SOUP_STATUS_OK);
}
开发者ID:Distrotech,项目名称:libsoup,代码行数:33,代码来源:simple-httpd.c
示例2: gss_program_jpeg_resource
static void
gss_program_jpeg_resource (GssTransaction * t)
{
GssProgram *program = (GssProgram *) t->resource->priv;
GstBuffer *buffer = NULL;
if (!program->enable_streaming || program->state != GSS_PROGRAM_STATE_RUNNING) {
soup_message_set_status (t->msg, SOUP_STATUS_NO_CONTENT);
return;
}
if (program->jpegsink) {
g_object_get (program->jpegsink, "last-buffer", &buffer, NULL);
}
if (buffer) {
soup_message_set_status (t->msg, SOUP_STATUS_OK);
soup_message_set_response (t->msg, "image/jpeg", SOUP_MEMORY_COPY,
(void *) GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
gst_buffer_unref (buffer);
} else {
gss_html_error_404 (t->server, t->msg);
}
}
开发者ID:SuchangKo,项目名称:gst-stream-server,代码行数:27,代码来源:gss-program.c
示例3: serverCallback
static void
serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable* query, SoupClientContext* context, void* data)
{
if (message->method != SOUP_METHOD_GET) {
soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
return;
}
if (g_str_equal(path, "/favicon.ico")) {
soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
soup_message_body_complete(message->response_body);
return;
}
char* contents;
gsize length;
if (g_str_equal(path, "/icon/favicon.ico")) {
GUniquePtr<char> pathToFavicon(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr));
g_file_get_contents(pathToFavicon.get(), &contents, &length, 0);
soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length);
} else if (g_str_equal(path, "/nofavicon")) {
static const char* noFaviconHTML = "<html><head><body>test</body></html>";
soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, noFaviconHTML, strlen(noFaviconHTML));
} else {
static const char* contentsHTML = "<html><head><link rel='icon' href='/icon/favicon.ico' type='image/x-ico; charset=binary'></head><body>test</body></html>";
soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, contentsHTML, strlen(contentsHTML));
}
soup_message_set_status(message, SOUP_STATUS_OK);
soup_message_body_complete(message->response_body);
}
开发者ID:AndriyKalashnykov,项目名称:webkit,代码行数:31,代码来源:TestWebKitFaviconDatabase.cpp
示例4: snra_server_client_new
SnraServerClient *
snra_server_client_new (SoupServer * soup, SoupMessage * msg,
SoupClientContext * context)
{
SnraServerClient *client = g_object_new (SNRA_TYPE_SERVER_CLIENT, NULL);
const gchar *accept_challenge;
gchar *accept_reply;
client->soup = soup;
client->event_pipe = msg;
client->host = g_strdup (soup_client_context_get_host (context));
client->net_event_sig = g_signal_connect (msg, "network-event",
G_CALLBACK (snra_server_client_network_event), client);
client->disco_sig = g_signal_connect (msg, "finished",
G_CALLBACK (snra_server_client_disconnect), client);
if (!is_websocket_client (client)) {
client->type = SNRA_SERVER_CLIENT_CHUNKED;
client->need_body_complete = TRUE;
soup_message_headers_set_encoding (msg->response_headers,
SOUP_ENCODING_CHUNKED);
soup_message_set_status (msg, SOUP_STATUS_OK);
return client;
}
/* Otherwise, it's a websocket client */
client->type = SNRA_SERVER_CLIENT_WEBSOCKET;
client->need_body_complete = FALSE;
client->socket = soup_client_context_get_socket (context);
client->in_bufptr = client->in_buf = g_new0 (gchar, 1024);
client->in_bufsize = 1024;
client->in_bufavail = 0;
accept_challenge =
soup_message_headers_get_one (msg->request_headers, "Sec-WebSocket-Key");
accept_reply = calc_websocket_challenge_reply (accept_challenge);
soup_message_headers_set_encoding (msg->response_headers, SOUP_ENCODING_EOF);
soup_message_set_status (msg, SOUP_STATUS_SWITCHING_PROTOCOLS);
soup_message_headers_replace (msg->response_headers, "Upgrade", "websocket");
soup_message_headers_replace (msg->response_headers, "Connection", "Upgrade");
soup_message_headers_replace (msg->response_headers, "Sec-WebSocket-Accept",
accept_reply);
soup_message_headers_replace (msg->response_headers, "Sec-WebSocket-Protocol",
"aurena");
g_free (accept_reply);
client->wrote_info_sig = g_signal_connect (msg, "wrote-informational",
G_CALLBACK (snra_server_client_wrote_headers), client);
return client;
}
开发者ID:elisescu,项目名称:aurena,代码行数:57,代码来源:snra-server-client.c
示例5: get
void get(SoupServer *server,
SoupMessage *msg,
const char *path)
{
struct btval key, val;
key.data = (void*)path+1;
key.size = strlen(path)-1;
key.free_data = FALSE;
key.mp = NULL;
g_debug ("GET\n Path=%s\n Fetching key %s", path, (char*)key.data);
const struct btree_stat *stat = btree_stat(btree);
show_dbstats("",stat);
if (0 == btree_get(btree,&key,&val)) {
g_debug ("hmm %s", (char*)val.data);
GVariant *gv = g_variant_new_from_data(G_VARIANT_TYPE_VARIANT, val.data, val.size, TRUE, NULL, NULL);
char *debug = g_variant_print (gv, TRUE);
g_debug ("converted to %s", debug);
g_free (debug);
g_variant_unref(gv);
soup_message_set_status (msg, SOUP_STATUS_OK);
} else {
soup_message_set_status (msg, SOUP_STATUS_NOT_FOUND);
}
// soup_message_set_response (msg, "application/json", SOUP_MEMORY_STATIC,
// );
}
开发者ID:robtaylor,项目名称:tiny-couch,代码行数:27,代码来源:main.c
示例6: serverCallback
static void
serverCallback(SoupServer *server, SoupMessage *message, const char *path, GHashTable *query, SoupClientContext *context, void *data)
{
if (message->method != SOUP_METHOD_GET) {
soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
return;
}
soup_message_set_status(message, SOUP_STATUS_OK);
char *contents;
gsize length;
if (g_str_equal(path, "/favicon.ico")) {
GError *error = NULL;
g_file_get_contents("blank.ico", &contents, &length, &error);
g_assert(!error);
} else {
contents = g_strdup("<html><body>test</body></html>");
length = strlen(contents);
}
soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length);
soup_message_body_complete(message->response_body);
}
开发者ID:EliBing,项目名称:webkit,代码行数:25,代码来源:testfavicondatabase.c
示例7: tunnel_connected_cb
static void
tunnel_connected_cb (GObject *object,
GAsyncResult *result,
gpointer user_data)
{
Tunnel *tunnel = user_data;
GError *error = NULL;
tunnel->server.iostream = (GIOStream *)
g_socket_client_connect_to_host_finish (G_SOCKET_CLIENT (object), result, &error);
if (!tunnel->server.iostream) {
soup_message_set_status (tunnel->msg, SOUP_STATUS_BAD_GATEWAY);
soup_message_set_response (tunnel->msg, "text/plain",
SOUP_MEMORY_COPY,
error->message, strlen (error->message));
g_error_free (error);
soup_server_unpause_message (tunnel->self, tunnel->msg);
tunnel_close (tunnel);
return;
}
tunnel->server.istream = g_io_stream_get_input_stream (tunnel->server.iostream);
tunnel->server.ostream = g_io_stream_get_output_stream (tunnel->server.iostream);
soup_message_set_status (tunnel->msg, SOUP_STATUS_OK);
soup_server_unpause_message (tunnel->self, tunnel->msg);
g_signal_connect (tunnel->msg, "finished",
G_CALLBACK (start_tunnel), tunnel);
}
开发者ID:Distrotech,项目名称:libsoup,代码行数:29,代码来源:simple-proxy.c
示例8: ipv6_server_callback
static void
ipv6_server_callback (SoupServer *server, SoupMessage *msg,
const char *path, GHashTable *query,
SoupClientContext *context, gpointer data)
{
const char *host;
char expected_host[128];
host = soup_message_headers_get_one (msg->request_headers, "Host");
if (!host) {
debug_printf (1, " request has no Host header!\n");
errors++;
soup_message_set_status (msg, SOUP_STATUS_BAD_REQUEST);
return;
}
g_snprintf (expected_host, sizeof (expected_host),
"[::1]:%d", soup_server_get_port (server));
if (strcmp (host, expected_host) == 0)
soup_message_set_status (msg, SOUP_STATUS_OK);
else {
debug_printf (1, " request has incorrect Host header '%s'\n", host);
errors++;
soup_message_set_status (msg, SOUP_STATUS_BAD_REQUEST);
}
}
开发者ID:Kharif,项目名称:libsoup,代码行数:27,代码来源:misc-test.c
示例9: serverHandleStatic
void serverHandleStatic(SoupServer *server,
SoupMessage *msg,
const char *path,
GHashTable *query,
SoupClientContext *client,
gpointer user_data)
{
gchar *current_dir = g_get_current_dir();
gchar full_file_path[256];
sprintf(full_file_path, "%s%s", current_dir, path);
bool ok = false;
//TODO: reject .. in path
int fd = open(full_file_path, O_RDONLY);
if(fd != -1) {
struct stat sstat;
if(fstat(fd, &sstat) != -1) {
size_t len = (size_t)sstat.st_size;
void *addr = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0);
if(addr != MAP_FAILED) {
const gchar *content_type = getContentType(path);
soup_message_set_response(msg, content_type, SOUP_MEMORY_COPY, addr, len);
soup_message_set_status(msg, 200);
fprintf(stderr, "GET: %s, size is %ld, type is '%s'\n", full_file_path, len, content_type);
ok = true;
}
}
close(fd);
}
if(!ok) {
soup_message_set_status(msg, 404);
fprintf(stderr, "ERROR: %s\n", full_file_path);
}
}
开发者ID:NoiseEHC,项目名称:sugar-webkit-native,代码行数:33,代码来源:test2.c
示例10: server_callback
/* For real request testing */
static void
server_callback(SoupServer* server, SoupMessage* msg,
const char* path, GHashTable* query,
SoupClientContext* context, gpointer data)
{
if (msg->method != SOUP_METHOD_GET) {
soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
return;
}
soup_message_set_status(msg, SOUP_STATUS_OK);
if (g_str_equal(path, "/favicon.ico")) {
char* contents;
gsize length;
GError* error = NULL;
g_file_get_contents("blank.ico", &contents, &length, &error);
g_assert(!error);
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
} else if (g_str_equal(path, "/bigdiv.html")) {
char* contents = g_strdup("<html><body><div style=\"background-color: green; height: 1200px;\"></div></body></html>");
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents));
} else if (g_str_equal(path, "/iframe.html")) {
char* contents = g_strdup("<html><body><div style=\"background-color: green; height: 50px;\"></div><iframe src=\"bigdiv.html\"></iframe></body></html>");
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents));
} else {
char* contents = g_strdup("<html><body>test</body></html>");
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents));
}
soup_message_body_complete(msg->response_body);
}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:35,代码来源:testwebview.c
示例11: httpServerCallback
static void httpServerCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
{
if (message->method != SOUP_METHOD_GET) {
soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
return;
}
if (g_str_equal(path, "/test-script")) {
GOwnPtr<char> pathToFile(g_build_filename(Test::getResourcesDir().data(), "link-title.js", NULL));
char* contents;
gsize length;
g_file_get_contents(pathToFile.get(), &contents, &length, 0);
soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length);
soup_message_set_status(message, SOUP_STATUS_OK);
soup_message_body_complete(message->response_body);
} else if (g_str_equal(path, "/test-image")) {
GOwnPtr<char> pathToFile(g_build_filename(Test::getWebKit1TestResoucesDir().data(), "blank.ico", NULL));
char* contents;
gsize length;
g_file_get_contents(pathToFile.get(), &contents, &length, 0);
soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length);
soup_message_set_status(message, SOUP_STATUS_OK);
soup_message_body_complete(message->response_body);
} else
soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
}
开发者ID:jiezh,项目名称:h5vcc,代码行数:28,代码来源:TestSSL.cpp
示例12: server_callback
/* For real request testing */
static void
server_callback(SoupServer* server, SoupMessage* msg,
const char* path, GHashTable* query,
SoupClientContext* context, gpointer data)
{
if (msg->method != SOUP_METHOD_GET) {
soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
return;
}
soup_message_set_status(msg, SOUP_STATUS_OK);
if (g_str_equal(path, "/test_loading_status") || g_str_equal(path, "/test_loading_status2"))
soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING));
else if (g_str_equal(path, "/test_load_error")) {
soup_message_set_status(msg, SOUP_STATUS_CANT_CONNECT);
} else if (g_str_equal(path, "/test_loading_cancelled")) {
soup_message_headers_set_encoding(msg->response_headers, SOUP_ENCODING_CHUNKED);
soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING));
soup_server_unpause_message(server, msg);
return;
}
soup_message_body_complete(msg->response_body);
}
开发者ID:CannedFish,项目名称:webkitgtk,代码行数:26,代码来源:testloading.c
示例13: databases_items_xxx
static void
databases_items_xxx (DMAPShare * share,
SoupServer * server,
SoupMessage * msg,
const char *path,
GHashTable * query, SoupClientContext * context)
{
DMAPDb *db;
const gchar *transcode_mimetype;
const gchar *rest_of_path;
const gchar *id_str;
guint id;
const gchar *range_header;
guint64 filesize;
guint64 offset = 0;
DAAPRecord *record;
rest_of_path = strchr (path + 1, '/');
id_str = rest_of_path + 9;
id = strtoul (id_str, NULL, 10);
g_object_get (share, "db", &db, NULL);
record = DAAP_RECORD (dmap_db_lookup_by_id (db, id));
g_object_get (record, "filesize", &filesize, NULL);
DMAP_SHARE_GET_CLASS (share)->message_add_standard_headers
(share, msg);
soup_message_headers_append (msg->response_headers, "Accept-Ranges",
"bytes");
range_header =
soup_message_headers_get_one (msg->request_headers, "Range");
if (range_header) {
const gchar *s;
gchar *content_range;
s = range_header + 6; /* bytes= */
offset = atoll (s);
content_range =
g_strdup_printf ("bytes %" G_GUINT64_FORMAT "-%"
G_GUINT64_FORMAT "/%"
G_GUINT64_FORMAT, offset, filesize,
filesize);
soup_message_headers_append (msg->response_headers,
"Content-Range", content_range);
g_debug ("Content range is %s.", content_range);
g_free (content_range);
soup_message_set_status (msg, SOUP_STATUS_PARTIAL_CONTENT);
} else {
soup_message_set_status (msg, SOUP_STATUS_OK);
}
g_object_get (share, "transcode-mimetype", &transcode_mimetype, NULL);
send_chunked_file (server, msg, record, filesize, offset,
transcode_mimetype);
g_object_unref (record);
}
开发者ID:KOLYaNYChCh,项目名称:libdmapsharing,代码行数:58,代码来源:daap-share.c
示例14: process_image_callback
static void
process_image_callback (SoupServer *server, SoupMessage *msg,
const char *path, GHashTable *query,
SoupClientContext *context, gpointer user_data) {
UiConnection *self = (UiConnection *)user_data;
// Lookup network
Network *network = NULL;
{
const gchar *graph_id = g_hash_table_lookup(query, "graph");
network = (graph_id) ? g_hash_table_lookup(self->network_map, graph_id) : NULL;
}
if (!network) {
soup_message_set_status_full(msg, SOUP_STATUS_BAD_REQUEST, "'graph' not specified or wrong");
return;
}
// Lookup node
Processor *processor = NULL;
{
const gchar *node_id = g_hash_table_lookup(query, "node");
processor = (node_id) ? network_processor(network, node_id) : NULL;
}
if (!processor) {
soup_message_set_status_full(msg, SOUP_STATUS_BAD_REQUEST, "'node' not specified or wrong");
return;
}
// Render output
// FIXME: allow region-of-interest and scale as query params
gchar *rgba = NULL;
GeglRectangle roi;
const gboolean success = processor_blit(processor, babl_format("R'G'B'A u8"), &roi, &rgba);
if (!success) {
soup_message_set_status(msg, SOUP_STATUS_BAD_REQUEST);
g_free(rgba);
return;
}
if (!(roi.width > 0 && roi.height > 0)) {
soup_message_set_status(msg, SOUP_STATUS_BAD_REQUEST);
g_free(rgba);
return;
}
// Compress to PNG
{
PngEncoder *encoder = png_encoder_new();
png_encoder_encode_rgba(encoder, roi.width, roi.height, rgba);
char *png = encoder->buffer;
const size_t len = encoder->size;
soup_message_set_status(msg, SOUP_STATUS_OK);
soup_message_set_response(msg, "image/png", SOUP_MEMORY_COPY, png, len);
png_encoder_free(encoder);
}
}
开发者ID:automata,项目名称:imgflo,代码行数:56,代码来源:ui.c
示例15: prv_soup_server_cb
static void prv_soup_server_cb(SoupServer *server, SoupMessage *msg,
const char *path, GHashTable *query,
SoupClientContext *client, gpointer user_data)
{
rsu_host_file_t *hf;
rsu_host_server_t *hs = user_data;
const gchar *file_name;
SoupMessageHeaders *hdrs;
if (msg->method != SOUP_METHOD_GET) {
soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
goto on_error;
}
hf = prv_host_server_find_file(hs, path, &file_name);
if (!hf) {
soup_message_set_status(msg, SOUP_STATUS_NOT_FOUND);
goto on_error;
}
if (hf->mapped_file) {
g_mapped_file_ref(hf->mapped_file);
++hf->mapped_count;
} else {
hf->mapped_file = g_mapped_file_new(file_name, FALSE, NULL);
if (!hf->mapped_file) {
soup_message_set_status(msg, SOUP_STATUS_NOT_FOUND);
goto on_error;
}
hf->mapped_count = 1;
}
g_signal_connect(msg, "finished",
G_CALLBACK(prv_soup_message_finished_cb), hf);
g_object_get(msg, "response-headers", &hdrs, NULL);
/* TODO: Need to add the relevant DLNA headers */
/* soup_message_headers_append(hdrs, "contentFeatures.dlna.org",
"DLNA.ORG_PN=PNG_LRG;DLNA.ORG_OP=01;"DLNA.ORG_FLAGS=00f00000000000000000000000000000");
soup_message_headers_append(hdrs, "Connection", "close");
*/
soup_message_set_status(msg, SOUP_STATUS_OK);
soup_message_set_response(msg, hf->mime_type, SOUP_MEMORY_STATIC,
g_mapped_file_get_contents(hf->mapped_file),
g_mapped_file_get_length(hf->mapped_file));
on_error:
return;
}
开发者ID:markdryan,项目名称:renderer-service-upnp,代码行数:55,代码来源:host-service.c
示例16: server_callback
/* For real request testing */
static void
server_callback(SoupServer *server, SoupMessage *msg,
const char *path, GHashTable *query,
SoupClientContext *context, gpointer data)
{
if (msg->method != SOUP_METHOD_GET) {
soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
return;
}
soup_message_set_status(msg, SOUP_STATUS_OK);
/* PDF */
if (g_str_equal(path, "/pdf")) {
char* contents;
gsize length;
GError* error = NULL;
g_file_get_contents("test.pdf", &contents, &length, &error);
g_assert(!error);
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
} else if (g_str_equal(path, "/html")) {
char* contents;
gsize length;
GError* error = NULL;
g_file_get_contents("test.html", &contents, &length, &error);
g_assert(!error);
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
} else if (g_str_equal(path, "/text")) {
char* contents;
gsize length;
GError* error = NULL;
soup_message_headers_append(msg->response_headers, "Content-Disposition", "attachment; filename=test.txt");
g_file_get_contents("test.txt", &contents, &length, &error);
g_assert(!error);
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
} else if (g_str_equal(path, "/ogg")) {
char* contents;
gsize length;
GError* error = NULL;
g_file_get_contents("test.ogg", &contents, &length, &error);
g_assert(!error);
soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
}
soup_message_body_complete(msg->response_body);
}
开发者ID:325116067,项目名称:semc-qsd8x50,代码行数:56,代码来源:testmimehandling.c
示例17: tunnel_message_completed
static void
tunnel_message_completed (SoupMessage *msg, gpointer user_data)
{
SoupMessageQueueItem *item = user_data;
SoupSession *session = item->session;
if (item->state == SOUP_MESSAGE_RESTARTING) {
soup_message_restarted (msg);
if (item->conn) {
soup_session_send_queue_item (session, item, tunnel_message_completed);
return;
}
soup_message_set_status (msg, SOUP_STATUS_TRY_AGAIN);
}
item->state = SOUP_MESSAGE_FINISHED;
if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) {
if (item->conn)
soup_connection_disconnect (item->conn);
if (msg->status_code == SOUP_STATUS_TRY_AGAIN) {
item->related->state = SOUP_MESSAGE_AWAITING_CONNECTION;
g_object_unref (item->related->conn);
item->related->conn = NULL;
} else
soup_message_set_status (item->related->msg, msg->status_code);
goto done;
}
if (!soup_connection_start_ssl (item->conn)) {
if (item->conn)
soup_connection_disconnect (item->conn);
soup_message_set_status (item->related->msg, SOUP_STATUS_SSL_FAILED);
goto done;
}
g_signal_connect (item->conn, "disconnected",
G_CALLBACK (connection_closed), item->session);
soup_connection_set_state (item->conn, SOUP_CONNECTION_IDLE);
soup_connection_set_state (item->conn, SOUP_CONNECTION_IN_USE);
item->related->state = SOUP_MESSAGE_READY;
done:
soup_message_finished (msg);
if (item->related->msg->status_code)
item->related->state = SOUP_MESSAGE_FINISHING;
do_idle_run_queue (item->session);
soup_message_queue_item_unref (item->related);
soup_session_unqueue_item (session, item);
soup_message_queue_item_unref (item);
g_object_unref (session);
}
开发者ID:BabaNina,项目名称:libsoup,代码行数:55,代码来源:soup-session-async.c
示例18: soup_rpc_callback
static void
soup_rpc_callback (SoupServerContext *context, SoupMessage *msg, gpointer data)
{
xmlrpc_env env;
xmlrpc_mem_block *output;
const char *username;
RCDIdentity *identity = NULL;
RCDRPCMethodData *method_data;
xmlrpc_env_init (&env);
method_data = g_new0 (RCDRPCMethodData, 1);
/* Get the username from the auth context and get its identity */
username = soup_server_auth_get_user (context->auth);
if (strcmp (username, rcd_prefs_get_mid ()) == 0) {
identity = rcd_identity_new ();
identity->username = g_strdup ("server");
identity->privileges = rcd_privileges_from_string ("superuser");
}
else
identity = rcd_identity_lookup (username);
g_assert (identity != NULL);
method_data->host = soup_server_context_get_client_host (context);
method_data->identity = identity;
output = process_rpc_call (
&env, msg->request.body, msg->request.length, method_data);
rcd_identity_free (method_data->identity);
g_free (method_data);
soup_message_add_header (msg->response_headers,
"Server", "Red Carpet Daemon/"VERSION);
if (env.fault_occurred) {
soup_message_set_status (msg, SOUP_STATUS_BAD_REQUEST);
return;
}
/* Let Soup free the data for us */
msg->response.owner = SOUP_BUFFER_SYSTEM_OWNED;
msg->response.length = XMLRPC_TYPED_MEM_BLOCK_SIZE(char, output);
msg->response.body = g_memdup(
XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, output), msg->response.length);
soup_message_set_status (msg, SOUP_STATUS_OK);
xmlrpc_mem_block_free(output);
} /* soup_rpc_callback */
开发者ID:joeshaw,项目名称:rcd,代码行数:53,代码来源:rcd-rpc.c
示例19: serverHandleJournal
void serverHandleJournal(SoupServer *server,
SoupMessage *msg,
const char *path,
GHashTable *query,
SoupClientContext *client,
gpointer user_data)
{
bool ok = false;
if(strcmp(path, "/journal/journal.html") == 0) {
GDBusProxy *journal = g_dbus_proxy_new_for_bus_sync(
G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL,
"org.laptop.sugar.DataStore",
"/org/laptop/sugar/DataStore",
"org.laptop.sugar.DataStore",
NULL, NULL);
GVariant *params = g_variant_new("(a{sv}as)", NULL, NULL);
GError *error = NULL;
GVariant *result = g_dbus_proxy_call_sync(
journal, "find", params, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
if(error != NULL) {fprintf(stderr, "error: %d, %d, %s\n", error->domain, error->code, error->message);}
if(result != NULL) {
soup_message_headers_replace(msg->response_headers, "Content-Type", "text/html");
append(msg, "<html><body>");
GVariant *results = NULL;
guint32 count = -1;
g_variant_get(result, "(@aa{sv}u)", &results, &count);
GVariant *dictionary = NULL;
GVariantIter results_iter;
g_variant_iter_init(&results_iter, results);
while (g_variant_iter_loop(&results_iter, "@a{sv}", &dictionary)) {
append(msg, "<p><a href='");
append(msg, lookup(dictionary, "uid", "invalid object id"));
append(msg, "'>");
append(msg, lookup(dictionary, "title", "invalid title"));
append(msg, "</a></p>");
}
append(msg, "</body></html>");
soup_message_set_status(msg, 200);
fprintf(stderr, "GET: %s\n", path);
ok = true;
}
}
if(!ok) {
soup_message_set_status(msg, 404);
fprintf(stderr, "ERROR: %s\n", path);
}
}
开发者ID:NoiseEHC,项目名称:sugar-webkit-native,代码行数:52,代码来源:test2.c
示例20: gss_program_jpeg_resource
static void
gss_program_jpeg_resource (GssTransaction * t)
{
GssProgram *program = (GssProgram *) t->resource->priv;
#if GST_CHECK_VERSION(1,0,0)
GstSample *sample = NULL;
#endif
GstBuffer *buffer = NULL;
if (!program->enable_streaming || program->state != GSS_PROGRAM_STATE_RUNNING) {
soup_message_set_status (t->msg, SOUP_STATUS_NO_CONTENT);
return;
}
#if GST_CHECK_VERSION(1,0,0)
if (program->jpegsink) {
g_object_get (program->jpegsink, "last-sample", &sample, NULL);
}
if (sample) {
GstMapInfo mapinfo;
buffer = gst_sample_get_buffer (sample);
if (buffer) {
soup_message_set_status (t->msg, SOUP_STATUS_OK);
gst_buffer_map (buffer, &mapinfo, GST_MAP_READ);
soup_message_set_response (t->msg, "image/jpeg", SOUP_MEMORY_COPY,
(char *) mapinfo.data, mapinfo.size);
gst_buffer_unmap (buffer, &mapinfo);
}
gst_sample_unref (sample);
return;
}
#else
if (program->jpegsink) {
g_object_get (program->jpegsink, "last-buffer", &buffer, NULL);
}
if (buffer) {
soup_message_set_status (t->msg, SOUP_STATUS_OK);
soup_message_set_response (t->msg, "image/jpeg", SOUP_MEMORY_COPY,
(char *) GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
gst_buffer_unref (buffer);
return;
}
#endif
gss_html_error_404 (t->server, t->msg);
}
开发者ID:freedesktop-unofficial-mirror,项目名称:gstreamer__gst-streaming-server,代码行数:51,代码来源:gss-program.c
注:本文中的soup_message_set_status函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论