Commit 45fe2c9d authored by Ruslan Kuprieiev's avatar Ruslan Kuprieiev Committed by Pavel Emelyanov

page-server: assign opts.ps_port to sin_port in autobind case

Signed-off-by: 's avatarRuslan Kuprieiev <kupruser@gmail.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 13fc78b9
......@@ -258,6 +258,7 @@ int cr_page_server(bool daemon_mode, int cfd)
{
int sk = -1, ask = -1, ret;
struct sockaddr_in saddr, caddr;
socklen_t slen = sizeof(saddr);
socklen_t clen = sizeof(caddr);
up_page_ids_base();
......@@ -280,7 +281,7 @@ int cr_page_server(bool daemon_mode, int cfd)
if (get_sockaddr_in(&saddr))
goto out;
if (bind(sk, (struct sockaddr *)&saddr, sizeof(saddr))) {
if (bind(sk, (struct sockaddr *)&saddr, slen)) {
pr_perror("Can't bind page server");
goto out;
}
......@@ -290,6 +291,17 @@ int cr_page_server(bool daemon_mode, int cfd)
goto out;
}
/* Get socket port in case of autobind */
if (opts.ps_port == 0) {
if (getsockname(sk, (struct sockaddr *)&saddr, &slen)) {
pr_perror("Can't get page server name");
goto out;
}
opts.ps_port = ntohs(saddr.sin_port);
pr_info("Using %u port\n", opts.ps_port);
}
no_server:
if (daemon_mode) {
ret = cr_daemon(1, 0, &ask, cfd);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment