struct http_session* http_session_open(const char* url) { int peer_handle = 0; struct sockaddr_in server; char *request, host_addr[32]; struct http_session* session; session = (struct http_session*) rt_malloc(sizeof(struct http_session)); if(session == RT_NULL) return RT_NULL; session->size = 0; session->position = 0; /* Check valid IP address and URL */ if(http_resolve_address(&server, url, &host_addr[0], &request) != 0) { rt_free(session); return RT_NULL; } // Now we connect and initiate the transfer by sending a // request header to the server, and receiving the response header if((peer_handle = http_connect(session, &server, host_addr, request)) < 0) { rt_kprintf("HTTP: failed to connect to '%s'!\n", host_addr); rt_free(session); return RT_NULL; } // http connect returns valid socket. Save in handle list. session->socket = peer_handle; /* open successfully */ return session; }
static int servicer_session_open(const char* url) { int peer_handle = -1; struct sockaddr_in server; char *request, host_addr[32]; { uint32_t dns_try = RETRY_MAX; while(dns_try--) { if(http_resolve_address(&server, url, &host_addr[0], &request) == 0) { break; } rt_kprintf("[INFO] dns try...!\r\n"); } if(dns_try == 0) { rt_kprintf("[ERR] dns retry timeout!\r\n"); return -1; } } rt_kprintf("connect to: %s...\n", host_addr); if((peer_handle = servicer_connect(&server, host_addr, request)) < 0) { rt_kprintf("radio list update: failed to connect to '%s'!\n", host_addr); } return peer_handle; }
struct shoutcast_session* shoutcast_session_open(const char* url) { int peer_handle = 0; struct sockaddr_in server; char *request, host_addr[32]; struct shoutcast_session* session; total = 0; session = (struct shoutcast_session*) rt_malloc(sizeof(struct shoutcast_session)); if(session == RT_NULL) return RT_NULL; session->metaint = 0; session->current_meta_chunk = 0; session->bitrate = 0; session->station_name = RT_NULL; /* Check valid IP address and URL */ if(http_resolve_address(&server, url, &host_addr[0], &request) != 0) { rt_free(session); return RT_NULL; } rt_kprintf("connect to: %s...\n", host_addr); // Now we connect and initiate the transfer by sending a // request header to the server, and receiving the response header if((peer_handle = shoutcast_connect(session, &server, host_addr, request)) < 0) { rt_kprintf("SHOUTCAST: failed to connect to '%s'!\n", host_addr); if (session->station_name != RT_NULL) rt_free(session->station_name); rt_free(session); return RT_NULL; } // http connect returns valid socket. Save in handle list. session->socket = peer_handle; /* open successfully */ return session; }
int radio_list_update_servicer_session_open(char* url) { int peer_handle = -1; struct sockaddr_in server; char *request, host_addr[32]; if(http_resolve_address(&server, url, &host_addr[0], &request) != 0) { return -1; } rt_kprintf("connect to: %s...\n", host_addr); if((peer_handle = radio_list_update_servicer_connect(&server, host_addr, request)) < 0) { rt_kprintf("radio list update: failed to connect to '%s'!\n", host_addr); } return peer_handle; }