1,105,380 Community Members

Issue with <policy-file-request/> C++

Member Avatar
carlpike
Newbie Poster
3 posts since Sep 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Hello everyone. I am having an issue with flash style connection

So I start off by connecting to port 843 and requesting a
<policy-file-request/>

The server sends me this:

<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-… />
<allow-access-from domain="*website.com" secure="false" />
<allow-access-from domain="*website.com" to-ports="443-49151"/>
</cross-domain-policy>

Since it is non secure, I try to connect to port 443 via connect. However, my connection attempt is declined. What do I do to make it accepted?

Here is what I am doing

Init Winsock
Connect to server port 843
Request policy File
Receive Policy file
Connect to server port 443... declined.

Shouldn't the server accept me as it is non secure and I have received a policy file? I am confused

Here is my sloppy code:

#include <winsock2.h>
#include <windows.h>
#include <stdio.h>

int main()
{
    WSADATA wsaData;

    if( WSAStartup(MAKEWORD(1, 1), &wsaData) != 0 )
    {
        WSACleanup();
        return 1;
    }

    LPHOSTENT hostEntry = gethostbyname("www.mywebsite.com");
    if( !hostEntry )
    {
        WSACleanup();
        return 2;
    }

    SOCKET theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if( theSocket == INVALID_SOCKET )
    {
        return 3;
    }

    SOCKADDR_IN sin;
    sin.sin_family = AF_INET;
    sin.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
    sin.sin_port = htons(843);

    if( connect(theSocket, (LPSOCKADDR)&sin, sizeof(struct sockaddr)) == SOCKET_ERROR )
    {
        WSACleanup();
        return 4;
    }

    printf("Connected on port 843\n");

    char buffer[256] = "";
    char policyrequest[] = "<policy-file-request/>\0";
    if( send(theSocket, policyrequest, 23, 0) == 23 )
    {
        if( recv(theSocket, buffer, 256, 0) > 0 )
        {
            printf("CLIENT: %s\nSERVER: %s\n", policyrequest, buffer);
            SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
            if( sock == INVALID_SOCKET ) { WSACleanup; return 99; }
            sin.sin_port = htons(443);
            closesocket(theSocket);
            if( connect(sock, (LPSOCKADDR)&sin, sizeof(struct sockaddr)) == SOCKET_ERROR )
            {
                printf("%d\n", WSAGetLastError());
                WSACleanup();
                return 100;
            }
        }
    }

    closesocket(theSocket);
    WSACleanup();
    return 0;
}
Member Avatar
cherrymae.calma
Light Poster
33 posts since Aug 2011
Reputation Points: -2 [?]
Q&As Helped to Solve: 3 [?]
Skill Endorsements: 0 [?]
 
0
 

i try to run your code to C++ and show some following errors


Linking...
website.obj : error LNK2001: unresolved external symbol __imp__WSAGetLastError@0
website.obj : error LNK2001: unresolved external symbol __imp__closesocket@4
website.obj : error LNK2001: unresolved external symbol __imp__recv@16
website.obj : error LNK2001: unresolved external symbol __imp__send@16
website.obj : error LNK2001: unresolved external symbol __imp__connect@12
website.obj : error LNK2001: unresolved external symbol __imp__htons@4
website.obj : error LNK2001: unresolved external symbol __imp__socket@12
website.obj : error LNK2001: unresolved external symbol __imp__gethostbyname@4
website.obj : error LNK2001: unresolved external symbol __imp__WSACleanup@0
website.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
Debug/website.exe : fatal error LNK1120: 10 unresolved externals
Error executing link.exe.

website.exe - 11 error(s), 0 warning(s)

You
This article has been dead for over three months: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: