diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pulsecore/socket-client.c | 50 | ||||
| -rw-r--r-- | src/pulsecore/socket-client.h | 8 | 
2 files changed, 30 insertions, 28 deletions
diff --git a/src/pulsecore/socket-client.c b/src/pulsecore/socket-client.c index 5b5bc5ca..a99193b7 100644 --- a/src/pulsecore/socket-client.c +++ b/src/pulsecore/socket-client.c @@ -77,9 +77,9 @@ struct pa_socket_client {      pa_io_event *io_event;      pa_time_event *timeout_event;      pa_defer_event *defer_event; -    void (*callback)(pa_socket_client*c, pa_iochannel *io, void *userdata); +    pa_socket_client_cb_t callback;      void *userdata; -    int local; +    pa_bool_t local;  #ifdef HAVE_LIBASYNCNS      asyncns_t *asyncns;      asyncns_query_t * asyncns_query; @@ -87,7 +87,7 @@ struct pa_socket_client {  #endif  }; -static pa_socket_client*pa_socket_client_new(pa_mainloop_api *m) { +static pa_socket_client* socket_client_new(pa_mainloop_api *m) {      pa_socket_client *c;      pa_assert(m); @@ -96,11 +96,11 @@ static pa_socket_client*pa_socket_client_new(pa_mainloop_api *m) {      c->mainloop = m;      c->fd = -1;      c->io_event = NULL; -    c->defer_event = NULL;      c->timeout_event = NULL; +    c->defer_event = NULL;      c->callback = NULL;      c->userdata = NULL; -    c->local = 0; +    c->local = FALSE;  #ifdef HAVE_LIBASYNCNS      c->asyncns = NULL; @@ -119,15 +119,15 @@ static void free_events(pa_socket_client *c) {          c->io_event = NULL;      } -    if (c->defer_event) { -        c->mainloop->defer_free(c->defer_event); -        c->defer_event = NULL; -    } -      if (c->timeout_event) {          c->mainloop->time_free(c->timeout_event);          c->timeout_event = NULL;      } + +    if (c->defer_event) { +        c->mainloop->defer_free(c->defer_event); +        c->defer_event = NULL; +    }  }  static void do_call(pa_socket_client *c) { @@ -177,7 +177,7 @@ finish:      pa_socket_client_unref(c);  } -static void connect_fixed_cb(pa_mainloop_api *m, pa_defer_event *e, void *userdata) { +static void connect_defer_cb(pa_mainloop_api *m, pa_defer_event *e, void *userdata) {      pa_socket_client *c = userdata;      pa_assert(m); @@ -223,7 +223,7 @@ static int do_connect(pa_socket_client *c, const struct sockaddr *sa, socklen_t          pa_assert_se(c->io_event = c->mainloop->io_new(c->mainloop, c->fd, PA_IO_EVENT_OUTPUT, connect_io_cb, c));      } else -        pa_assert_se(c->defer_event = c->mainloop->defer_new(c->mainloop, connect_fixed_cb, c)); +        pa_assert_se(c->defer_event = c->mainloop->defer_new(c->mainloop, connect_defer_cb, c));      return 0;  } @@ -252,8 +252,7 @@ pa_socket_client* pa_socket_client_new_unix(pa_mainloop_api *m, const char *file      memset(&sa, 0, sizeof(sa));      sa.sun_family = AF_UNIX; -    strncpy(sa.sun_path, filename, sizeof(sa.sun_path)-1); -    sa.sun_path[sizeof(sa.sun_path) - 1] = 0; +    pa_strlcpy(sa.sun_path, filename, sizeof(sa.sun_path));      return pa_socket_client_new_sockaddr(m, (struct sockaddr*) &sa, sizeof(sa));  } @@ -273,7 +272,7 @@ static int sockaddr_prepare(pa_socket_client *c, const struct sockaddr *sa, size      switch (sa->sa_family) {          case AF_UNIX: -            c->local = 1; +            c->local = TRUE;              break;          case AF_INET: @@ -285,7 +284,7 @@ static int sockaddr_prepare(pa_socket_client *c, const struct sockaddr *sa, size              break;          default: -            c->local = 0; +            c->local = FALSE;      }      if ((c->fd = socket(sa->sa_family, SOCK_STREAM, 0)) < 0) { @@ -294,6 +293,7 @@ static int sockaddr_prepare(pa_socket_client *c, const struct sockaddr *sa, size      }      pa_make_fd_cloexec(c->fd); +      if (sa->sa_family == AF_INET || sa->sa_family == AF_INET6)          pa_make_tcp_socket_low_delay(c->fd);      else @@ -312,7 +312,7 @@ pa_socket_client* pa_socket_client_new_sockaddr(pa_mainloop_api *m, const struct      pa_assert(sa);      pa_assert(salen > 0); -    pa_assert_se(c = pa_socket_client_new(m)); +    pa_assert_se(c = socket_client_new(m));      if (sockaddr_prepare(c, sa, salen) < 0)          goto fail; @@ -361,7 +361,7 @@ pa_socket_client* pa_socket_client_ref(pa_socket_client *c) {      return c;  } -void pa_socket_client_set_callback(pa_socket_client *c, void (*on_connection)(pa_socket_client *c, pa_iochannel*io, void *userdata), void *userdata) { +void pa_socket_client_set_callback(pa_socket_client *c, pa_socket_client_cb_t on_connection, void *userdata) {      pa_assert(c);      pa_assert(PA_REFCNT_VALUE(c) >= 1); @@ -489,23 +489,22 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam              hints.ai_family = a.type == PA_PARSED_ADDRESS_TCP4 ? PF_INET : (a.type == PA_PARSED_ADDRESS_TCP6 ? PF_INET6 : PF_UNSPEC);              hints.ai_socktype = SOCK_STREAM; -#ifdef HAVE_LIBASYNCNS +#if defined(HAVE_LIBASYNCNS)              {                  asyncns_t *asyncns;                  if (!(asyncns = asyncns_new(1)))                      goto finish; -                c = pa_socket_client_new(m); +                pa_assert_se(c = socket_client_new(m));                  c->asyncns = asyncns;                  c->asyncns_io_event = m->io_new(m, asyncns_fd(c->asyncns), PA_IO_EVENT_INPUT, asyncns_cb, c);                  c->asyncns_query = asyncns_getaddrinfo(c->asyncns, a.path_or_host, port, &hints);                  pa_assert(c->asyncns_query);                  start_timeout(c);              } -#else /* HAVE_LIBASYNCNS */ +#elif defined(HAVE_GETADDRINFO)              { -#ifdef HAVE_GETADDRINFO                  int ret;                  struct addrinfo *res = NULL; @@ -520,7 +519,9 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam                  }                  freeaddrinfo(res); -#else /* HAVE_GETADDRINFO */ +            } +#else +            {                  struct hostent *host = NULL;                  struct sockaddr_in s; @@ -546,7 +547,6 @@ pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char*nam                  if ((c = pa_socket_client_new_sockaddr(m, (struct sockaddr*)&s, sizeof(s))))                      start_timeout(c); -#endif /* HAVE_GETADDRINFO */              }  #endif /* HAVE_LIBASYNCNS */          } @@ -561,7 +561,7 @@ finish:  /* Return non-zero when the target sockaddr is considered     local. "local" means UNIX socket or TCP socket on localhost. Other     local IP addresses are not considered local. */ -int pa_socket_client_is_local(pa_socket_client *c) { +pa_bool_t pa_socket_client_is_local(pa_socket_client *c) {      pa_assert(c);      pa_assert(PA_REFCNT_VALUE(c) >= 1); diff --git a/src/pulsecore/socket-client.h b/src/pulsecore/socket-client.h index b1d58eff..41e8c3bd 100644 --- a/src/pulsecore/socket-client.h +++ b/src/pulsecore/socket-client.h @@ -34,17 +34,19 @@ struct sockaddr;  typedef struct pa_socket_client pa_socket_client; +typedef void (*pa_socket_client_cb_t)(pa_socket_client *c, pa_iochannel*io, void *userdata); +  pa_socket_client* pa_socket_client_new_ipv4(pa_mainloop_api *m, uint32_t address, uint16_t port);  pa_socket_client* pa_socket_client_new_ipv6(pa_mainloop_api *m, uint8_t address[16], uint16_t port);  pa_socket_client* pa_socket_client_new_unix(pa_mainloop_api *m, const char *filename);  pa_socket_client* pa_socket_client_new_sockaddr(pa_mainloop_api *m, const struct sockaddr *sa, size_t salen);  pa_socket_client* pa_socket_client_new_string(pa_mainloop_api *m, const char *a, uint16_t default_port); -void pa_socket_client_unref(pa_socket_client *c);  pa_socket_client* pa_socket_client_ref(pa_socket_client *c); +void pa_socket_client_unref(pa_socket_client *c); -void pa_socket_client_set_callback(pa_socket_client *c, void (*on_connection)(pa_socket_client *c, pa_iochannel*io, void *userdata), void *userdata); +void pa_socket_client_set_callback(pa_socket_client *c, pa_socket_client_cb_t on_connection, void *userdata); -int pa_socket_client_is_local(pa_socket_client *c); +pa_bool_t pa_socket_client_is_local(pa_socket_client *c);  #endif  | 
