]> granicus.if.org Git - curl/commitdiff
fixed accept() for memory debugging
authorDaniel Stenberg <daniel@haxx.se>
Mon, 18 Dec 2000 16:13:37 +0000 (16:13 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 18 Dec 2000 16:13:37 +0000 (16:13 +0000)
lib/ftp.c
lib/memdebug.c
lib/memdebug.h
memanalyze.pl

index 705d090c88ac77f0d02e3a43529e7d5292e42f3e..93f1d30481940c72995e5f9d0b2821d7605265aa 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -197,6 +197,8 @@ static CURLcode AllowServerConnect(struct UrlData *data,
       getsockname(sock, (struct sockaddr *) &add, (int *)&size);
       s=accept(sock, (struct sockaddr *) &add, (int *)&size);
 
+      sclose(sock); /* close the first socket */
+
       if( -1 == s) {
        /* DIE! */
        failf(data, "Error accept()ing server connect");
index cbd860ec1c71e8e13db24fc2b31e7e21d723117f..1bd945e0d3236a7f6606e6f1bf8aebbc727c7398 100644 (file)
@@ -133,6 +133,15 @@ int curl_socket(int domain, int type, int protocol, int line, char *source)
   return sockfd;
 }
 
+int curl_accept(int s, struct sockaddr *addr, int *addrlen,
+                int line, char *source)
+{
+  int sockfd=(accept)(s, addr, addrlen);
+  fprintf(logfile?logfile:stderr, "FD %s:%d accept() = %d\n",
+          source, line, sockfd);
+  return sockfd;
+}
+
 /* this is our own defined way to close sockets on *ALL* platforms */
 int curl_sclose(int sockfd, int line, char *source)
 {
index 21330a0b27a29a04468be534576069ba35b09b42..86271b5b2a6ef948ea9432ec244184340093a43a 100644 (file)
@@ -9,6 +9,8 @@ void curl_memdebug(char *logname);
 /* file descriptor manipulators */
 int curl_socket(int domain, int type, int protocol, int, char *);
 int curl_sclose(int sockfd, int, char *);
+int curl_accept(int s, struct sockaddr *addr, int *addrlen,
+                int line, char *source);
 
 /* Set this symbol on the command-line, recompile all lib-sources */
 #define strdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__)
@@ -18,6 +20,8 @@ int curl_sclose(int sockfd, int, char *);
 
 #define socket(domain,type,protocol)\
  curl_socket(domain,type,protocol,__LINE__,__FILE__)
+#define accept(sock,addr,len)\
+ curl_accept(sock,addr,len,__LINE__,__FILE__)
 
 /* sclose is probably already defined, redefine it! */
 #undef sclose
index 48fff8f27b837dd06ef1dfe06640bb57a84b8a19..aa8dddb13f2cac255420d218eca2930a4b6addbf 100755 (executable)
@@ -84,6 +84,11 @@ while(<STDIN>) {
             $getfile{$1}="$source:$linenum";
             $openfile++;
         }
+        elsif($function =~ /accept\(\) = (\d*)/) {
+            $filedes{$1}=1;
+            $getfile{$1}="$source:$linenum";
+            $openfile++;
+        }
         elsif($function =~ /sclose\((\d*)\)/) {
             if($filedes{$1} != 1) {
                 print "Close without open: $line\n";