145 } |
145 } |
146 i = 0; |
146 i = 0; |
147 hlen = ha->len; |
147 hlen = ha->len; |
148 } |
148 } |
149 |
149 |
|
150 if(ha->headers[i].name[0] < 90) { |
|
151 ha->headers[i].name[0] += 32; |
|
152 } |
150 pblock_nvinsert(ha->headers[i].name, ha->headers[i].value, rq->rq.headers); |
153 pblock_nvinsert(ha->headers[i].name, ha->headers[i].value, rq->rq.headers); |
|
154 } |
|
155 |
|
156 /* check for request body and prepare input buffer */ |
|
157 char *ctlen_str = pblock_findkeyval(pb_key_content_length, rq->rq.headers); |
|
158 if(ctlen_str) { |
|
159 int ctlen = atoi(ctlen_str); |
|
160 |
|
161 printf("request body length: %d\n", ctlen); |
|
162 |
|
163 netbuf *nb = request->netbuf; |
|
164 |
|
165 /* create new netbuf */ |
|
166 NetIOStream *net_io = (NetIOStream*)net_stream_from_fd( |
|
167 request->connection->fd); |
|
168 net_io->max_read = ctlen; |
|
169 |
|
170 sn->sn.inbuf = malloc(sizeof(netbuf)); |
|
171 sn->sn.inbuf->sd = net_io; |
|
172 sn->sn.inbuf->pos = 0; |
|
173 |
|
174 /* prepare buffer */ |
|
175 int cur_input_len = nb->cursize - nb->pos; |
|
176 if(cur_input_len >= ctlen) { |
|
177 |
|
178 /* |
|
179 * all data is already in the primary input buffer |
|
180 * just link the new netbuf to the primary buffer |
|
181 */ |
|
182 sn->sn.inbuf->maxsize = ctlen; |
|
183 sn->sn.inbuf->cursize = ctlen; |
|
184 sn->sn.inbuf->inbuf = nb->inbuf + nb->pos; |
|
185 } else { |
|
186 sn->sn.inbuf->maxsize = (ctlen > 2048) ? (2048) : (ctlen); |
|
187 sn->sn.inbuf->inbuf = malloc(sizeof(sn->sn.inbuf->maxsize)); |
|
188 |
|
189 if(cur_input_len > 0) { |
|
190 /* we have read a part of the request body -> copy to netbuf */ |
|
191 memcpy(sn->sn.inbuf->inbuf, nb->inbuf+nb->pos, cur_input_len); |
|
192 } |
|
193 |
|
194 sn->sn.inbuf->cursize = cur_input_len; |
|
195 } |
|
196 } else { |
|
197 sn->sn.inbuf = NULL; |
151 } |
198 } |
152 |
199 |
153 |
200 |
154 // Send the request to the NSAPI system |
201 // Send the request to the NSAPI system |
155 nsapi_handle_request(sn, rq); |
202 nsapi_handle_request(sn, rq); |