summaryrefslogtreecommitdiffstats
path: root/src/format.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-02 14:22:47 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-02 14:22:47 -0400
commitec7f4cfda2c2708ed7ec3522600c95bd32fc43ea (patch)
tree1b3cf1471d0feacee35bfbe2bae72b2ead3dba36 /src/format.c
parentc9ad0149295a99d832c39e5d8ef43294d06e39ee (diff)
downloadslapi-nis-ec7f4cfda2c2708ed7ec3522600c95bd32fc43ea.tar.gz
slapi-nis-ec7f4cfda2c2708ed7ec3522600c95bd32fc43ea.tar.xz
slapi-nis-ec7f4cfda2c2708ed7ec3522600c95bd32fc43ea.zip
- initial support for returning larger entries over tcp than we can over udp
- make the tcp sizes tunable
Diffstat (limited to 'src/format.c')
-rw-r--r--src/format.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/format.c b/src/format.c
index f738c44..6138207 100644
--- a/src/format.c
+++ b/src/format.c
@@ -1042,19 +1042,28 @@ static char *
format_format(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
const char *fmt, char ***visited_ndns)
{
- char buf[YPMAXRECORD], *tmp;
+ char *buf, *tmp, *ret;
const char *match, *fmtstart, *fmtend;
- unsigned int i, j;
+ unsigned int i, j, buflen;
int exp_len;
- i = format_expand(state, pb, e, fmt, buf, sizeof(buf),
- visited_ndns, TRUE);
- if (i < sizeof(buf)) {
+ buflen = state->max_value_size;
+ buf = malloc(buflen);
+ if (buf == NULL) {
+ return NULL;
+ }
+
+ i = format_expand(state, pb, e, fmt, buf, buflen, visited_ndns, TRUE);
+ if (i < buflen) {
buf[i] = '\0';
- return strdup(buf);
+ ret = strdup(buf);
} else {
- return NULL;
+ ret = NULL;
}
+
+ free(buf);
+
+ return ret;
}
char *