Lines 78-90
Link Here
|
78 |
RETVAL = newSVpv((char *)&conn->remote_addr, |
78 |
RETVAL = newSVpv((char *)&conn->remote_addr, |
79 |
sizeof conn->remote_addr); |
79 |
sizeof conn->remote_addr); |
80 |
if(sv_addr) { |
80 |
if(sv_addr) { |
81 |
struct sockaddr_in addr; |
81 |
struct sockaddr_storage addr; |
82 |
STRLEN sockaddrlen; |
82 |
STRLEN sockaddrlen; |
83 |
char * new_addr = SvPV(sv_addr,sockaddrlen); |
83 |
char * new_addr = SvPV(sv_addr,sockaddrlen); |
84 |
if (sockaddrlen != sizeof(addr)) { |
84 |
if (sockaddrlen != sizeof(addr)) { |
85 |
croak("Bad arg length for remote_addr, length is %d, should be %d", sockaddrlen, sizeof(addr)); |
85 |
croak("Bad arg length for remote_addr, length is %d, should be %d", sockaddrlen, sizeof(addr)); |
86 |
} |
86 |
} |
87 |
Copy(new_addr, &addr, sizeof addr, char); |
87 |
memset(&addr, 0, sizeof addr); |
|
|
88 |
Copy(new_addr, &addr, sizeof new_addr, char); |
88 |
conn->remote_addr = addr; |
89 |
conn->remote_addr = addr; |
89 |
} |
90 |
} |
90 |
|
91 |
|
Lines 106-112
Link Here
|
106 |
#else |
107 |
#else |
107 |
conn->remote_ip = pstrdup(conn->pool, (char *)SvPV(ST(1),na)); |
108 |
conn->remote_ip = pstrdup(conn->pool, (char *)SvPV(ST(1),na)); |
108 |
#endif |
109 |
#endif |
109 |
conn->remote_addr.sin_addr.s_addr = inet_addr(conn->remote_ip); |
110 |
((struct sockaddr_in *) &conn->remote_addr)->sin_addr.s_addr = inet_addr(conn->remote_ip); |
110 |
} |
111 |
} |
111 |
|
112 |
|
112 |
OUTPUT: |
113 |
OUTPUT: |