diff options
Diffstat (limited to 'src/server.c')
| -rw-r--r-- | src/server.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/server.c b/src/server.c index 0e01683..98680a3 100644 --- a/src/server.c +++ b/src/server.c @@ -17,6 +17,8 @@ #include "sha256.c" // +uint16_t current_port = default_port; + const uint64_t max_neighbors = 1 << 10; // probably more than enough for a lot of folks uint64_t current_neighbor_ptr = 0; @@ -119,7 +121,7 @@ void* propagate_packet(void* _packet) { neighbor.v4_addr[ 3 ]); result = study( - ip_string, default_port, send_data, send_len, &response_data, &response_len); + ip_string, neighbor.port, send_data, send_len, &response_data, &response_len); } else if (neighbor.has_ipv6) { char ip_string[ 46 ]; int offset = 0; @@ -130,7 +132,7 @@ void* propagate_packet(void* _packet) { } result = study( - ip_string, default_port, send_data, send_len, &response_data, &response_len); + ip_string, neighbor.port, send_data, send_len, &response_data, &response_len); } if (result != 0) { log(_error, "failed to send packet to neighbor"); } @@ -540,7 +542,7 @@ void paste_server( } } - struct relay_info audit_result = run_server_audit(ip_string, default_port); + struct relay_info audit_result = run_server_audit(ip_string, neighbor.port); if (!audit_result.capabilities.can_store && audit_result.major_version == 0 && audit_result.minor_version == 0) { // invalid @@ -829,7 +831,7 @@ void* check_neighbors(void* arg) { neighbor.v4_addr[ 2 ], neighbor.v4_addr[ 3 ]); result = study( - ip_string, default_port, audit_request, 1, &response_data, &response_len); + ip_string, neighbor.port, audit_request, 1, &response_data, &response_len); } else if (neighbor.has_ipv6) { char ip_string[ 46 ]; int offset = 0; @@ -847,7 +849,7 @@ void* check_neighbors(void* arg) { } result = study( - ip_string, default_port, audit_request, 1, &response_data, &response_len); + ip_string, neighbor.port, audit_request, 1, &response_data, &response_len); } if (result != 0 || response_data[ 0 ] != audit_response) { @@ -901,13 +903,24 @@ int main(int argc, char** argv) { free(__log_level); } + char* port = get_config("port", false); + if (port) { + if (!isdigit(*port)) { + fprintf(stderr, "invalid port value '%s', must be a number\n", port); + exit(1); + } + + current_port = atoi(port); + free(port); + } + fprintf( stderr, "-- moonpaste server v%i.%i --\n" "port %i\n\n", server_stats.major_version, server_stats.minor_version, - default_port); + current_port); // init packet_storage = alloc_map(max_storage * sizeof(struct data_packet_entry)); @@ -947,7 +960,7 @@ int main(int argc, char** argv) { free(plugin_path); } - omen(default_port, paste_server); + omen(current_port, paste_server); packet_cleanup_thread_running = false; pthread_join(packet_cleanup_thread, NULL); |
