From 91c66274c9394cfe2f760a548e02ca5de915738c Mon Sep 17 00:00:00 2001
From: usamir <usamir@gmail.com>
Date: Sun, 31 Jul 2016 12:11:14 +0200
Subject: [PATCH 1/4] remove duplicate

---
 iguana/make_win64 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/iguana/make_win64 b/iguana/make_win64
index fefdc912b..a279311bb 100644
--- a/iguana/make_win64
+++ b/iguana/make_win64
@@ -1,7 +1,7 @@
 include iguana.sources
 include ../mingw.path64
 
-LIBS := ../OSlibs/win/libsecp256k1.a ../OSlibs/win/libcrypto.a ../OSlibs/win/libssl.a ../agents/win64/libcrypto777.a ../OSlibs/win/libcurldll.a $(TOOL_DIR)/x86_64-w64-mingw32/lib/libws2_32.a  $(TOOL_DIR)/x86_64-w64-mingw32/lib/libgdi32.a -I$(TOOL_DIR)/include -I../iguana -I../includes -I../crypto777 -I../OSlibs/win -I../OSlibs/win -L../OSlibs/win/x64 -lpthreadGC2
+LIBS := ../OSlibs/win/libsecp256k1.a ../OSlibs/win/libcrypto.a ../OSlibs/win/libssl.a ../agents/win64/libcrypto777.a ../OSlibs/win/libcurldll.a $(TOOL_DIR)/x86_64-w64-mingw32/lib/libws2_32.a  $(TOOL_DIR)/x86_64-w64-mingw32/lib/libgdi32.a -I$(TOOL_DIR)/include -I../iguana -I../includes -I../crypto777 -I../OSlibs/win -L../OSlibs/win/x64 -lpthreadGC2
 include mingw64_inc
 
 

From 5779348adb2ada54cb7502e82ad2866dc6f78b6f Mon Sep 17 00:00:00 2001
From: usamir <usamir@gmail.com>
Date: Sun, 31 Jul 2016 14:07:09 +0200
Subject: [PATCH 2/4] tracking iguana issue on windows

---
 iguana/iguana_rpc.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/iguana/iguana_rpc.c b/iguana/iguana_rpc.c
index c73242bbc..ab6fac12e 100755
--- a/iguana/iguana_rpc.c
+++ b/iguana/iguana_rpc.c
@@ -1082,11 +1082,11 @@ void iguana_rpcloop(void *args)
     while ( bindsock >= 0 )
     {
         clilen = sizeof(cli_addr);
-        //printf("ACCEPT (%s:%d) on sock.%d\n","127.0.0.1",port,bindsock);
+        printf("ACCEPT (%s:%d) on sock.%d\n","127.0.0.1",port,bindsock);
         sock = accept(bindsock,(struct sockaddr *)&cli_addr,&clilen);
         if ( sock < 0 )
         {
-            //printf("iguana_rpcloop ERROR on accept usock.%d\n",sock);
+            printf("iguana_rpcloop ERROR on accept usock.%d\n",sock);
             continue;
         }
         memcpy(&ipbits,&cli_addr.sin_addr.s_addr,sizeof(ipbits));
@@ -1098,7 +1098,7 @@ void iguana_rpcloop(void *args)
         retstr = 0;
         while ( remains > 0 )
         {
-            //printf("flag.%d remains.%d recvlen.%d\n",flag,remains,recvlen);
+            printf("flag.%d remains.%d recvlen.%d\n",flag,remains,recvlen);
             if ( (len= (int32_t)recv(sock,buf,remains,0)) < 0 )
             {
                 if ( errno == EAGAIN )
@@ -1125,7 +1125,7 @@ void iguana_rpcloop(void *args)
                                     remains = (hdrsize + contentlen) - len;
                                     buf = &buf[len];
                                     flag = 1;
-                                    //printf("got.(%s) %d remains.%d of len.%d contentlen.%d hdrsize.%d remains.%d\n",buf,recvlen,remains,len,contentlen,hdrsize,(hdrsize+contentlen)-len);
+                                    printf("got.(%s) %d remains.%d of len.%d contentlen.%d hdrsize.%d remains.%d\n",buf,recvlen,remains,len,contentlen,hdrsize,(hdrsize+contentlen)-len);
                                     continue;
                                 }
                             }
@@ -1140,7 +1140,7 @@ void iguana_rpcloop(void *args)
                 else
                 {
                     usleep(10000);
-                //printf("got.(%s) %d remains.%d of total.%d\n",jsonbuf,recvlen,remains,len);
+                    printf("got.(%s) %d remains.%d of total.%d\n",jsonbuf,recvlen,remains,len);
                 //retstr = iguana_rpcparse(space,size,&postflag,jsonbuf);
                     if ( flag == 0 )
                         break;
@@ -1165,7 +1165,7 @@ void iguana_rpcloop(void *args)
                     if ( (typestr= jstr(mimejson,filetype)) != 0 )
                         sprintf(content_type,"Content-Type: %s\r\n",typestr);
                 } else printf("parse error.(%s)\n",tmp);
-                //printf("filetype.(%s) json.%p type.%p tmp.%p [%s]\n",filetype,mimejson,typestr,tmp,content_type);
+                printf("filetype.(%s) json.%p type.%p tmp.%p [%s]\n",filetype,mimejson,typestr,tmp,content_type);
             }
         }
         if ( retstr != 0 )
@@ -1191,6 +1191,7 @@ void iguana_rpcloop(void *args)
                 {
                     if ( errno != EAGAIN && errno != EWOULDBLOCK )
                     {
+                        printf("got error! errno.%d (%s)\n", errno, strerror(errno) );
                         //printf("%s: %s numsent.%d vs remains.%d len.%d errno.%d (%s) usock.%d\n",retstr,ipaddr,numsent,remains,recvlen,errno,strerror(errno),sock);
                         break;
                     }
@@ -1206,6 +1207,7 @@ void iguana_rpcloop(void *args)
             if ( retstr != space)
                 free(retstr);
         }
