Lines Matching defs:server

10 #include "ipc-server.h"
17 #define IPC_SERVER_HANDSHAKE "VERSION\tipc-server\t1\t0\nHANDSHAKE\t%s\t%s\n"
20 struct ipc_server *server;
39 static void ipc_server_disconnect(struct ipc_server *server);
41 static void ipc_server_input_line(struct ipc_server *server, char *line)
60 cmd->server = server;
63 server->ipc_cmd_refcount++;
65 server->callback(cmd, p);
69 static void ipc_server_input(struct ipc_server *server)
73 if (i_stream_read(server->input) < 0) {
74 ipc_server_disconnect(server);
78 if (!server->version_received) {
79 if ((line = i_stream_next_line(server->input)) == NULL)
84 i_error("IPC proxy not compatible with this server "
86 ipc_server_disconnect(server);
89 server->version_received = TRUE;
92 while ((line = i_stream_next_line(server->input)) != NULL)
93 ipc_server_input_line(server, line);
96 static void ipc_server_connect(struct ipc_server *server)
98 i_assert(server->fd == -1);
100 timeout_remove(&server->to);
102 server->fd = net_connect_unix(server->path);
103 if (server->fd == -1) {
104 i_error("connect(%s) failed: %m", server->path);
105 server->to = timeout_add(IPC_SERVER_RECONNECT_MSECS,
106 ipc_server_connect, server);
110 server->io = io_add(server->fd, IO_READ, ipc_server_input, server);
111 server->input = i_stream_create_fd(server->fd, (size_t)-1);
112 server->output = o_stream_create_fd(server->fd, (size_t)-1);
113 o_stream_set_no_error_handling(server->output, TRUE);
114 o_stream_nsend_str(server->output,
115 t_strdup_printf(IPC_SERVER_HANDSHAKE, server->name, my_pid));
116 o_stream_cork(server->output);
119 static void ipc_server_disconnect(struct ipc_server *server)
121 if (server->fd == -1)
124 io_remove(&server->io);
125 i_stream_destroy(&server->input);
126 o_stream_destroy(&server->output);
127 if (close(server->fd) < 0)
128 i_error("close(%s) failed: %m", server->path);
129 server->fd = -1;
136 struct ipc_server *server;
138 server = i_new(struct ipc_server, 1);
139 server->name = i_strdup(name);
140 server->path = i_strdup(ipc_socket_path);
141 server->callback = callback;
142 server->fd = -1;
143 ipc_server_connect(server);
144 return server;
149 struct ipc_server *server = *_server;
153 i_assert(server->ipc_cmd_refcount == 0);
155 ipc_server_disconnect(server);
156 timeout_remove(&server->to);
157 i_free(server->name);
158 i_free(server->path);
159 i_free(server);
164 o_stream_nsend_str(cmd->server->output,
170 o_stream_nsend_str(cmd->server->output,
172 o_stream_uncork(cmd->server->output);
174 i_assert(cmd->server->ipc_cmd_refcount > 0);
175 cmd->server->ipc_cmd_refcount--;