void ghttp_request_destroy(ghttp_request *a_request) { if (!a_request) return; /* make sure that the socket was shut down. */ if (a_request->conn->sock >= 0) { close(a_request->conn->sock); a_request->conn->sock = -1; } /* destroy everything else */ if (a_request->uri) http_uri_destroy(a_request->uri); if (a_request->proxy) http_uri_destroy(a_request->proxy); if (a_request->req) http_req_destroy(a_request->req); if (a_request->resp) http_resp_destroy(a_request->resp); if (a_request->conn) http_trans_conn_destroy(a_request->conn); /* destroy username info. */ if (a_request->username) { free(a_request->username); a_request->username = NULL; } if (a_request->password) { free(a_request->password); a_request->password = NULL; } if (a_request->authtoken) { free(a_request->authtoken); a_request->authtoken = NULL; } /* destroy proxy authentication */ if (a_request->proxy_username) { free(a_request->proxy_username); a_request->proxy_username = NULL; } if (a_request->proxy_password) { free(a_request->proxy_password); a_request->proxy_password = NULL; } if (a_request->proxy_authtoken) { free(a_request->proxy_authtoken); a_request->proxy_authtoken = NULL; } if (a_request) free(a_request); return; }
void ghttp_clean(ghttp_request *a_request) { http_resp_destroy(a_request->resp); a_request->resp = http_resp_new(); http_req_destroy(a_request->req); a_request->req = http_req_new(); http_trans_buf_reset(a_request->conn); a_request->proc = ghttp_proc_none; return; }
gcc -g -o tests/t_http_post tests/t_http_post.c net-modules/http.c net-modules/dns.c io.c io/syslog.c io/filelog.c options.c -Wall -lnsl -I./ lib/libares/*.c -Ilib/libares -pipe p_time.c lib/nv_pair.c -lssl -lcrypto url-parse.c url-extract.c p_regex.c */ #endif #include "lib/nv_pair.h" #include "net-modules/http.h" #include "net-modules/dns.h" #include <string.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> int main (int argc, char ** argv) { nv_list * nvl = nv_list_init(3); struct timeval tv; struct in_addr addr = resolve("des.petta-tech.com","4.2.2.1", &tv); http_request * req = new_http_req( addr, 8080, "des.petta-tech.com", "/apps/login", 0, NULL, NULL); nv_list_insert(nvl,"m","login",0); nv_list_insert(nvl,"username","eric",0); nv_list_insert(nvl,"password","spoonsinjune",0); http_post (req, nvl); fprintf(stdout,"[%s]\n",req->head); fprintf(stdout,"[%s]\n",req->body); http_req_destroy(req); return 0; }
void ghttp_request_destroy(ghttp_request *a_request) { if (!a_request) return; /* make sure that the socket was shut down. */ #ifdef WIN32 //windows if (a_request->conn->sock != INVALID_SOCKET) { closesocket(a_request->conn->sock); a_request->conn->sock = INVALID_SOCKET; #else //linux if (a_request->conn->sock >= 0) { close(a_request->conn->sock); a_request->conn->sock = -1; #endif } /* destroy everything else */ if (a_request->uri) http_uri_destroy(a_request->uri); if (a_request->proxy) http_uri_destroy(a_request->proxy); if (a_request->req) http_req_destroy(a_request->req); if (a_request->resp) http_resp_destroy(a_request->resp); if (a_request->conn) http_trans_conn_destroy(a_request->conn); /* destroy username info. */ if (a_request->username) { free(a_request->username); a_request->username = NULL; } if (a_request->password) { free(a_request->password); a_request->password = NULL; } if (a_request->authtoken) { free(a_request->authtoken); a_request->authtoken = NULL; } /* destroy proxy authentication */ if (a_request->proxy_username) { free(a_request->proxy_username); a_request->proxy_username = NULL; } if (a_request->proxy_password) { free(a_request->proxy_password); a_request->proxy_password = NULL; } if (a_request->proxy_authtoken) { free(a_request->proxy_authtoken); a_request->proxy_authtoken = NULL; } if (a_request) free(a_request); return; } int ghttp_uri_validate(char *a_uri) { if (!a_uri) return -1; /* you can do this... */ return(http_uri_parse(a_uri, NULL)); } int ghttp_set_uri(ghttp_request *a_request, char *a_uri) { int l_rv = 0; http_uri *l_new_uri = NULL; if ((!a_request) || (!a_uri)) return -1; /* set the uri */ l_new_uri = http_uri_new(); l_rv = http_uri_parse(a_uri, l_new_uri); if (l_rv < 0) { http_uri_destroy(l_new_uri); return -1; } if (a_request->uri) { /* check to see if this has been set yet. */ if (a_request->uri->host && a_request->uri->port && a_request->uri->resource) { /* check to see if we just need to change the resource */ if ((!strcmp(a_request->uri->host, l_new_uri->host)) && (a_request->uri->port == l_new_uri->port)) { free(a_request->uri->resource); /* make a copy since we're about to destroy it */ a_request->uri->resource = strdup(l_new_uri->resource); http_uri_destroy(l_new_uri); } else { http_uri_destroy(a_request->uri); a_request->uri = l_new_uri; } } else { http_uri_destroy(a_request->uri); a_request->uri = l_new_uri; } } return 0; }