Lines Matching defs:tctx

199 	struct tcp_ctx *tctx;
207 tctx = malloc(sizeof(*tctx));
208 if (tctx == NULL)
212 error = tcp_addr(addr, atoi(proto_get("tcp:port")), &tctx->tc_sa);
214 free(tctx);
218 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC);
220 tctx->tc_fd = socket(tctx->tc_sa.ss_family, SOCK_STREAM, 0);
221 if (tctx->tc_fd == -1) {
223 free(tctx);
227 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC);
231 if (setsockopt(tctx->tc_fd, IPPROTO_TCP, TCP_NODELAY, &nodelay,
236 tctx->tc_wait_called = (side == TCP_SIDE_CLIENT ? false : true);
237 tctx->tc_side = side;
238 tctx->tc_magic = TCP_CTX_MAGIC;
239 *tctxp = tctx;
265 struct tcp_ctx *tctx;
273 error = tcp_setup_new(dstaddr, TCP_SIDE_CLIENT, &tctx);
280 if (bind(tctx->tc_fd, (struct sockaddr *)&sa,
287 flags = fcntl(tctx->tc_fd, F_GETFL);
298 if (fcntl(tctx->tc_fd, F_SETFL, flags) == -1) {
305 ret = connect(tctx->tc_fd, (struct sockaddr *)&tctx->tc_sa,
306 sockaddr_len(&tctx->tc_sa));
316 error = tcp_connect_wait(tctx, timeout);
322 if (fcntl(tctx->tc_fd, F_SETFL, flags) == -1) {
331 *ctxp = tctx;
334 tcp_close(tctx);
341 struct tcp_ctx *tctx = ctx;
347 PJDLOG_ASSERT(tctx != NULL);
348 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
349 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_CLIENT);
350 PJDLOG_ASSERT(!tctx->tc_wait_called);
351 PJDLOG_ASSERT(tctx->tc_fd >= 0);
358 FD_SET(tctx->tc_fd, &fdset);
359 ret = select(tctx->tc_fd + 1, NULL, &fdset, NULL, &tv);
371 PJDLOG_ASSERT(FD_ISSET(tctx->tc_fd, &fdset));
373 if (getsockopt(tctx->tc_fd, SOL_SOCKET, SO_ERROR, &error,
386 tctx->tc_wait_called = true;
388 flags = fcntl(tctx->tc_fd, F_GETFL);
396 if (fcntl(tctx->tc_fd, F_SETFL, flags) == -1) {
408 struct tcp_ctx *tctx;
411 error = tcp_setup_new(addr, TCP_SIDE_SERVER_LISTEN, &tctx);
417 (void)setsockopt(tctx->tc_fd, SOL_SOCKET, SO_REUSEADDR, &val,
420 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC);
422 if (bind(tctx->tc_fd, (struct sockaddr *)&tctx->tc_sa,
423 sockaddr_len(&tctx->tc_sa)) == -1) {
425 tcp_close(tctx);
428 if (listen(tctx->tc_fd, 8) == -1) {
430 tcp_close(tctx);
434 *ctxp = tctx;
442 struct tcp_ctx *tctx = ctx;
447 PJDLOG_ASSERT(tctx != NULL);
448 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
449 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_SERVER_LISTEN);
450 PJDLOG_ASSERT(tctx->tc_fd >= 0);
451 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC);
457 fromlen = sockaddr_len(&tctx->tc_sa);
458 newtctx->tc_fd = accept(tctx->tc_fd, (struct sockaddr *)&tctx->tc_sa,
477 struct tcp_ctx *tctx;
482 tctx = malloc(sizeof(*tctx));
483 if (tctx == NULL)
486 tctx->tc_fd = fd;
487 tctx->tc_sa.ss_family = AF_UNSPEC;
488 tctx->tc_wait_called = (client ? false : true);
489 tctx->tc_side = (client ? TCP_SIDE_CLIENT : TCP_SIDE_SERVER_WORK);
490 tctx->tc_magic = TCP_CTX_MAGIC;
491 *ctxp = tctx;
499 struct tcp_ctx *tctx = ctx;
501 PJDLOG_ASSERT(tctx != NULL);
502 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
503 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_CLIENT ||
504 tctx->tc_side == TCP_SIDE_SERVER_WORK);
505 PJDLOG_ASSERT(tctx->tc_wait_called);
506 PJDLOG_ASSERT(tctx->tc_fd >= 0);
509 return (proto_common_send(tctx->tc_fd, data, size, -1));
515 struct tcp_ctx *tctx = ctx;
517 PJDLOG_ASSERT(tctx != NULL);
518 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
519 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_CLIENT ||
520 tctx->tc_side == TCP_SIDE_SERVER_WORK);
521 PJDLOG_ASSERT(tctx->tc_wait_called);
522 PJDLOG_ASSERT(tctx->tc_fd >= 0);
525 return (proto_common_recv(tctx->tc_fd, data, size, NULL));
531 const struct tcp_ctx *tctx = ctx;
533 PJDLOG_ASSERT(tctx != NULL);
534 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
536 return (tctx->tc_fd);
542 const struct tcp_ctx *tctx = ctx;
546 PJDLOG_ASSERT(tctx != NULL);
547 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
553 if (getpeername(tctx->tc_fd, (struct sockaddr *)&sa2, &salen) < 0)
641 const struct tcp_ctx *tctx = ctx;
645 PJDLOG_ASSERT(tctx != NULL);
646 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
649 if (getsockname(tctx->tc_fd, (struct sockaddr *)&sa, &salen) < 0) {
665 const struct tcp_ctx *tctx = ctx;
669 PJDLOG_ASSERT(tctx != NULL);
670 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
673 if (getpeername(tctx->tc_fd, (struct sockaddr *)&sa, &salen) < 0) {
689 struct tcp_ctx *tctx = ctx;
691 PJDLOG_ASSERT(tctx != NULL);
692 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC);
694 if (tctx->tc_fd >= 0)
695 close(tctx->tc_fd);
696 tctx->tc_magic = 0;
697 free(tctx);