- va_list args;
- char buffer[MAXBUFSIZE];
- int len, request;
- char *name = "everyone";
- char *hostname = "broadcast";
-cp
- if(c)
- {
- name = c->name;
- hostname = c->hostname;
- }
-
- /* Use vsnprintf instead of vasprintf: faster, no memory
- fragmentation, cleanup is automatic, and there is a limit on the
- input buffer anyway */
-
- va_start(args, format);
- len = vsnprintf(buffer, MAXBUFSIZE, format, args);
- va_end(args);
-
- if(len < 0 || len > MAXBUFSIZE-1)
- {
- syslog(LOG_ERR, _("Output buffer overflow while sending request to %s (%s)"), name, hostname);
- return -1;
- }
-
- if(debug_lvl >= DEBUG_PROTOCOL)
- {
- sscanf(buffer, "%d", &request);
- if(debug_lvl >= DEBUG_META)
- syslog(LOG_DEBUG, _("Sending %s to %s (%s): %s"), request_name[request], name, hostname, buffer);
- else
- syslog(LOG_DEBUG, _("Sending %s to %s (%s)"), request_name[request], name, hostname);
- }
-
- buffer[len++] = '\n';
-cp
- if(c)
- return send_meta(c, buffer, len);
- else
- return broadcast_meta(NULL, buffer, len);
+ int request;
+
+ cp();
+
+ ifdebug(PROTOCOL) {
+ sscanf(from->buffer, "%d", &request);
+ ifdebug(META)
+ logger(LOG_DEBUG, _("Forwarding %s from %s (%s): %s"),
+ request_name[request], from->name, from->hostname,
+ from->buffer);
+ else
+ logger(LOG_DEBUG, _("Forwarding %s from %s (%s)"),
+ request_name[request], from->name, from->hostname);
+ }
+
+ from->buffer[from->reqlen - 1] = '\n';
+
+ broadcast_meta(from, from->buffer, from->reqlen);