Changeset 0005b63 in mainline
- Timestamp:
- 2013-09-21T11:22:07Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c17469e
- Parents:
- ff364f1
- Location:
- uspace/lib/http
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/http/headers.c
rff364f1 r0005b63 49 49 } 50 50 51 http_header_t *http_header_create(const char *name, const char *value)51 void http_header_init(http_header_t *header) 52 52 { 53 char *dname = str_dup(name); 54 if (dname == NULL) 55 return NULL; 56 57 char *dvalue = str_dup(value); 58 if (dvalue == NULL) { 59 free(dname); 60 return NULL; 61 } 62 63 return http_header_create_no_copy(dname, dvalue); 53 link_initialize(&header->link); 54 header->name = NULL; 55 header->value = NULL; 64 56 } 65 57 66 http_header_t *http_header_create _no_copy(char *name,char *value)58 http_header_t *http_header_create(const char *name, const char *value) 67 59 { 68 60 http_header_t *header = malloc(sizeof(http_header_t)); 69 61 if (header == NULL) 70 62 return NULL; 63 http_header_init(header); 64 65 header->name = str_dup(name); 66 if (header->name == NULL) { 67 free(header); 68 return NULL; 69 } 71 70 72 link_initialize(&header->link); 73 header->name = name; 74 header->value = value; 75 71 header->value = str_dup(value); 72 if (header->value == NULL) { 73 free(header->name); 74 free(header); 75 return NULL; 76 } 77 76 78 return header; 77 79 } … … 84 86 } 85 87 86 ssize_t http_ encode_header(char *buf, size_t buf_size, http_header_t *header)88 ssize_t http_header_encode(http_header_t *header, char *buf, size_t buf_size) 87 89 { 88 90 /* TODO properly split long header values */ … … 96 98 } 97 99 98 int http_ parse_header(const char *line, char **out_name, char **out_value)100 int http_header_parse(const char *line, http_header_t *header) 99 101 { 100 102 const char *pos = line; … … 117 119 } 118 120 119 *out_name = name;120 *out_value = value;121 header->name = name; 122 header->value = value; 121 123 122 124 return EOK; -
uspace/lib/http/http.h
rff364f1 r0005b63 81 81 extern http_t *http_create(const char *, uint16_t); 82 82 extern int http_connect(http_t *); 83 84 extern void http_header_init(http_header_t *); 83 85 extern http_header_t *http_header_create(const char *, const char *); 84 extern http_header_t *http_header_create_no_copy(char *, char *); 86 extern int http_header_parse(const char *, http_header_t *); 87 ssize_t http_header_encode(http_header_t *, char *, size_t); 85 88 extern void http_header_destroy(http_header_t *); 89 86 90 extern http_request_t *http_request_create(const char *, const char *); 87 91 extern void http_request_destroy(http_request_t *); … … 90 94 extern int http_parse_status(const char *, http_version_t *, uint16_t *, 91 95 char **); 92 extern int http_parse_header(const char *, char **, char **);93 ssize_t http_encode_header(char *, size_t, http_header_t *);94 96 extern int http_receive_response(http_t *, http_response_t **); 95 97 extern int http_receive_body(http_t *, void *, size_t); -
uspace/lib/http/request.c
rff364f1 r0005b63 105 105 106 106 list_foreach(req->headers, link, http_header_t, header) { 107 ssize_t header_size = http_ encode_header(NULL, 0, header);107 ssize_t header_size = http_header_encode(header, NULL, 0); 108 108 if (header_size < 0) 109 109 return header_size; … … 127 127 128 128 list_foreach(req->headers, link, http_header_t, header) { 129 written = http_ encode_header(pos, pos_size, header);129 written = http_header_encode(header, pos, pos_size); 130 130 if (written < 0) { 131 131 free(buf); -
uspace/lib/http/response.c
rff364f1 r0005b63 122 122 break; 123 123 124 char *name = NULL; 125 char *value = NULL; 126 rc = http_parse_header(line, &name, &value); 127 if (rc != EOK) 128 goto error; 129 130 http_header_t *header = http_header_create_no_copy(name, value); 124 http_header_t *header = malloc(sizeof(http_header_t)); 131 125 if (header == NULL) { 132 free(name);133 free(value);134 126 rc = ENOMEM; 135 127 goto error; 136 128 } 129 http_header_init(header); 130 131 rc = http_header_parse(line, header); 132 if (rc != EOK) 133 goto error; 137 134 138 135 list_append(&header->link, &resp->headers);
Note:
See TracChangeset
for help on using the changeset viewer.