48 fprintf (stdout,
"Fatal error in libmicrospdy %s:%u: %s\n",
140 daemon->
address = va_arg (valist,
struct sockaddr *);
187 struct sockaddr_in* servaddr4 =
NULL;
189 struct sockaddr_in6* servaddr6 =
NULL;
252 SPDYF_DEBUG(
"SPDY_DAEMON_FLAG_ONLY_IPV6 set but IPv4 address provided");
256 addrlen =
sizeof (
struct sockaddr_in6);
260 if (
NULL == (servaddr6 = malloc (addrlen)))
265 memset (servaddr6, 0, addrlen);
266 servaddr6->sin6_family = AF_INET6;
267 servaddr6->sin6_addr = in6addr_any;
268 servaddr6->sin6_port = htons (port);
269 daemon->
address = (
struct sockaddr *) servaddr6;
272 if(AF_INET6 == daemon->
address->sa_family)
284 SPDYF_DEBUG(
"SPDY_DAEMON_FLAG_ONLY_IPV6 set but no support");
288 addrlen =
sizeof (
struct sockaddr_in);
292 if (
NULL == (servaddr4 = malloc (addrlen)))
297 memset (servaddr4, 0, addrlen);
298 servaddr4->sin_family = AF_INET;
299 servaddr4->sin_addr = INADDR_ANY;
300 servaddr4->sin_port = htons (port);
301 daemon->
address = (
struct sockaddr *) servaddr4;
307 daemon->
socket_fd = socket (afamily, SOCK_STREAM, 0);
315 ret = setsockopt(daemon->
socket_fd, SOL_SOCKET, SO_REUSEADDR, &option_on,
sizeof(option_on));
318 SPDYF_DEBUG(
"WARNING: SO_REUSEADDR was not set for the server");
324 ret = setsockopt(daemon->
socket_fd, IPPROTO_IPV6, IPV6_V6ONLY, &option_on,
sizeof(option_on));
327 SPDYF_DEBUG(
"setsockopt with IPPROTO_IPV6 failed");
393 unsigned long long *timeout)
395 unsigned long long earliest_deadline = 0;
396 unsigned long long now;
404 have_timeout =
false;
407 if ( (! have_timeout) ||
415 earliest_deadline = 0;
422 if (earliest_deadline <= now)
425 *timeout = earliest_deadline - now;
434 fd_set *write_fd_set,
435 fd_set *except_fd_set,
446 FD_SET (fd, read_fd_set);
454 FD_SET(fd, read_fd_set);
464 FD_SET(fd, write_fd_set);
483 struct timeval timeout;
494 num_ready = select (max + 1, &rs, &ws, &es, &timeout);
500 (FD_ISSET (ds, &rs)) ){
505 while (
NULL != (pos = next))
526 if (FD_ISSET (ds, &ws)){