/** * cockpit_web_response_headers: * @self: the response * @status: the HTTP status code * @reason: the HTTP reason * @length: the combined length of data blocks to follow, or -1 * @headers: headers to include or NULL * * See cockpit_web_response_content() for an easy to use function. * * Queue the headers of the response. No data blocks must yet be * queued on the response. * * Don't put Content-Length or Connection in @headers. * * If @length is zero or greater, then it must represent the * number of queued blocks to follow. */ void cockpit_web_response_headers_full (CockpitWebResponse *self, guint status, const gchar *reason, gssize length, GHashTable *headers) { GString *string; GBytes *block; g_return_if_fail (COCKPIT_IS_WEB_RESPONSE (self)); if (self->count > 0) { g_critical ("Headers should be sent first. This is a programmer error."); return; } string = begin_headers (self, status, reason); block = finish_headers (self, string, length, status, append_table (string, headers)); queue_bytes (self, block); g_bytes_unref (block); }
/** * cockpit_web_response_headers: * @self: the response * @status: the HTTP status code * @reason: the HTTP reason * @length: the combined length of data blocks to follow, or -1 * * See cockpit_web_response_content() for an easy to use function. * * Queue the headers of the response. No data blocks must yet be * queued on the response. * * Specify header name/value pairs in the var args, and end with * a NULL name. If value is NULL, then that header won't be sent. * * Don't specify Content-Length or Connection headers. * * If @length is zero or greater, then it must represent the * number of queued blocks to follow. */ void cockpit_web_response_headers (CockpitWebResponse *self, guint status, const gchar *reason, gssize length, ...) { GString *string; GBytes *block; va_list va; if (self->count > 0) { g_critical ("Headers should be sent first. This is a programmer error."); return; } string = begin_headers (self, status, reason); va_start (va, length); block = finish_headers (self, string, length, status >= 200 && status <= 299, append_va (string, va)); va_end (va); queue_bytes (self, block); g_bytes_unref (block); }