[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[microdc-devel] Idea
From: |
Serge |
Subject: |
[microdc-devel] Idea |
Date: |
Tue, 7 Aug 2007 00:42:46 +0400 |
Hi!
Please include this patch into next release.
If you've many aliases this patch is very useful.
Maybe need some correct.
Thnx.
patch for microdc2-0.15.6
------------------------
--- main.c.orig 2006-12-24 21:23:51.000000000 +0300
+++ main.c 2007-08-07 00:33:41.000000000 +0400
@@ -1020,7 +1020,11 @@
addr_len = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_port = htons(listen_port);
- addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ if (force_listen_addr.s_addr != INADDR_NONE) {
+ addr.sin_addr.s_addr = force_listen_addr.s_addr;
+ } else {
+ addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ }
if (bind(search_socket, (struct sockaddr *) &addr, addr_len) < 0) {
warn(_("Cannot bind to address - %s\n"), errstr);
return false;
--- user.c.orig 2006-11-30 13:00:40.000000000 +0300
+++ user.c 2007-08-07 00:33:41.000000000 +0400
@@ -1409,6 +1409,7 @@
user_main(int get_fd[2], int put_fd[2], struct sockaddr_in *addr, int sock)
{
struct sigaction sigact;
+ struct sockaddr_in addr_bind;
DCUserConnLocal *ucl;
filelist_free(our_filelist);
@@ -1471,7 +1472,7 @@
ucl->user_sendq = byteq_new(DEFAULT_SENDQ_SIZE);
ucl->dir_rand = rand() % 0x8000;
if (sock < 0) {
- ucl->user_socket = socket(PF_INET, SOCK_STREAM, 0);
+ ucl->user_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ucl->user_socket < 0) {
warn(_("Cannot create socket - %s\n"), errstr);
goto cleanup;
@@ -1493,6 +1494,17 @@
* success, we would catch the successful connection after select -
* when socket_fd is writable.
*/
+ addr_bind.sin_family = AF_INET;
+ addr_bind.sin_port = htons((int)NULL); // random port
+ if (force_listen_addr.s_addr != INADDR_NONE) {
+ addr_bind.sin_addr.s_addr = force_listen_addr.s_addr;
+ } else {
+ addr_bind.sin_addr.s_addr = htonl(INADDR_ANY);
+ }
+ if (bind(ucl->user_socket, (struct sockaddr *) &addr_bind,
sizeof(struct sockaddr_in)) < 0) {
+ warn(_("Cannot bind to address - %s\n"), errstr);
+ goto cleanup;
+ }
if (connect(ucl->user_socket, (struct sockaddr *) addr, sizeof(struct
sockaddr_in)) < 0
&& errno != EINPROGRESS) {
warn(_("Cannot connect - %s\n"), errstr);
------------------------
------------------------
Serge
mailto:address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [microdc-devel] Idea,
Serge <=