MCPcopy Create free account
hub / github.com/apache/trafficserver / start_socket

Function start_socket

tools/http_load/http_load.c:991–1110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

989}
990
991static void
992start_socket(int url_num, int cnum, struct timeval *nowP)
993{
994 ClientData client_data;
995 int flags;
996 int sip_num;
997 int reusable = connections[cnum].reusable;
998
999 /* Start filling in the connection slot. */
1000 connections[cnum].url_num = url_num;
1001 connections[cnum].started_at = *nowP;
1002 client_data.i = cnum;
1003 connections[cnum].did_connect = 0;
1004 connections[cnum].did_response = 0;
1005 connections[cnum].idle_timer = tmr_create(nowP, idle_connection, client_data, idle_secs * 1000L, 0);
1006 connections[cnum].wakeup_timer = (Timer *)0;
1007 connections[cnum].content_length = -1;
1008 connections[cnum].bytes = 0;
1009 connections[cnum].checksum = 0;
1010 connections[cnum].http_status = -1;
1011 connections[cnum].reusable = 0;
1012 connections[cnum].chunked = 0;
1013 connections[cnum].unique_id = 0;
1014
1015 // set unique id
1016 if (unique_id == 1 && urls[url_num].unique_id_offset > 0) {
1017 char buffer[10];
1018 snprintf(buffer, 10, "%09u", ++unique_id_counter);
1019 // fprintf(stderr, "%s %s\n", buffer, &urls[url_num].buf[unique_id_offset]);
1020 memcpy((void *)&urls[url_num].buf[urls[url_num].unique_id_offset], (void *)buffer, 9);
1021 connections[cnum].unique_id = unique_id_counter;
1022 }
1023
1024 /* Make a socket. */
1025 if (!reusable) {
1026 struct epoll_event ev;
1027
1028 connections[cnum].keep_alive = keep_alive;
1029 connections[cnum].conn_fd = socket(urls[url_num].sock_family, urls[url_num].sock_type, urls[url_num].sock_protocol);
1030 if (connections[cnum].conn_fd < 0) {
1031 perror(urls[url_num].url_str);
1032 return;
1033 }
1034 connections[cnum].stats.connections++;
1035
1036 /* Set the file descriptor to no-delay mode. */
1037 flags = fcntl(connections[cnum].conn_fd, F_GETFL, 0);
1038 if (flags == -1) {
1039 perror(urls[url_num].url_str);
1040 (void)close(connections[cnum].conn_fd);
1041 return;
1042 }
1043 if (fcntl(connections[cnum].conn_fd, F_SETFL, flags | O_NDELAY) < 0) {
1044 perror(urls[url_num].url_str);
1045 (void)close(connections[cnum].conn_fd);
1046 return;
1047 }
1048

Callers 1

start_connectionFunction · 0.85

Calls 6

tmr_createFunction · 0.85
randomFunction · 0.85
handle_connectFunction · 0.85
close_connectionFunction · 0.85
memcpyFunction · 0.50
writeFunction · 0.50

Tested by

no test coverage detected