+        printf("close socket\n");
         closesocket(sock);
     }
 }

From bacd93f06af0370fed0b498e5ec0ddf9c9eb2ac2 Mon Sep 17 00:00:00 2001
From: usamir <usamir@gmail.com>
Date: Mon, 1 Aug 2016 13:00:46 +0200
Subject: [PATCH 3/4] fix for iguana windows issue

---
 includes/iguana_defines.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/includes/iguana_defines.h b/includes/iguana_defines.h
index b5103d267..7167a4547 100755
--- a/includes/iguana_defines.h
+++ b/includes/iguana_defines.h
@@ -120,6 +120,10 @@ extern int32_t IGUANA_NUMHELPERS;
 #define MSG_NOSIGNAL	0x4000	// Do not generate SIGPIPE
 #endif
 
+#ifdef _WIN32 || _WIN64
+#define MSG_NOSIGNAL	0
+#endif
+
 #define BIP0031_VERSION	 60000
 #define CADDR_TIME_VERSION 31402
 #define MIN_PROTO_VERSION 209

From d9acde162730bd7591e64ebce03134dd9e1a6236 Mon Sep 17 00:00:00 2001
From: usamir <usamir@gmail.com>
Date: Mon, 1 Aug 2016 14:58:49 +0200
Subject: [PATCH 4/4] Revert "tracking iguana issue on windows"

This reverts commit 5779348adb2ada54cb7502e82ad2866dc6f78b6f.
---
 iguana/iguana_rpc.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/iguana/iguana_rpc.c b/iguana/iguana_rpc.c
index ab6fac12e..c73242bbc 100755
--- a/iguana/iguana_rpc.c
+++ b/iguana/iguana_rpc.c
@@ -1082,11 +1082,11 @@ void iguana_rpcloop(void *args)
     while ( bindsock >= 0 )
     {
         clilen = sizeof(cli_addr);
-        printf("ACCEPT (%s:%d) on sock.%d\n","127.0.0.1",port,bindsock);
+        //printf("ACCEPT (%s:%d) on sock.%d\n","127.0.0.1",port,bindsock);
         sock = accept(bindsock,(struct sockaddr *)&cli_addr,&clilen);
         if ( sock < 0 )
         {
-            printf("iguana_rpcloop ERROR on accept usock.%d\n",sock);
+            //printf("iguana_rpcloop ERROR on accept usock.%d\n",sock);
             continue;
         }
         memcpy(&ipbits,&cli_addr.sin_addr.s_addr,sizeof(ipbits));
@@ -1098,7 +1098,7 @@ void iguana_rpcloop(void *args)
         retstr = 0;
         while ( remains > 0 )
         {
-            printf("flag.%d remains.%d recvlen.%d\n",flag,remains,recvlen);
+            //printf("flag.%d remains.%d recvlen.%d\n",flag,remains,recvlen);
             if ( (len= (int32_t)recv(sock,buf,remains,0)) < 0 )
             {
                 if ( errno == EAGAIN )
@@ -1125,7 +1125,7 @@ void iguana_rpcloop(void *args)
                                     remains = (hdrsize + contentlen) - len;
                                     buf = &buf[len];
                                     flag = 1;
-                                    printf("got.(%s) %d remains.%d of len.%d contentlen.%d hdrsize.%d remains.%d\n",buf,recvlen,remains,len,contentlen,hdrsize,(hdrsize+contentlen)-len);
+                                    //printf("got.(%s) %d remains.%d of len.%d contentlen.%d hdrsize.%d remains.%d\n",buf,recvlen,remains,len,contentlen,hdrsize,(hdrsize+contentlen)-len);
                                     continue;
                                 }
                             }
@@ -1140,7 +1140,7 @@ void iguana_rpcloop(void *args)
                 else
                 {
                     usleep(10000);
-                    printf("got.(%s) %d remains.%d of total.%d\n",jsonbuf,recvlen,remains,len);
+                //printf("got.(%s) %d remains.%d of total.%d\n",jsonbuf,recvlen,remains,len);
                 //retstr = iguana_rpcparse(space,size,&postflag,jsonbuf);
                     if ( flag == 0 )
                         break;
@@ -1165,7 +1165,7 @@ void iguana_rpcloop(void *args)
                     if ( (typestr= jstr(mimejson,filetype)) != 0 )
                         sprintf(content_type,"Content-Type: %s\r\n",typestr);
                 } else printf("parse error.(%s)\n",tmp);
-                printf("filetype.(%s) json.%p type.%p tmp.%p [%s]\n",filetype,mimejson,typestr,tmp,content_type);
+                //printf("filetype.(%s) json.%p type.%p tmp.%p [%s]\n",filetype,mimejson,typestr,tmp,content_type);
             }
         }
         if ( retstr != 0 )
@@ -1191,7 +1191,6 @@ void iguana_rpcloop(void *args)
                 {
                     if ( errno != EAGAIN && errno != EWOULDBLOCK )
                     {
-                        printf("got error! errno.%d (%s)\n", errno, strerror(errno) );
                         //printf("%s: %s numsent.%d vs remains.%d len.%d errno.%d (%s) usock.%d\n",retstr,ipaddr,numsent,remains,recvlen,errno,strerror(errno),sock);
                         break;
                     }
@@ -1207,7 +1206,6 @@ void iguana_rpcloop(void *args)
             if ( retstr != space)
                 free(retstr);
         }
-        printf("close socket\n");
         closesocket(sock);
     }
 }