projects
/
oweals
/
tinc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
d1e01bc
)
Don't forget the Port variable when creating an invitation URL.
author
Guus Sliepen
<guus@tinc-vpn.org>
Thu, 25 Jul 2013 15:17:33 +0000
(17:17 +0200)
committer
Guus Sliepen
<guus@tinc-vpn.org>
Thu, 25 Jul 2013 15:30:47 +0000
(17:30 +0200)
src/invitation.c
patch
|
blob
|
history
diff --git
a/src/invitation.c
b/src/invitation.c
index 7a6a91b7465401e14e099b9a3f58fe2adfd57ef2..bd1fb94022f95d1f470613b75e64219044fe3bd0 100644
(file)
--- a/
src/invitation.c
+++ b/
src/invitation.c
@@
-42,6
+42,8
@@
int addressfamily = AF_UNSPEC;
char *get_my_hostname() {
char *hostname = NULL;
char *get_my_hostname() {
char *hostname = NULL;
+ char *port = NULL;
+ char *hostport = NULL;
char *name = get_my_name(false);
char *filename = NULL;
char *name = get_my_name(false);
char *filename = NULL;
@@
-61,20
+63,21
@@
char *get_my_hostname() {
if(*q == '=')
q += 1 + strspn(q + 1, "\t ");
*p = 0;
if(*q == '=')
q += 1 + strspn(q + 1, "\t ");
*p = 0;
- if(strcasecmp(line, "Address"))
- continue;
p = q + strcspn(q, "\t ");
if(*p)
*p++ = 0;
p += strspn(p, "\t ");
p[strcspn(p, "\t ")] = 0;
p = q + strcspn(q, "\t ");
if(*p)
*p++ = 0;
p += strspn(p, "\t ");
p[strcspn(p, "\t ")] = 0;
+ if(!port && !strcasecmp(line, "Port")) {
+ port = xstrdup(q);
+ continue;
+ }
+ if(strcasecmp(line, "Address"))
+ continue;
+ hostname = xstrdup(q);
if(*p) {
if(*p) {
- if(strchr(q, ':'))
- xasprintf(&hostname, "[%s]:%s", q, p);
- else
- xasprintf(&hostname, "%s:%s", q, p);
- } else {
- hostname = xstrdup(q);
+ free(port);
+ port = xstrdup(p);
}
break;
}
}
break;
}
@@
-82,10
+85,8
@@
char *get_my_hostname() {
}
}
}
}
- if(hostname) {
- free(filename);
- return hostname;
- }
+ if(hostname)
+ goto done;
// If that doesn't work, guess externally visible hostname
fprintf(stderr, "Trying to discover externally visible hostname...\n");
// If that doesn't work, guess externally visible hostname
fprintf(stderr, "Trying to discover externally visible hostname...\n");
@@
-142,7
+143,7
@@
again:
if(!rstrip(line)) {
if(hostname)
if(!rstrip(line)) {
if(hostname)
- goto
don
e;
+ goto
sav
e;
else
goto again;
}
else
goto again;
}
@@
-157,7
+158,7
@@
again:
free(hostname);
hostname = xstrdup(line);
free(hostname);
hostname = xstrdup(line);
-
don
e:
+
sav
e:
if(filename) {
FILE *f = fopen(filename, "a");
if(f) {
if(filename) {
FILE *f = fopen(filename, "a");
if(f) {
@@
-166,10
+167,23
@@
done:
} else {
fprintf(stderr, "Could not append Address to %s: %s\n", filename, strerror(errno));
}
} else {
fprintf(stderr, "Could not append Address to %s: %s\n", filename, strerror(errno));
}
- free(filename);
}
}
- return hostname;
+done:
+ if(port) {
+ if(strchr(hostname, ':'))
+ xasprintf(&hostport, "[%s]:%s", hostname, port);
+ else
+ xasprintf(&hostport, "%s:%s", hostname, port);
+ } else {
+ hostport = hostname;
+ hostname = NULL;
+ }
+
+ free(hostname);
+ free(port);
+ free(filename);
+ return hostport;
}
static bool fcopy(FILE *out, const char *filename) {
}
static bool fcopy(FILE *out, const char *filename) {