Lines Matching refs:dict_tcp
119 static int dict_tcp_connect(DICT_TCP *dict_tcp) in dict_tcp_connect() argument
127 if ((fd = inet_connect(dict_tcp->dict.name, NON_BLOCKING, DICT_TCP_TMOUT)) < 0) { in dict_tcp_connect()
128 msg_warn("connect to TCP map %s: %m", dict_tcp->dict.name); in dict_tcp_connect()
131 dict_tcp->fp = vstream_fdopen(fd, O_RDWR); in dict_tcp_connect()
132 vstream_control(dict_tcp->fp, in dict_tcp_connect()
139 if (dict_tcp->raw_buf == 0) { in dict_tcp_connect()
140 dict_tcp->raw_buf = vstring_alloc(10); in dict_tcp_connect()
141 dict_tcp->hex_buf = vstring_alloc(10); in dict_tcp_connect()
148 static void dict_tcp_disconnect(DICT_TCP *dict_tcp) in dict_tcp_disconnect() argument
150 (void) vstream_fclose(dict_tcp->fp); in dict_tcp_disconnect()
151 dict_tcp->fp = 0; in dict_tcp_disconnect()
158 DICT_TCP *dict_tcp = (DICT_TCP *) dict; in dict_tcp_lookup() local
183 if (dict_tcp->fp != 0 || dict_tcp_connect(dict_tcp) == 0) { in dict_tcp_lookup()
190 hex_quote(dict_tcp->hex_buf, key); in dict_tcp_lookup()
191 vstream_fprintf(dict_tcp->fp, "get %s\n", STR(dict_tcp->hex_buf)); in dict_tcp_lookup()
193 msg_info("%s: send: get %s", myname, STR(dict_tcp->hex_buf)); in dict_tcp_lookup()
194 last_ch = vstring_get_nonl_bound(dict_tcp->hex_buf, dict_tcp->fp, in dict_tcp_lookup()
204 dict_tcp->dict.name); in dict_tcp_lookup()
207 dict_tcp->dict.name, DICT_TCP_MAXLEN); in dict_tcp_lookup()
208 dict_tcp_disconnect(dict_tcp); in dict_tcp_lookup()
223 msg_info("%s: recv: %s", myname, STR(dict_tcp->hex_buf)); in dict_tcp_lookup()
229 if (start = STR(dict_tcp->hex_buf), in dict_tcp_lookup()
232 || !hex_unquote(dict_tcp->raw_buf, start + 4)) { in dict_tcp_lookup()
234 dict_tcp->dict.name, printable(STR(dict_tcp->hex_buf), '_')); in dict_tcp_lookup()
235 dict_tcp_disconnect(dict_tcp); in dict_tcp_lookup()
246 dict_tcp->dict.name, printable(STR(dict_tcp->hex_buf), '_')); in dict_tcp_lookup()
247 dict_tcp_disconnect(dict_tcp); in dict_tcp_lookup()
252 myname, printable(STR(dict_tcp->hex_buf), '_')); in dict_tcp_lookup()
253 dict_tcp_disconnect(dict_tcp); in dict_tcp_lookup()
258 myname, printable(STR(dict_tcp->hex_buf), '_')); in dict_tcp_lookup()
263 myname, printable(STR(dict_tcp->raw_buf), '_')); in dict_tcp_lookup()
264 RETURN(DICT_ERR_NONE, STR(dict_tcp->raw_buf)); in dict_tcp_lookup()
272 DICT_TCP *dict_tcp = (DICT_TCP *) dict; in dict_tcp_close() local
274 if (dict_tcp->fp) in dict_tcp_close()
275 (void) vstream_fclose(dict_tcp->fp); in dict_tcp_close()
276 if (dict_tcp->raw_buf) in dict_tcp_close()
277 vstring_free(dict_tcp->raw_buf); in dict_tcp_close()
278 if (dict_tcp->hex_buf) in dict_tcp_close()
279 vstring_free(dict_tcp->hex_buf); in dict_tcp_close()
289 DICT_TCP *dict_tcp; in dict_tcp_open() local
307 dict_tcp = (DICT_TCP *) dict_alloc(DICT_TYPE_TCP, map, sizeof(*dict_tcp)); in dict_tcp_open()
308 dict_tcp->fp = 0; in dict_tcp_open()
309 dict_tcp->raw_buf = dict_tcp->hex_buf = 0; in dict_tcp_open()
310 dict_tcp->dict.lookup = dict_tcp_lookup; in dict_tcp_open()
311 dict_tcp->dict.close = dict_tcp_close; in dict_tcp_open()
312 dict_tcp->dict.flags = dict_flags | DICT_FLAG_PATTERN; in dict_tcp_open()
314 dict_tcp->dict.fold_buf = vstring_alloc(10); in dict_tcp_open()
316 return (DICT_DEBUG (&dict_tcp->dict)); in dict_tcp_open()