static SOCKET efl_net_accept4(SOCKET fd, struct sockaddr *addr, socklen_t *addrlen, Eina_Bool close_on_exec) { #ifdef HAVE_ACCEPT4 int flags = 0; if (close_on_exec) flags |= SOCK_CLOEXEC; return accept4(fd, addr, addrlen, flags); #else SOCKET client = accept(fd, addr, addrlen); if (client == INVALID_SOCKET) return client; #ifdef FD_CLOEXEC if (close_on_exec) { if (!eina_file_close_on_exec(client, EINA_TRUE)) { int errno_bkp = errno; ERR("fcntl(" SOCKET_FMT ", F_SETFD, FD_CLOEXEC): %s", client, strerror(errno)); closesocket(client); errno = errno_bkp; return INVALID_SOCKET; } } #else (void)close_on_exec; #endif return client; #endif }
/* Connects to the peer and returns a socket * descriptor. */ static int tcp_connect(void) { const char *PORT = "443"; const char *SERVER = "69.58.181.89"; //verisign.com int err, sd; int flag = 1, curstate = 0; struct sockaddr_in sa; /* sets some fd options such as nonblock */ sd = socket(AF_INET, SOCK_STREAM, 0); fcntl(sd, F_SETFL, O_NONBLOCK); eina_file_close_on_exec(sd, EINA_TRUE); setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (const void *)&curstate, sizeof(curstate)); setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)); memset(&sa, '\0', sizeof (sa)); sa.sin_family = AF_INET; sa.sin_port = eina_htons(atoi(PORT)); inet_pton(AF_INET, SERVER, &sa.sin_addr); /* connects to server */ err = connect(sd, (struct sockaddr *)&sa, sizeof (sa)); if ((err < 0) && (errno != EINPROGRESS)) { print("Connect error\n"); exit(1); } return sd; }
EAPI Eina_Bool eina_mmap_safety_enabled_set(Eina_Bool enabled) { #ifndef HAVE_SIGINFO_T (void) enabled; return EINA_FALSE; #else if (_eina_mmap_log_dom < 0) { _eina_mmap_log_dom = eina_log_domain_register("eina_mmap", EINA_LOG_COLOR_DEFAULT); if (_eina_mmap_log_dom < 0) { EINA_LOG_ERR("Could not register log domain: eina_mmap"); return EINA_FALSE; } } enabled = !!enabled; if (mmap_safe == enabled) return mmap_safe; if (enabled) { struct sigaction sa; /* find out system page size the cleanest way we can */ _eina_mmap_pagesize = eina_cpu_page_size(); /* no zero page device - open it */ if (_eina_mmap_zero_fd < 0) { _eina_mmap_zero_fd = open("/dev/zero", O_RDWR); /* if we don;'t have one - fail to set up mmap safety */ if (_eina_mmap_zero_fd < 0) return EINA_FALSE; eina_file_close_on_exec(_eina_mmap_zero_fd, EINA_TRUE); } /* set up signal handler for SIGBUS */ sa.sa_sigaction = _eina_mmap_safe_sigbus; sa.sa_flags = SA_RESTART | SA_SIGINFO; sigemptyset(&sa.sa_mask); if (sigaction(SIGBUS, &sa, &_eina_mmap_prev_sigaction) == 0) goto done; /* setup of SIGBUS handler failed, lets close zero page dev and fail */ close(_eina_mmap_zero_fd); _eina_mmap_zero_fd = -1; return EINA_FALSE; } else { /* reset signal handler to default for SIGBUS */ if (_eina_mmap_zero_fd >= 0) { close(_eina_mmap_zero_fd); _eina_mmap_zero_fd = -1; } signal(SIGBUS, SIG_DFL); } done: mmap_safe = enabled; return mmap_safe; #endif }