return EINVAL;
out->BShost = strdup(bkserver);
- portbeg = strchr(out->BShost, ':');
+ portbeg = strrchr(out->BShost, ':');
if (portbeg) {
*portbeg = 0;
/* try to get port number */
pom = strdup(idString + sizeof(GLITE_JOBID_PROTO_PREFIX) - 1);
pom1 = strchr(pom, '/');
- pom2 = strchr(pom, ':');
if (!pom1) { free(pom); free(out); return EINVAL; }
+ pom2 = strrchr(pom, ':');
+ if (pom2 && strchr(pom2,']')) pom2 = NULL;
+
if ( pom2 && (pom1 > pom2)) {
pom[pom2-pom] = '\0';
out->BShost = strdup(pom);
dprintf(("generating jobids..."));
{
char *name=server?server:strdup(PROXY_SERVER);
- char *p = strchr(name,':');
+ char *p = strrchr(name,':');
int port;
if (p) { *p=0; port = atoi(p+1); }
{
char *p;
- p = strchr(host, ':');
+ p = strrchr(host, ':');
if(p)
*p = 0;
dest_host = strdup(host);
{
char *p = NULL,*s = mygetenv(param);
- if (s) p = strchr(s,':');
+ if (s) p = strrchr(s,':');
return p ? atoi(p+1) : dflt;
}
s = mygetenv(param);
if (!s && !dflt) return NULL;
s = strdup(s?s:dflt),
- p = strchr(s,':');
+ p = strrchr(s,':');
if (p) *p = 0;
return s;
}
if (mode & SERVICE_SERVER) {
if ( fake_host )
{
- char *p = strchr(fake_host,':');
+ char *p = strrchr(fake_host,':');
if (p)
{
}
if (ar.err == NETDB_SUCCESS) {
- if (name) *name = ar.host;
+ if (name) {
+ if (numeric && addr->sa_family == AF_INET6) {
+ asprintf(name,"[%s]",ar.host);
+ free(ar.host);
+ } else {
+ *name = ar.host;
+ }
+ }
if (service) *service = ar.service;
}
err = ar.err;
free(ju); ju = NULL;
dest = strdup(jobc[1]);
- if ( !(aux = strchr(dest, ':')) )
+ if ( !(aux = strrchr(dest, ':')) )
{
edg_wll_SetError(ctx, EINVAL, "Can't parse notification destination");
free(dest);
goto cleanup;
}
if ( !strncmp(address_override, "0.0.0.0", aux-address_override) ||
+ !strncmp(address_override, "[::]", aux-address_override) ||
!strncmp(address_override, "::", aux-address_override) )
trio_asprintf(&addr_s, "%s:%s", ctx->connections->serverConnection->peerName, aux+1);
}
goto rollback;
}
if ( !strncmp(address_override, "0.0.0.0", aux-address_override) ||
+ !strncmp(address_override, "[::]", aux-address_override) ||
!strncmp(address_override, "::", aux-address_override) )
trio_asprintf(&addr_s, "%s:%s", ctx->connections->serverConnection->peerName, aux+1);
}
}
if ( dest )
{
- host = strchr(dest, ':');
+ host = strrchr(dest, ':');
port = atoi(host+1);
if ( !(host = strndup(dest, host-dest)) )
{
edg_wll_InitContext(&ctx);
if ( server )
{
- char *p = strchr(server, ':');
+ char *p = strrchr(server, ':');
if ( p )
{
edg_wll_SetParam(ctx, EDG_WLL_PARAM_QUERY_SERVER_PORT, atoi(p+1));
edg_wll_InitContext(&ctx);
if ( server )
{
- char *p = strchr(server, ':');
+ char *p = strrchr(server, ':');
if ( p )
{
edg_wll_SetParam(ctx, EDG_WLL_PARAM_QUERY_SERVER_PORT, atoi(p+1));
if ( server )
{
- char *p = strchr(server, ':');
+ char *p = strrchr(server, ':');
if ( p )
{
edg_wll_SetParam(ctx, EDG_WLL_PARAM_QUERY_SERVER_PORT, atoi(p+1));