Lines Matching refs:clnt_stream
124 CLNT_STREAM *clnt_stream = (CLNT_STREAM *) context; in clnt_stream_event() local
130 if (clnt_stream->vstream == 0) in clnt_stream_event()
133 clnt_stream_close(clnt_stream); in clnt_stream_event()
158 static void clnt_stream_open(CLNT_STREAM *clnt_stream) in clnt_stream_open() argument
164 if (clnt_stream->vstream) in clnt_stream_open()
176 clnt_stream->vstream = mail_connect_wait(clnt_stream->class, in clnt_stream_open()
177 clnt_stream->service); in clnt_stream_open()
178 close_on_exec(vstream_fileno(clnt_stream->vstream), CLOSE_ON_EXEC); in clnt_stream_open()
179 event_enable_read(vstream_fileno(clnt_stream->vstream), clnt_stream_event, in clnt_stream_open()
180 (void *) clnt_stream); in clnt_stream_open()
181 event_request_timer(clnt_stream_event, (void *) clnt_stream, in clnt_stream_open()
182 clnt_stream->timeout); in clnt_stream_open()
183 event_request_timer(clnt_stream_ttl_event, (void *) clnt_stream, in clnt_stream_open()
184 clnt_stream->ttl); in clnt_stream_open()
189 static void clnt_stream_close(CLNT_STREAM *clnt_stream) in clnt_stream_close() argument
195 if (clnt_stream->vstream == 0) in clnt_stream_close()
202 msg_info("%s stream disconnect", clnt_stream->service); in clnt_stream_close()
203 event_disable_readwrite(vstream_fileno(clnt_stream->vstream)); in clnt_stream_close()
204 event_cancel_timer(clnt_stream_event, (void *) clnt_stream); in clnt_stream_close()
205 event_cancel_timer(clnt_stream_ttl_event, (void *) clnt_stream); in clnt_stream_close()
206 (void) vstream_fclose(clnt_stream->vstream); in clnt_stream_close()
207 clnt_stream->vstream = 0; in clnt_stream_close()
212 void clnt_stream_recover(CLNT_STREAM *clnt_stream) in clnt_stream_recover() argument
218 if (clnt_stream->vstream) in clnt_stream_recover()
219 clnt_stream_close(clnt_stream); in clnt_stream_recover()
224 VSTREAM *clnt_stream_access(CLNT_STREAM *clnt_stream) in clnt_stream_access() argument
233 if (clnt_stream->vstream == 0) { in clnt_stream_access()
234 clnt_stream_open(clnt_stream); in clnt_stream_access()
235 handshake = clnt_stream->handshake; in clnt_stream_access()
236 } else if (readable(vstream_fileno(clnt_stream->vstream))) { in clnt_stream_access()
237 clnt_stream_close(clnt_stream); in clnt_stream_access()
238 clnt_stream_open(clnt_stream); in clnt_stream_access()
239 handshake = clnt_stream->handshake; in clnt_stream_access()
241 event_request_timer(clnt_stream_event, (void *) clnt_stream, in clnt_stream_access()
242 clnt_stream->timeout); in clnt_stream_access()
245 if (handshake != 0 && handshake(clnt_stream->vstream) != 0) in clnt_stream_access()
247 return (clnt_stream->vstream); in clnt_stream_access()
256 CLNT_STREAM *clnt_stream; in clnt_stream_create() local
261 clnt_stream = (CLNT_STREAM *) mymalloc(sizeof(*clnt_stream)); in clnt_stream_create()
262 clnt_stream->vstream = 0; in clnt_stream_create()
263 clnt_stream->timeout = timeout; in clnt_stream_create()
264 clnt_stream->ttl = ttl; in clnt_stream_create()
265 clnt_stream->handshake = handshake; in clnt_stream_create()
266 clnt_stream->class = mystrdup(class); in clnt_stream_create()
267 clnt_stream->service = mystrdup(service); in clnt_stream_create()
268 return (clnt_stream); in clnt_stream_create()
273 void clnt_stream_free(CLNT_STREAM *clnt_stream) in clnt_stream_free() argument
275 if (clnt_stream->vstream) in clnt_stream_free()
276 clnt_stream_close(clnt_stream); in clnt_stream_free()
277 myfree(clnt_stream->class); in clnt_stream_free()
278 myfree(clnt_stream->service); in clnt_stream_free()
279 myfree((void *) clnt_stream); in clnt_stream_free()