Lines Matching refs:req

157 httpc_free_state(httpc_state_t* req)
161 if (req->request != NULL) {
162 pbuf_free(req->request);
163 req->request = NULL;
165 if (req->rx_hdrs != NULL) {
166 pbuf_free(req->rx_hdrs);
167 req->rx_hdrs = NULL;
170 tpcb = req->pcb;
171 mem_free(req);
172 req = NULL;
192 httpc_close(httpc_state_t* req, httpc_result_t result, u32_t server_response, err_t err)
194 if (req != NULL) {
195 if (req->conn_settings != NULL) {
196 if (req->conn_settings->result_fn != NULL) {
197 req->conn_settings->result_fn(req->callback_arg, result, req->rx_content_len, server_response, err);
200 return httpc_free_state(req);
282 httpc_state_t* req = (httpc_state_t*)arg;
287 if (req->parse_state != HTTPC_PARSE_RX_DATA) {
290 } else if ((req->hdr_content_len != HTTPC_CONTENT_LEN_INVALID) &&
291 (req->hdr_content_len != req->rx_content_len)) {
298 return httpc_close(req, result, req->rx_status, ERR_OK);
300 if (req->parse_state != HTTPC_PARSE_RX_DATA) {
301 if (req->rx_hdrs == NULL) {
302 req->rx_hdrs = p;
304 pbuf_cat(req->rx_hdrs, p);
306 if (req->parse_state == HTTPC_PARSE_WAIT_FIRST_LINE) {
308 err_t err = http_parse_response_status(req->rx_hdrs, &req->rx_http_version, &req->rx_status, &status_str_off);
311 req->parse_state = HTTPC_PARSE_WAIT_HEADERS;
314 if (req->parse_state == HTTPC_PARSE_WAIT_HEADERS) {
316 err_t err = http_wait_headers(req->rx_hdrs, &req->hdr_content_len, &total_header_len);
321 if (req->conn_settings) {
322 if (req->conn_settings->headers_done_fn) {
323 err = req->conn_settings->headers_done_fn(req, req->callback_arg, req->rx_hdrs, total_header_len, req->hdr_content_len);
325 return httpc_close(req, HTTPC_RESULT_LOCAL_ABORT, req->rx_status, err);
330 q = pbuf_free_header(req->rx_hdrs, total_header_len);
332 req->rx_hdrs = NULL;
334 req->parse_state = HTTPC_PARSE_RX_DATA;
338 if ((p != NULL) && (req->parse_state == HTTPC_PARSE_RX_DATA)) {
339 req->rx_content_len += p->tot_len;
340 if (req->recv_fn != NULL) {
342 return req->recv_fn(req->callback_arg, pcb, p, r);
355 httpc_state_t* req = (httpc_state_t*)arg;
356 if (req != NULL) {
358 req->pcb = NULL;
359 httpc_close(req, HTTPC_RESULT_ERR_CLOSED, 0, err);
368 httpc_state_t* req = (httpc_state_t*)arg;
370 if (req != NULL) {
371 if (req->timeout_ticks) {
372 req->timeout_ticks--;
374 if (!req->timeout_ticks) {
375 return httpc_close(req, HTTPC_RESULT_ERR_TIMEOUT, 0, ERR_OK);
397 httpc_state_t* req = (httpc_state_t*)arg;
402 r = altcp_write(req->pcb, req->request->payload, req->request->len - 1, TCP_WRITE_FLAG_COPY);
405 return httpc_close(req, HTTPC_RESULT_ERR_MEM, 0, r);
408 pbuf_free(req->request);
409 req->request = NULL;
411 altcp_output(req->pcb);
417 httpc_get_internal_addr(httpc_state_t* req, const ip_addr_t *ipaddr)
420 LWIP_ASSERT("req != NULL", req != NULL);
422 if (&req->remote_addr != ipaddr) {
424 req->remote_addr = *ipaddr;
427 err = altcp_connect(req->pcb, &req->remote_addr, req->remote_port, httpc_tcp_connected);
442 httpc_state_t* req = (httpc_state_t*)arg;
449 err = httpc_get_internal_addr(req, ipaddr);
460 httpc_close(req, result, 0, err);
466 httpc_get_internal_dns(httpc_state_t* req, const char* server_name)
469 LWIP_ASSERT("req != NULL", req != NULL);
472 err = dns_gethostbyname(server_name, &req->remote_addr, httpc_dns_found, req);
474 err = ipaddr_aton(server_name, &req->remote_addr) ? ERR_OK : ERR_ARG;
479 err = httpc_get_internal_addr(req, &req->remote_addr);
513 httpc_state_t *req;
537 req = (httpc_state_t*)mem_malloc((mem_size_t)alloc_len);
538 if(req == NULL) {
541 memset(req, 0, sizeof(httpc_state_t));
542 req->timeout_ticks = HTTPC_POLL_TIMEOUT;
543 req->request = pbuf_alloc(PBUF_RAW, (u16_t)(req_len + 1), PBUF_RAM);
544 if (req->request == NULL) {
545 httpc_free_state(req);
548 if (req->request->next != NULL) {
550 httpc_free_state(req);
553 req->hdr_content_len = HTTPC_CONTENT_LEN_INVALID;
555 req->server_name = (char*)(req + 1);
557 memcpy(req->server_name, server_name, server_name_len + 1);
559 req->uri = req->server_name + server_name_len + 1;
560 memcpy(req->uri, uri, uri_len + 1);
562 req->pcb = altcp_new(settings->altcp_allocator);
563 if(req->pcb == NULL) {
564 httpc_free_state(req);
567 req->remote_port = settings->use_proxy ? settings->proxy_port : server_port;
568 altcp_arg(req->pcb, req);
569 altcp_recv(req->pcb, httpc_tcp_recv);
570 altcp_err(req->pcb, httpc_tcp_err);
571 altcp_poll(req->pcb, httpc_tcp_poll, HTTPC_POLL_INTERVAL);
572 altcp_sent(req->pcb, httpc_tcp_sent);
576 (char *)req->request->payload, req_len + 1);
578 httpc_free_state(req);
582 req->recv_fn = recv_fn;
583 req->conn_settings = settings;
584 req->callback_arg = callback_arg;
586 *connection = req;
636 httpc_state_t* req;
640 err = httpc_init_connection_addr(&req, settings, server_addr, port,
647 err = httpc_get_internal_addr(req, &settings->proxy_addr);
649 err = httpc_get_internal_addr(req, server_addr);
652 httpc_free_state(req);
657 *connection = req;
681 httpc_state_t* req;
685 err = httpc_init_connection(&req, settings, server_name, port, uri, recv_fn, callback_arg);
691 err = httpc_get_internal_addr(req, &settings->proxy_addr);
693 err = httpc_get_internal_dns(req, server_name);
696 httpc_free_state(req);
701 *connection = req;
822 httpc_state_t* req;
832 err = httpc_init_connection_addr(&req, &filestate->settings, server_addr, port,
840 err = httpc_get_internal_addr(req, &settings->proxy_addr);
842 err = httpc_get_internal_addr(req, server_addr);
846 httpc_free_state(req);
851 *connection = req;
874 httpc_state_t* req;
884 err = httpc_init_connection(&req, &filestate->settings, server_name, port,
892 err = httpc_get_internal_addr(req, &settings->proxy_addr);
894 err = httpc_get_internal_dns(req, server_name);
898 httpc_free_state(req);
903 *connection = req;