- Fix recvfrom() error, properly obtaining the public IP address now.
git-svn-id: svn://svn.geekisp.com/bleep/trunk/PmpMyApp@51 a256dd88-e320-0410-9161-d397f098afaa
This commit is contained in:
parent
b6c50723f3
commit
8c0996c881
|
@ -320,7 +320,7 @@
|
|||
<key>_historyCapacity</key>
|
||||
<integer>0</integer>
|
||||
<key>bookmark</key>
|
||||
<string>2F9021570B7BE0FB004FF42C</string>
|
||||
<string>2F18D5670B7C4F3B00149D44</string>
|
||||
<key>history</key>
|
||||
<array>
|
||||
<string>2F5A489C0B7565AE0052B0C1</string>
|
||||
|
@ -329,7 +329,7 @@
|
|||
<string>2F901EF70B7AEED5004FF42C</string>
|
||||
<string>2F9021510B7BE0FB004FF42C</string>
|
||||
<string>2F9021520B7BE0FB004FF42C</string>
|
||||
<string>2F9021530B7BE0FB004FF42C</string>
|
||||
<string>2F9021760B7C1179004FF42C</string>
|
||||
</array>
|
||||
<key>prevStack</key>
|
||||
<array>
|
||||
|
@ -340,9 +340,6 @@
|
|||
<string>2F901EC50B7AED84004FF42C</string>
|
||||
<string>2F901ED80B7AEDBC004FF42C</string>
|
||||
<string>2F901EE10B7AEE09004FF42C</string>
|
||||
<string>2F9021540B7BE0FB004FF42C</string>
|
||||
<string>2F9021550B7BE0FB004FF42C</string>
|
||||
<string>2F9021560B7BE0FB004FF42C</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>SplitCount</key>
|
||||
|
@ -400,9 +397,9 @@
|
|||
</array>
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>2F9021480B7BD19C004FF42C</string>
|
||||
<string>2F18D5540B7C4C1900149D44</string>
|
||||
<string>1CE0B1FE06471DED0097A5F4</string>
|
||||
<string>2F9021490B7BD19C004FF42C</string>
|
||||
<string>2F18D5550B7C4C1900149D44</string>
|
||||
<string>1CE0B20306471E060097A5F4</string>
|
||||
<string>1CE0B20506471E060097A5F4</string>
|
||||
</array>
|
||||
|
@ -536,8 +533,8 @@
|
|||
<integer>5</integer>
|
||||
<key>WindowOrderList</key>
|
||||
<array>
|
||||
<string>/Software/Subversion/trunk/PmpMyApp/PmpMyApp.xcodeproj</string>
|
||||
<string>2F5A48970B7565A60052B0C1</string>
|
||||
<string>/Software/Subversion/trunk/PmpMyApp/PmpMyApp.xcodeproj</string>
|
||||
<string>1C0AD2B3069F1EA900FABCE6</string>
|
||||
</array>
|
||||
<key>WindowString</key>
|
||||
|
@ -579,12 +576,10 @@
|
|||
<string>0pt</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>BecomeActive</key>
|
||||
<true/>
|
||||
<key>ContentConfiguration</key>
|
||||
<dict>
|
||||
<key>PBXBuildLogShowsTranscriptDefaultKey</key>
|
||||
<string>{{0, 118}, {620, 352}}</string>
|
||||
<string>{{0, 36}, {620, 434}}</string>
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>XCMainBuildResultsModuleGUID</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
|
@ -622,7 +617,7 @@
|
|||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>2F5A48970B7565A60052B0C1</string>
|
||||
<string>2F9021580B7BE0FB004FF42C</string>
|
||||
<string>2F18D55F0B7C4E5500149D44</string>
|
||||
<string>1CD0528F0623707200166675</string>
|
||||
<string>XCMainBuildResultsModuleGUID</string>
|
||||
</array>
|
||||
|
@ -633,7 +628,7 @@
|
|||
<key>WindowToolGUID</key>
|
||||
<string>2F5A48970B7565A60052B0C1</string>
|
||||
<key>WindowToolIsVisible</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FirstTimeWindowDisplayed</key>
|
||||
|
@ -992,9 +987,9 @@
|
|||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>1C0AD2B3069F1EA900FABCE6</string>
|
||||
<string>2F90214A0B7BD19C004FF42C</string>
|
||||
<string>2F18D5560B7C4C1900149D44</string>
|
||||
<string>1CD0528B0623707200166675</string>
|
||||
<string>2F90214B0B7BD19C004FF42C</string>
|
||||
<string>2F18D5570B7C4C1900149D44</string>
|
||||
</array>
|
||||
<key>ToolbarConfiguration</key>
|
||||
<string>xcode.toolbar.config.run</string>
|
||||
|
|
|
@ -67,10 +67,14 @@
|
|||
PBXFileDataSource_Warnings_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 192663959;
|
||||
PBXWorkspaceStateSaveDate = 192663959;
|
||||
PBXPerProjectTemplateStateSaveDate = 192695317;
|
||||
PBXWorkspaceStateSaveDate = 192695317;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
2F18D5530B7C4C1900149D44 /* PBXTextBookmark */ = 2F18D5530B7C4C1900149D44 /* PBXTextBookmark */;
|
||||
2F18D55E0B7C4E5500149D44 /* PBXTextBookmark */ = 2F18D55E0B7C4E5500149D44 /* PBXTextBookmark */;
|
||||
2F18D5640B7C4E9B00149D44 /* PBXTextBookmark */ = 2F18D5640B7C4E9B00149D44 /* PBXTextBookmark */;
|
||||
2F18D5670B7C4F3B00149D44 /* PBXTextBookmark */ = 2F18D5670B7C4F3B00149D44 /* PBXTextBookmark */;
|
||||
2F5A489C0B7565AE0052B0C1 = 2F5A489C0B7565AE0052B0C1 /* PBXTextBookmark */;
|
||||
2F5A489D0B7565AE0052B0C1 = 2F5A489D0B7565AE0052B0C1 /* PBXTextBookmark */;
|
||||
2F5A48A00B7565AE0052B0C1 = 2F5A48A00B7565AE0052B0C1 /* PBXTextBookmark */;
|
||||
|
@ -82,30 +86,58 @@
|
|||
2F901ED80B7AEDBC004FF42C = 2F901ED80B7AEDBC004FF42C /* PBXTextBookmark */;
|
||||
2F901EE10B7AEE09004FF42C = 2F901EE10B7AEE09004FF42C /* PBXTextBookmark */;
|
||||
2F901EF70B7AEED5004FF42C = 2F901EF70B7AEED5004FF42C /* PBXTextBookmark */;
|
||||
2F9020F40B7BC77F004FF42C = 2F9020F40B7BC77F004FF42C /* PBXTextBookmark */;
|
||||
2F9020F50B7BC77F004FF42C = 2F9020F50B7BC77F004FF42C /* PBXTextBookmark */;
|
||||
2F9020F60B7BC77F004FF42C = 2F9020F60B7BC77F004FF42C /* PBXTextBookmark */;
|
||||
2F9021260B7BCD94004FF42C = 2F9021260B7BCD94004FF42C /* PBXTextBookmark */;
|
||||
2F9021280B7BCD94004FF42C = 2F9021280B7BCD94004FF42C /* PBXTextBookmark */;
|
||||
2F9021290B7BCD94004FF42C = 2F9021290B7BCD94004FF42C /* PBXTextBookmark */;
|
||||
2F90213A0B7BCF9E004FF42C = 2F90213A0B7BCF9E004FF42C /* PBXTextBookmark */;
|
||||
2F90213B0B7BCF9E004FF42C = 2F90213B0B7BCF9E004FF42C /* PBXTextBookmark */;
|
||||
2F90213C0B7BCF9E004FF42C = 2F90213C0B7BCF9E004FF42C /* PBXTextBookmark */;
|
||||
2F90213D0B7BCF9E004FF42C = 2F90213D0B7BCF9E004FF42C /* PBXTextBookmark */;
|
||||
2F9021410B7BD05A004FF42C = 2F9021410B7BD05A004FF42C /* PBXTextBookmark */;
|
||||
2F9021470B7BD19C004FF42C /* PBXTextBookmark */ = 2F9021470B7BD19C004FF42C /* PBXTextBookmark */;
|
||||
2F9021510B7BE0FB004FF42C /* PBXTextBookmark */ = 2F9021510B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021520B7BE0FB004FF42C /* PBXTextBookmark */ = 2F9021520B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021530B7BE0FB004FF42C /* PBXTextBookmark */ = 2F9021530B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021540B7BE0FB004FF42C /* PBXTextBookmark */ = 2F9021540B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021550B7BE0FB004FF42C /* PBXTextBookmark */ = 2F9021550B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021560B7BE0FB004FF42C /* PBXTextBookmark */ = 2F9021560B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021570B7BE0FB004FF42C /* PBXTextBookmark */ = 2F9021570B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021510B7BE0FB004FF42C = 2F9021510B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021520B7BE0FB004FF42C = 2F9021520B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021530B7BE0FB004FF42C = 2F9021530B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021540B7BE0FB004FF42C = 2F9021540B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021550B7BE0FB004FF42C = 2F9021550B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021560B7BE0FB004FF42C = 2F9021560B7BE0FB004FF42C /* PBXTextBookmark */;
|
||||
2F9021760B7C1179004FF42C = 2F9021760B7C1179004FF42C /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 2F5A48590B75586F0052B0C1 /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
2F18D5530B7C4C1900149D44 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: pmp_get_public";
|
||||
rLen = 0;
|
||||
rLoc = 1111;
|
||||
rType = 0;
|
||||
vrLen = 1697;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F18D55E0B7C4E5500149D44 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 99";
|
||||
rLen = 0;
|
||||
rLoc = 2552;
|
||||
rType = 0;
|
||||
vrLen = 1858;
|
||||
vrLoc = 2111;
|
||||
};
|
||||
2F18D5640B7C4E9B00149D44 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 105";
|
||||
rLen = 0;
|
||||
rLoc = 3086;
|
||||
rType = 0;
|
||||
vrLen = 1881;
|
||||
vrLoc = 1769;
|
||||
};
|
||||
2F18D5670B7C4F3B00149D44 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: sendfd";
|
||||
rLen = 0;
|
||||
rLoc = 1118;
|
||||
rType = 0;
|
||||
vrLen = 1551;
|
||||
vrLoc = 2316;
|
||||
};
|
||||
2F5A484B0B7558670052B0C1 /* PmpMyApp */ = {
|
||||
isa = PBXExecutable;
|
||||
activeArgIndex = 2147483647;
|
||||
|
@ -151,9 +183,9 @@
|
|||
};
|
||||
2F5A48710B75598F0052B0C1 /* pmpmapper.c */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {817, 2212}}";
|
||||
sepNavSelRange = "{1491, 0}";
|
||||
sepNavVisRect = "{{0, 6}, {817, 846}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {817, 2128}}";
|
||||
sepNavSelRange = "{1118, 0}";
|
||||
sepNavVisRect = "{{0, 1107}, {817, 846}}";
|
||||
};
|
||||
};
|
||||
2F5A48890B7565810052B0C1 /* PMPMapper */ = {
|
||||
|
@ -251,7 +283,7 @@
|
|||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "PMPMapper.c: 29";
|
||||
rLen = 0;
|
||||
rLoc = 4016;
|
||||
rLoc = 3670;
|
||||
rType = 0;
|
||||
vrLen = 951;
|
||||
vrLoc = 0;
|
||||
|
@ -334,126 +366,6 @@
|
|||
vrLen = 452;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F9020F40B7BC77F004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
|
||||
name = "route.c: 12";
|
||||
rLen = 0;
|
||||
rLoc = 157;
|
||||
rType = 0;
|
||||
vrLen = 1279;
|
||||
vrLoc = 1019;
|
||||
};
|
||||
2F9020F50B7BC77F004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 35";
|
||||
rLen = 0;
|
||||
rLoc = 1382;
|
||||
rType = 0;
|
||||
vrLen = 1851;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F9020F60B7BC77F004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48700B75598F0052B0C1 /* pmpmapper.h */;
|
||||
name = "pmpmapper.h: 30";
|
||||
rLen = 0;
|
||||
rLoc = 529;
|
||||
rType = 0;
|
||||
vrLen = 867;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F9021260B7BCD94004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48700B75598F0052B0C1 /* pmpmapper.h */;
|
||||
name = "pmpmapper.h: PMP_TIMEOUT";
|
||||
rLen = 0;
|
||||
rLoc = 529;
|
||||
rType = 0;
|
||||
vrLen = 867;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F9021280B7BCD94004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 53";
|
||||
rLen = 0;
|
||||
rLoc = 1491;
|
||||
rType = 0;
|
||||
vrLen = 2132;
|
||||
vrLoc = 929;
|
||||
};
|
||||
2F9021290B7BCD94004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48700B75598F0052B0C1 /* pmpmapper.h */;
|
||||
name = "pmpmapper.h: PMP_TIMEOUT";
|
||||
rLen = 0;
|
||||
rLoc = 529;
|
||||
rType = 0;
|
||||
vrLen = 867;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F90213A0B7BCF9E004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
|
||||
name = "route.c: 12";
|
||||
rLen = 0;
|
||||
rLoc = 157;
|
||||
rType = 0;
|
||||
vrLen = 1228;
|
||||
vrLoc = 1272;
|
||||
};
|
||||
2F90213B0B7BCF9E004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 50";
|
||||
rLen = 0;
|
||||
rLoc = 1390;
|
||||
rType = 0;
|
||||
vrLen = 1337;
|
||||
vrLoc = 3052;
|
||||
};
|
||||
2F90213C0B7BCF9E004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 50";
|
||||
rLen = 0;
|
||||
rLoc = 1390;
|
||||
rType = 0;
|
||||
vrLen = 1337;
|
||||
vrLoc = 3052;
|
||||
};
|
||||
2F90213D0B7BCF9E004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
|
||||
name = "route.c: 12";
|
||||
rLen = 0;
|
||||
rLoc = 157;
|
||||
rType = 0;
|
||||
vrLen = 1228;
|
||||
vrLoc = 1272;
|
||||
};
|
||||
2F9021410B7BD05A004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: printf";
|
||||
rLen = 0;
|
||||
rLoc = 4330;
|
||||
rType = 0;
|
||||
vrLen = 1766;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F9021470B7BD19C004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 18";
|
||||
rLen = 0;
|
||||
rLoc = 425;
|
||||
rType = 0;
|
||||
vrLen = 1766;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F9021510B7BE0FB004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
|
||||
|
@ -479,7 +391,7 @@
|
|||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = r;
|
||||
rLen = 1;
|
||||
rLoc = 2055;
|
||||
rLoc = 1682;
|
||||
rType = 0;
|
||||
vrLen = 2025;
|
||||
vrLoc = 1394;
|
||||
|
@ -489,7 +401,7 @@
|
|||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = r;
|
||||
rLen = 1;
|
||||
rLoc = 2055;
|
||||
rLoc = 1682;
|
||||
rType = 0;
|
||||
vrLen = 2025;
|
||||
vrLoc = 1394;
|
||||
|
@ -514,15 +426,15 @@
|
|||
vrLen = 867;
|
||||
vrLoc = 0;
|
||||
};
|
||||
2F9021570B7BE0FB004FF42C /* PBXTextBookmark */ = {
|
||||
2F9021760B7C1179004FF42C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
|
||||
name = "pmpmapper.c: 53";
|
||||
name = "pmpmapper.c: pmp_get_public";
|
||||
rLen = 0;
|
||||
rLoc = 1491;
|
||||
rLoc = 1111;
|
||||
rType = 0;
|
||||
vrLen = 1780;
|
||||
vrLoc = 0;
|
||||
vrLen = 1841;
|
||||
vrLoc = 163;
|
||||
};
|
||||
8D1107260486CEB800E47090 /* PmpMyApp */ = {
|
||||
activeExec = 0;
|
||||
|
|
|
@ -35,25 +35,25 @@ static void double_timeout(struct timeval *to)
|
|||
*/
|
||||
struct sockaddr_in *pmp_get_public(struct sockaddr_in *gateway)
|
||||
{
|
||||
int recvfd, sendfd;
|
||||
if (gateway == NULL)
|
||||
{
|
||||
fprintf(stderr, "Cannot request public IP from a NULL gateway!\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int sendfd;
|
||||
int req_attempts = 1;
|
||||
struct timeval req_timeout;
|
||||
pmp_ip_request_t req;
|
||||
pmp_ip_response_t resp;
|
||||
struct sockaddr_in *recvsockaddr = (struct sockaddr_in *)(malloc(sizeof(struct sockaddr)));
|
||||
struct sockaddr_in *publicsockaddr = NULL;
|
||||
|
||||
req_timeout.tv_sec = 0;
|
||||
req_timeout.tv_usec = PMP_TIMEOUT;
|
||||
|
||||
recvsockaddr->sin_family = AF_INET;
|
||||
recvsockaddr->sin_port = htons(PMP_PORT);
|
||||
recvsockaddr->sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
|
||||
gateway->sin_port = htons(PMP_PORT); // Default port for NAT-PMP is 5351
|
||||
|
||||
sendfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
recvfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
|
||||
// Clean out both req and resp structures
|
||||
bzero(&req, sizeof(pmp_ip_request_t));
|
||||
|
@ -61,13 +61,6 @@ struct sockaddr_in *pmp_get_public(struct sockaddr_in *gateway)
|
|||
req.version = 0;
|
||||
req.opcode = 0;
|
||||
|
||||
|
||||
if (bind(recvfd, (struct sockaddr *)(recvsockaddr), sizeof(struct sockaddr_in)) < 0)
|
||||
{
|
||||
fprintf(stderr, "Failed to bind properly to UDP:%d (%s)\n", PMP_PORT, strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Attempt to contact NAT-PMP device 9 times as per: draft-cheshire-nat-pmp-02.txt
|
||||
while (req_attempts < 10)
|
||||
{
|
||||
|
@ -84,13 +77,13 @@ struct sockaddr_in *pmp_get_public(struct sockaddr_in *gateway)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (setsockopt(recvfd, SOL_SOCKET, SO_RCVTIMEO, &req_timeout, sizeof(req_timeout)) < 0)
|
||||
if (setsockopt(sendfd, SOL_SOCKET, SO_RCVTIMEO, &req_timeout, sizeof(req_timeout)) < 0)
|
||||
{
|
||||
fprintf(stderr, "There was an error setting the socket's options! (%s)\n", strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (recvfrom(recvfd, &resp, sizeof(pmp_ip_response_t), 0, (struct sockaddr *)(&addr), &len) < 0)
|
||||
if (recvfrom(sendfd, &resp, sizeof(pmp_ip_response_t), 0, (struct sockaddr *)(&addr), &len) < 0)
|
||||
{
|
||||
if ( (errno != EAGAIN) || (req_attempts == 9) )
|
||||
{
|
||||
|
@ -109,6 +102,7 @@ struct sockaddr_in *pmp_get_public(struct sockaddr_in *gateway)
|
|||
}
|
||||
else
|
||||
{
|
||||
publicsockaddr = &addr;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue