diff --git a/src/lib66/svc/svc_send.c b/src/lib66/svc/svc_send.c
index d3c54beebaa4d71ccf960c8c665236e78dac6df4..c6e6f2e69693088ef360d29c789924ec2eb3979d 100644
--- a/src/lib66/svc/svc_send.c
+++ b/src/lib66/svc/svc_send.c
@@ -23,24 +23,24 @@
 #include <66/resolve.h>
 #include <66/ssexec.h>
 
-int svc_send(ssexec_t *info,genalloc *ga,char const *sig,char const *const *envp)
+int svc_send(ssexec_t *info, resolve_service_t *sv, unsigned int len, char const *sig)
 {
     log_flow() ;
 
-    size_t i = 0 ;
-    int nargc = 3 + genalloc_len(resolve_service_t,ga) ;
+    unsigned int pos = 0 ;
+    int nargc = 3 + len ;
     char const *newargv[nargc] ;
     unsigned int m = 0 ;
 
-    newargv[m++] = "fake_name" ;
+    newargv[m++] = "svc_send" ;
     newargv[m++] = sig ;
 
-    for (; i < genalloc_len(resolve_service_t,ga) ; i++)
-        newargv[m++] = genalloc_s(resolve_service_t,ga)[i].sa.s + genalloc_s(resolve_service_t,ga)[i].name ;
+    for (; pos < len ; pos++)
+        newargv[m++] = sv[pos].sa.s + sv[pos].name ;
 
     newargv[m++] = 0 ;
 
-    if (ssexec_svctl(nargc,newargv,envp,info))
+    if (ssexec_svctl(nargc, newargv, (char const *const *) environ, info))
         return 0 ;
 
     return 1 ;