{ // only return records if no error and at least one record
const char *xsl_parms[3];
- char cproxy_host[1024];
-
+ mp::wrbuf cproxy_host;
+
if (b->enable_cproxy && b->content_session_id.length())
{
- sprintf(cproxy_host, "%s.%s/",
- b->content_session_id.c_str(),
- m_p->content_proxy_server.c_str());
+ const char *proxy_server_cstr = m_p->content_proxy_server.c_str();
+ const char *session_sub = strstr(proxy_server_cstr, "%s");
- char *q_cproxy_host = (char *)
- odr_malloc(odr, strlen(cproxy_host) + 3);
- strcpy(q_cproxy_host, "\"");
- strcat(q_cproxy_host, cproxy_host);
- strcat(q_cproxy_host, "\"");
-
+ if (session_sub)
+ {
+ wrbuf_puts(cproxy_host, "\"");
+ wrbuf_write(cproxy_host, proxy_server_cstr,
+ session_sub - proxy_server_cstr);
+ wrbuf_puts(cproxy_host, b->content_session_id.c_str());
+ wrbuf_puts(cproxy_host, session_sub + 2);
+ wrbuf_puts(cproxy_host, "/\"");
+ }
+ else
+ {
+ wrbuf_printf(cproxy_host, "\"%s.%s/\"",
+ b->content_session_id.c_str(),
+ proxy_server_cstr);
+ }
xsl_parms[0] = "cproxyhost";
- xsl_parms[1] = q_cproxy_host;
+ xsl_parms[1] = wrbuf_cstr(cproxy_host);
xsl_parms[2] = 0;
}
else
{
xsl_parms[0] = 0;
- *cproxy_host = '\0';
}
char *odr_database = odr_strdup(odr,