mirror of
https://github.com/sigmasternchen/CShore
synced 2025-03-15 08:08:56 +00:00
added response header to context
This commit is contained in:
parent
70bf93a3ed
commit
47747af272
6 changed files with 27 additions and 6 deletions
2
Makefile
2
Makefile
|
@ -8,7 +8,7 @@ LIBARGO = libargo/libargo.a
|
|||
LIBPARCIVAL = libparcival/libparcival.a
|
||||
LIBS = $(CFLOOR_LIB) $(LIBARGO) $(LIBPARCIVAL)
|
||||
|
||||
OBJS = obj/router.o obj/request.o obj/base_cfloor.o obj/base_cgi.o obj/auth.o obj/base64.o
|
||||
OBJS = obj/router.o obj/request.o obj/base_cfloor.o obj/base_cgi.o obj/auth.o obj/base64.o obj/common.o
|
||||
DEPS = $(OBJS:%.o=%.d)
|
||||
|
||||
DEMO_OBJS = obj/demo.o obj/entities.tab.o obj/template.tab.o
|
||||
|
|
|
@ -23,7 +23,8 @@ static void handler(struct request request, struct response _response) {
|
|||
peerAddr: request.peer.addr,
|
||||
peerPort: request.peer.port,
|
||||
auth: getAuthData(request.headers),
|
||||
headers: *request.headers
|
||||
requestHeaders: *request.headers,
|
||||
responseHeaders: headers_create()
|
||||
};
|
||||
|
||||
response_t response = routerHandler(ctx);
|
||||
|
@ -32,9 +33,12 @@ static void handler(struct request request, struct response _response) {
|
|||
}
|
||||
|
||||
freeAuthData(ctx.auth);
|
||||
|
||||
headers_merge(&ctx.responseHeaders, &response.headers);
|
||||
|
||||
int fd = _response.sendHeader(response.status, &response.headers, &request);
|
||||
int fd = _response.sendHeader(response.status, &ctx.responseHeaders, &request);
|
||||
headers_free(&response.headers);
|
||||
headers_free(&ctx.responseHeaders);
|
||||
|
||||
if (fd < 0) {
|
||||
error("csite: sendHeader: %s", strerror(errno));
|
||||
|
|
|
@ -110,7 +110,8 @@ int main(int argc, char** argv) {
|
|||
peerAddr: or(getenv("REMOTE_ADDR"), ""),
|
||||
peerPort: 0, // TODO
|
||||
auth: getAuthData(request.headers),
|
||||
headers: headers
|
||||
requestHeaders: headers,
|
||||
responseHeaders: headers_create()
|
||||
};
|
||||
|
||||
response_t response = routerHandler(ctx);
|
||||
|
@ -119,13 +120,17 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
|
||||
headers_free(&headers);
|
||||
|
||||
headers_merge(&ctx.responseHeaders, &response.headers);
|
||||
|
||||
freeAuthData(ctx.auth);
|
||||
|
||||
printf("Status: %d\n\r", response.status);
|
||||
headers_dump(&response.headers, stdout);
|
||||
headers_dump(&ctx.responseHeaders, stdout);
|
||||
printf("\n\r");
|
||||
|
||||
headers_free(&response.headers);
|
||||
headers_free(&ctx.responseHeaders);
|
||||
|
||||
response.output(stdout, response._userData, ctx);
|
||||
|
||||
|
|
9
src/common.c
Normal file
9
src/common.c
Normal file
|
@ -0,0 +1,9 @@
|
|||
#include <headers.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
void headers_merge(struct headers* dst, struct headers* src) {
|
||||
for (int i = 0; i < src->number; i++) {
|
||||
headers_mod(dst, src->headers[i].key, src->headers[i].value);
|
||||
}
|
||||
}
|
|
@ -15,4 +15,6 @@ typedef enum method method_t;
|
|||
#define HTTP_CONNECT (CONNECT)
|
||||
#define HTTP_PATCH (PATCH)
|
||||
|
||||
void headers_merge(struct headers*, struct headers*);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -18,7 +18,8 @@ typedef struct {
|
|||
const char* peerAddr;
|
||||
int peerPort;
|
||||
struct auth auth;
|
||||
struct headers headers;
|
||||
struct headers requestHeaders;
|
||||
struct headers responseHeaders;
|
||||
} ctx_t;
|
||||
|
||||
typedef struct {
|
||||
|
|
Loading…
Reference in a new issue