changeset 599:eeea75b8b6f3

Implement proxy user id setting.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 08 May 2014 16:14:09 +0300
parents 1e10031cf2d5
children 07583e37d260
files main.c network.c network.h
diffstat 3 files changed, 10 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/main.c	Mon Feb 10 22:59:13 2014 +0200
+++ b/main.c	Thu May 08 16:14:09 2014 +0300
@@ -2062,7 +2062,7 @@
     // Are we using a proxy?
     if (optProxyType != NN_PROXY_NONE && optProxyServer != NULL)
     {
-        if (nn_conn_set_proxy(conn, optProxyType, optProxyPort, optProxyServer) != 0)
+        if (nn_conn_set_proxy(conn, optProxyType, optProxyPort, optProxyServer, NULL) != 0)
         {
             errorMsg("Error setting proxy information.\n");
             goto err_exit;
--- a/network.c	Mon Feb 10 22:59:13 2014 +0200
+++ b/network.c	Thu May 08 16:14:09 2014 +0300
@@ -142,7 +142,7 @@
 }
 
 
-int nn_conn_set_proxy(nn_conn_t *conn, int type, int port, const char *host)
+int nn_conn_set_proxy(nn_conn_t *conn, int type, int port, const char *host, const char *userid)
 {
     if (conn == NULL)
         return -1;
@@ -150,6 +150,9 @@
     conn->proxy.type = type;
     conn->proxy.port = port;
     conn->proxy.host = th_strdup(host);
+    conn->proxy.userid = th_strdup(userid);
+    if (conn->proxy.userid == NULL)
+        conn->proxy.userid = th_strdup("James Bond");
 
     if (host != NULL)
     {
@@ -166,7 +169,6 @@
 int nn_conn_open(nn_conn_t *conn, const int port, const char *host)
 {
     struct sockaddr_in dest;
-    static const char *userid = "James Bond";
 
     if (conn == NULL)
         return -1;
@@ -222,7 +224,7 @@
     if (conn->proxy.type == NN_PROXY_SOCKS4 || conn->proxy.type == NN_PROXY_SOCKS4A)
     {
         struct nn_socks_t *socksh;
-        size_t bufsiz = sizeof(struct nn_socks_t) + strlen(userid) + 1;
+        size_t bufsiz = sizeof(struct nn_socks_t) + strlen(conn->proxy.userid) + 1;
         char *ptr, *buf;
         int tries, status = -1;
 
@@ -250,11 +252,11 @@
             socksh->addr = conn->addr.s_addr;
         ptr += sizeof(struct nn_socks_t);
 
-        strcpy(ptr, userid);
+        strcpy(ptr, conn->proxy.userid);
 
         if (conn->proxy.type == NN_PROXY_SOCKS4A)
         {
-            ptr += strlen(userid) + 1;
+            ptr += strlen(conn->proxy.userid) + 1;
             strcpy(ptr, conn->host);
         }
 
--- a/network.h	Mon Feb 10 22:59:13 2014 +0200
+++ b/network.h	Thu May 08 16:14:09 2014 +0300
@@ -81,6 +81,7 @@
         int type;
         int port;
         struct in_addr addr;
+        char *userid;
     } proxy;
 
     char *host;
@@ -112,7 +113,7 @@
     void (*errfunc)(nn_conn_t *conn, const char *msg),
     void (*msgfunc)(nn_conn_t *conn, const char *msg));
 
-int         nn_conn_set_proxy(nn_conn_t *conn, int type, int port, const char *host);
+int         nn_conn_set_proxy(nn_conn_t *conn, int type, int port, const char *host, const char *userid);
 int         nn_conn_open(nn_conn_t *conn, const int port, const char *host);
 void        nn_conn_close(nn_conn_t *);
 void        nn_conn_reset(nn_conn_t *);