X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsymsocket.c;h=40507f7e6dd64ee67c948c76f63a84fbdc4d4e6f;hb=ff7ed8bbe26da10e27fa2628919f2017d760d94c;hp=ee5869a23c3220c4d95f637789ac91717074a695;hpb=3422c467b484c200c8486da77678a7f4f58d4d0f;p=sympathy.git diff --git a/src/symsocket.c b/src/symsocket.c index ee5869a..40507f7 100644 --- a/src/symsocket.c +++ b/src/symsocket.c @@ -1,4 +1,4 @@ -/* +/* * symsocket.c: * * Copyright (c) 2008 James McKenzie , @@ -7,10 +7,34 @@ */ static char rcsid[] = - "$Id$"; + "$Id: symsocket.c,v 1.13 2008/03/07 14:13:40 james Exp $"; -/* - * $Log$ +/* + * $Log: symsocket.c,v $ + * Revision 1.13 2008/03/07 14:13:40 james + * *** empty log message *** + * + * Revision 1.12 2008/03/07 13:16:02 james + * *** empty log message *** + * + * Revision 1.11 2008/03/07 12:37:04 james + * *** empty log message *** + * + * Revision 1.10 2008/03/03 18:16:16 james + * *** empty log message *** + * + * Revision 1.9 2008/03/03 18:15:19 james + * *** empty log message *** + * + * Revision 1.8 2008/03/03 06:04:42 james + * *** empty log message *** + * + * Revision 1.7 2008/03/02 10:37:56 james + * *** empty log message *** + * + * Revision 1.6 2008/02/27 00:27:22 james + * *** empty log message *** + * * Revision 1.5 2008/02/20 22:54:22 staffcvs * *** empty log message *** * @@ -32,7 +56,7 @@ static char rcsid[] = #include #include -#define BUF_SIZE 16384 +#define BUF_SIZE 65536 #define MAX_TXN 4096 int @@ -77,11 +101,10 @@ socket_free (Socket * s) slide_free (s->read_buf); if (s->write_buf) slide_free (s->write_buf); - if (s->path_to_unlink) - { - unlink (s->path_to_unlink); - free (s->path_to_unlink); - } + if (s->path_to_unlink) { + unlink (s->path_to_unlink); + free (s->path_to_unlink); + } close (s->fd); free (s); } @@ -120,30 +143,28 @@ socket_listen (char *path) return NULL; n = strlen (path) + sizeof (struct sockaddr_un); - sun = (struct sockaddr_un *) malloc (n); + sun = (struct sockaddr_un *) xmalloc (n); memset (sun, 0, n); sun->sun_family = AF_UNIX; strcpy (sun->sun_path, path); - if (bind (fd, (struct sockaddr *) sun, SUN_LEN (sun)) < 0) - { - free (sun); - close (fd); - return NULL; - } + if (bind (fd, (struct sockaddr *) sun, SUN_LEN (sun)) < 0) { + free (sun); + close (fd); + return NULL; + } free (sun); - if (listen (fd, 5) < 0) - { - close (fd); - return NULL; - } + if (listen (fd, 5) < 0) { + close (fd); + return NULL; + } set_nonblocking (fd); - ret = (Socket *) malloc (sizeof (Socket)); + ret = (Socket *) xmalloc (sizeof (Socket)); memset (ret, 0, sizeof (Socket)); ret->read_buf = NULL; ret->write_buf = NULL; @@ -171,7 +192,7 @@ socket_accept (Socket * l) return NULL; - ret = (Socket *) malloc (sizeof (Socket)); + ret = (Socket *) xmalloc (sizeof (Socket)); memset (ret, 0, sizeof (Socket)); set_nonblocking (fd); @@ -185,7 +206,7 @@ socket_accept (Socket * l) } -/*Blocking for now*/ +/* Blocking for now */ Socket * socket_connect (char *path) { @@ -201,24 +222,23 @@ socket_connect (char *path) return NULL; n = strlen (path) + sizeof (struct sockaddr_un); - sun = (struct sockaddr_un *) malloc (n); + sun = (struct sockaddr_un *) xmalloc (n); memset (sun, 0, n); sun->sun_family = AF_UNIX; strcpy (sun->sun_path, path); - if (connect (fd, (struct sockaddr *) sun, SUN_LEN (sun))) - { - free (sun); - close (fd); - return NULL; - } + if (connect (fd, (struct sockaddr *) sun, SUN_LEN (sun))) { + free (sun); + close (fd); + return NULL; + } free (sun); set_nonblocking (fd); - ret = (Socket *) malloc (sizeof (Socket)); + ret = (Socket *) xmalloc (sizeof (Socket)); memset (ret, 0, sizeof (Socket)); ret->fd = fd; @@ -248,12 +268,11 @@ socket_pre_select (Socket * s, fd_set * rfds, fd_set * wfds) char buf[1024]; int n; - /*Server socket */ - if (SOCKET_IS_LISTENER (s)) - { - FD_SET (s->fd, rfds); - return; - } + /* Server socket */ + if (SOCKET_IS_LISTENER (s)) { + FD_SET (s->fd, rfds); + return; + } if (!SLIDE_EMPTY (s->write_buf)) FD_SET (s->fd, wfds); @@ -271,29 +290,27 @@ socket_post_select (Socket * s, fd_set * rfds, fd_set * wfds) int error = 0; - if ((!SLIDE_EMPTY (s->write_buf)) && FD_ISSET (s->fd, wfds)) - { - n = - (SLIDE_BYTES (s->write_buf) > - MAX_TXN) ? MAX_TXN : SLIDE_BYTES (s->write_buf); - n = wrap_send (s->fd, SLIDE_RPTR (s->write_buf), n); - if (n > 0) - slide_consume (s->write_buf, n); - if (n < 0) - error = -1; - } - - if (!SLIDE_FULL (s->read_buf) && FD_ISSET (s->fd, rfds)) - { - n = - (SLIDE_SPACE (s->read_buf) > - MAX_TXN) ? MAX_TXN : SLIDE_SPACE (s->read_buf); - n = wrap_recv (s->fd, SLIDE_WPTR (s->read_buf), n); - if (n > 0) - slide_added (s->read_buf, n); - if (n < 0) - error = -1; - } + if ((!SLIDE_EMPTY (s->write_buf)) && FD_ISSET (s->fd, wfds)) { + n = + (SLIDE_BYTES (s->write_buf) > + MAX_TXN) ? MAX_TXN : SLIDE_BYTES (s->write_buf); + n = wrap_send (s->fd, SLIDE_RPTR (s->write_buf), n); + if (n > 0) + slide_consume (s->write_buf, n); + if (n < 0) + error = -1; + } + + if (!SLIDE_FULL (s->read_buf) && FD_ISSET (s->fd, rfds)) { + n = + (SLIDE_SPACE (s->read_buf) > + MAX_TXN) ? MAX_TXN : SLIDE_SPACE (s->read_buf); + n = wrap_recv (s->fd, SLIDE_WPTR (s->read_buf), n); + if (n > 0) + slide_added (s->read_buf, n); + if (n < 0) + error = -1; + } s->msg = ipc_check_for_message_in_slide (s->read_buf);